dmaengine: stm32-mdma: use dev_dbg on non-busy channel spurious it
authorAmelie Delaunay <amelie.delaunay@foss.st.com>
Wed, 4 May 2022 15:53:22 +0000 (17:53 +0200)
committerVinod Koul <vkoul@kernel.org>
Thu, 19 May 2022 17:51:28 +0000 (23:21 +0530)
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>
drivers/dma/stm32-mdma.c

index a5cbfbb..caf0cce 100644 (file)
@@ -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;
        }