Re: [PATCH v3 6/9] dmaengine: dw-edma: Clear stale requests on termination
From: Frank Li
Date: Wed Jul 15 2026 - 15:01:38 EST
On Thu, Jul 16, 2026 at 02:57:37AM +0900, Koichiro Den wrote:
> terminate_all() can deconfigure a channel immediately when it is already
> unconfigured, paused, idle, or stopped in hardware. A pending PAUSE
> request can survive these paths and block issue_pending() after the
> channel is configured again.
>
> Clear request whenever termination leaves the channel deconfigured. A
> running channel remains configured while its STOP request is pending, so
> the interrupt handler can still consume that request.
>
> Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver")
> Signed-off-by: Koichiro Den <den@xxxxxxxxxxxxx>
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
> ---
> Changes in v3:
> - New patch for a pre-existing stale request issue. (Sashiko)
>
> drivers/dma/dw-edma/dw-edma-core.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c
> index 8b0e2af734da..2369b4c4630b 100644
> --- a/drivers/dma/dw-edma/dw-edma-core.c
> +++ b/drivers/dma/dw-edma/dw-edma-core.c
> @@ -369,6 +369,8 @@ static int dw_edma_device_terminate_all(struct dma_chan *dchan)
> } else {
> chan->request = EDMA_REQ_STOP;
> }
> + if (!chan->configured)
> + chan->request = EDMA_REQ_NONE;
> spin_unlock_irqrestore(&chan->vc.lock, flags);
>
> return err;
> --
> 2.51.0
>