RE: [PATCH V6 1/4] dmaengine: xilinx_dma: Fix MCDMA descriptor fields based on DMA direction

"Neeli, Srinivas" <[email protected]>
Newsgroups dev.linux.lists.sashiko-reviews,org.kernel.vger.dmaengine
Message-ID <SN7PR12MB8147B0266ACC8801A715D24393A42@SN7PR12MB8147.namprd12.prod.outlook.com>
AMD General

Hi,

> -----Original Message-----
> From: [email protected] <[email protected]>
> Sent: Wednesday, August 19, 2026 11:17 PM
> To: Neeli, Srinivas <[email protected]>
> Cc: [email protected]; [email protected]; [email protected]
> Subject: Re: [PATCH V6 1/4] dmaengine: xilinx_dma: Fix MCDMA descriptor
> fields based on DMA direction
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s)
> to consider:
>
> Pre-existing issues:
> - [High] xilinx_dma_tx_status ignores the requested cookie when reporting
> the residue.
> --
>
> --- Patch [1]: [PATCH V6 1/4] dmaengine: xilinx_dma: Fix MCDMA descriptor
> fields based on DMA direction --- commit
> 5b7fc319de466b2688413e1d7e8a139d9c3d5d82
> Author: Srinivas Neeli <[email protected]>
>
> dmaengine: xilinx_dma: Fix MCDMA descriptor fields based on DMA direction
>
> The MCDMA BD format differs between memory-to-device (MM2S) and
> device-to-memory (S2MM) directions. This commit refactors the descriptor
> structure to use unions with direction-specific field mappings and updates the
> residue calculation logic to select the correct status field.
>
> > diff --git a/drivers/dma/xilinx/xilinx_dma.c
> > b/drivers/dma/xilinx/xilinx_dma.c index 404235c173538..965fb69a2a3ad
> > 100644
> > --- a/drivers/dma/xilinx/xilinx_dma.c
> > +++ b/drivers/dma/xilinx/xilinx_dma.c
> [ ... ]
> > @@ -1013,9 +1023,11 @@ static u32 xilinx_dma_get_residue(struct
> xilinx_dma_chan *chan,
> >                                        struct xilinx_aximcdma_tx_segment,
> >                                        node);
> >                     aximcdma_hw = &aximcdma_seg->hw;
> > -                   residue +=
> > -                           (aximcdma_hw->control & chan->xdev-
> >max_buffer_len) -
> > -                           (aximcdma_hw->status & chan->xdev-
> >max_buffer_len);
> > +                   residue += aximcdma_hw->control & chan->xdev-
> >max_buffer_len;
> > +                   if (chan->direction == DMA_DEV_TO_MEM)
> > +                           residue -= aximcdma_hw->s2mm_status &
> chan->xdev->max_buffer_len;
> > +                   else
> > +                           residue -= aximcdma_hw->mm2s_status &
> chan->xdev->max_buffer_len;
> >             }
> >     }
>
> [Severity: High]
> This isn't a bug introduced by this patch, but does xilinx_dma_tx_status()
> ignore the requested cookie when reporting the residue?
>
> Looking at xilinx_dma_tx_status() in drivers/dma/xilinx/xilinx_dma.c, it seems
> to unconditionally compute and return the residue for the last entry in the
> active list:
>
>       desc = list_last_entry(&chan->active_list,
>                              struct xilinx_dma_tx_descriptor, node);
>       /*
>        * VDMA and simple mode do not support residue reporting, so the
>        * residue field will always be 0.
>        */
>       if (chan->has_sg && chan->xdev->dma_config->dmatype !=
> XDMA_TYPE_VDMA)
>               residue = xilinx_dma_get_residue(chan, desc);
>
> This means it will always report the residue of the most recently submitted
> transaction, rather than the transaction the caller asked about via the cookie.
>
> If a DMA client (e.g. a serial driver polling residue for partial Rx data) queues
> multiple non-cyclic scatter-gather DMA transactions on a Xilinx DMA channel,
> issues them, and then calls dmaengine_tx_status() to query the residue of an
> earlier transaction, it would get the remaining byte count of the last queued
> descriptor instead.
>
> Should this iterate through the active and pending lists to look up the
> descriptor associated with the requested cookie?
>

The issue pointed out is pre-existing and not introduced by this patch. I will address all pre-existing issues in a separate patch series.

Thanks
Srinivas Neeli

> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260818174151.1608971-
> [email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.