Skip to content

Commit 09f7b80

Browse files
saschahauervinodkoul
authored andcommitted
dmaengine: imx-sdma: only restart cyclic channel when enabled
An interrupt for a channel might be pending even after struct dma_device::device_terminate_all has been called. In that case the recently introduced warning message "restart cyclic channel..." triggers and the channel will be restarted. This is not desired as the channel has just been stopped. Only restart the channel when we still have a descriptor set for it (which will be set to NULL in sdma_terminate_all()). Fixes: 5b215c2 ("dmaengine: imx-sdma: restart cyclic channel if needed") Cc: stable@vger.kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.kernel.org/r/20220617115042.4004062-1-s.hauer@pengutronix.de Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 49db68d commit 09f7b80

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/dma/imx-sdma.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ static void sdma_update_channel_loop(struct sdma_channel *sdmac)
891891
* SDMA stops cyclic channel when DMA request triggers a channel and no SDMA
892892
* owned buffer is available (i.e. BD_DONE was set too late).
893893
*/
894-
if (!is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) {
894+
if (sdmac->desc && !is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) {
895895
dev_warn(sdmac->sdma->dev, "restart cyclic channel %d\n", sdmac->channel);
896896
sdma_enable_channel(sdmac->sdma, sdmac->channel);
897897
}

0 commit comments

Comments
 (0)