aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmelie Delaunay <amelie.delaunay@foss.st.com>2022-05-04 17:53:22 +0200
committerVinod Koul <vkoul@kernel.org>2022-05-19 23:21:28 +0530
commit2763826966808800beeda5db406b3b704edc8137 (patch)
tree1df4079cfe6ea2bba58434244bc65bc79398cec7
parentdmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler() (diff)
downloadlinux-dev-2763826966808800beeda5db406b3b704edc8137.tar.xz
linux-dev-2763826966808800beeda5db406b3b704edc8137.zip
dmaengine: stm32-mdma: use dev_dbg on non-busy channel spurious it
If interrupt occurs while !chan->busy, it means channel has been disabled between the raise of the interruption and the read of status and ien, so, spurious interrupt can be silently discarded. Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com> Link: https://lore.kernel.org/r/20220504155322.121431-4-amelie.delaunay@foss.st.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r--drivers/dma/stm32-mdma.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/dma/stm32-mdma.c b/drivers/dma/stm32-mdma.c
index a5cbfbbb93d1..caf0cce8f528 100644
--- a/drivers/dma/stm32-mdma.c
+++ b/drivers/dma/stm32-mdma.c
@@ -1345,9 +1345,12 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
if (!(status & ien)) {
spin_unlock(&chan->vchan.lock);
- dev_warn(chan2dev(chan),
- "spurious it (status=0x%04x, ien=0x%04x)\n",
- status, ien);
+ if (chan->busy)
+ dev_warn(chan2dev(chan),
+ "spurious it (status=0x%04x, ien=0x%04x)\n", status, ien);
+ else
+ dev_dbg(chan2dev(chan),
+ "spurious it (status=0x%04x, ien=0x%04x)\n", status, ien);
return IRQ_NONE;
}