From: Lars-Peter Clausen Date: Fri, 1 Jul 2016 15:45:58 +0000 (+0200) Subject: dmaengine: axi-dmac: Return IRQ_NONE if no IRQs are pending X-Git-Tag: microblaze-4.10-rc1~699^2~17^2 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=71831f652968f05270ace83a0bfd607bfed20760;p=linux-2.6-microblaze.git dmaengine: axi-dmac: Return IRQ_NONE if no IRQs are pending 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 Signed-off-by: Vinod Koul --- diff --git a/drivers/dma/dma-axi-dmac.c b/drivers/dma/dma-axi-dmac.c index 0e0dfc0890ac..7f0b9aa15867 100644 --- a/drivers/dma/dma-axi-dmac.c +++ b/drivers/dma/dma-axi-dmac.c @@ -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);