Re: [PATCH 3.18 48/54] dmaengine: cppi41: delete channel from pending list when stop channel
From: Bin Liu
Date: Wed Dec 12 2018 - 11:38:33 EST
Hi Greg,
On Tue, Dec 11, 2018 at 04:41:36PM +0100, Greg Kroah-Hartman wrote:
> 3.18-stable review patch. If anyone has any objections, please let me know.
Please drop this patch. It really should go back to v4.9 but not older.
The Fixes should instead be
fdea2d09b997 ("dmaengine: cppi41: Add basic PM runtime support")
I am sorry for the noise.
> ------------------
>
> From: Bin Liu <b-liu@xxxxxx>
>
> commit 59861547ec9a9736e7882f6fb0c096a720ff811a upstream.
>
> The driver defines three states for a cppi channel.
> - idle: .chan_busy == 0 && not in .pending list
> - pending: .chan_busy == 0 && in .pending list
> - busy: .chan_busy == 1 && not in .pending list
>
> There are cases in which the cppi channel could be in the pending state
> when cppi41_dma_issue_pending() is called after cppi41_runtime_suspend()
> is called.
>
> cppi41_stop_chan() has a bug for these cases to set channels to idle state.
> It only checks the .chan_busy flag, but not the .pending list, then later
> when cppi41_runtime_resume() is called the channels in .pending list will
> be transitioned to busy state.
>
> Removing channels from the .pending list solves the problem.
>
> Fixes: 975faaeb9985 ("dma: cppi41: start tear down only if channel is busy")
> Cc: stable@xxxxxxxxxxxxxxx # v3.15+
> Signed-off-by: Bin Liu <b-liu@xxxxxx>
> Reviewed-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx>
> Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Regards,
-Bin.