dmaengine: axi-dmac: Return IRQ_NONE if no IRQs are pending
authorLars-Peter Clausen <lars@metafoo.de>
Fri, 1 Jul 2016 15:45:58 +0000 (17:45 +0200)
committerVinod Koul <vinod.koul@intel.com>
Fri, 1 Jul 2016 17:26:41 +0000 (22:56 +0530)
Return IRQ_NONE in the interrupt handler when it is called but no IRQs are
pending. This allows the system to recover in case of an interrupt storm
e.g. due to a wrong interrupt configuration setup.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/dma-axi-dmac.c

index 0e0dfc0..7f0b9aa 100644 (file)
@@ -270,6 +270,9 @@ static irqreturn_t axi_dmac_interrupt_handler(int irq, void *devid)
        unsigned int pending;
 
        pending = axi_dmac_read(dmac, AXI_DMAC_REG_IRQ_PENDING);
+       if (!pending)
+               return IRQ_NONE;
+
        axi_dmac_write(dmac, AXI_DMAC_REG_IRQ_PENDING, pending);
 
        spin_lock(&dmac->chan.vchan.lock);