mptbase: mpt_interrupt should return IRQ_NONE
Subsystems (2)
PATCH 1/1 mptbase: mpt_interrupt should return IRQ_NONE
The way mpt_interrupt() was coded, it was impossible for the unhandled interrupt detection logic to ever trigger. All interrupt handlers should return IRQ_NONE when they have nothing to do.
Signed-off-by Jan Beulich <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
Signed-off-by Eric Moore <[email protected]>
drivers/message/fusion/mptbase.c +8 -7
@@ -369,20 +369,21 @@ static irqreturn_t mpt_interrupt(int irq, void *bus_id, struct pt_regs *r) { MPT_ADAPTER *ioc = bus_id; -u32 pa; +u32 pa =CHIPREG_READ32_dmasync (&ioc->chip->ReplyFifo); + +if (pa ==0xFFFFFFFF ) +return IRQ_NONE ;/* * Drain the reply FIFO! */ -while (1 ) { - pa =CHIPREG_READ32_dmasync (&ioc->chip->ReplyFifo); -if (pa ==0xFFFFFFFF ) -return IRQ_HANDLED ; -else if (pa &MPI_ADDRESS_REPLY_A_BIT ) +do { +if (pa &MPI_ADDRESS_REPLY_A_BIT )mpt_reply (ioc, pa);else mpt_turbo_reply (ioc, pa); - } + pa =CHIPREG_READ32_dmasync (&ioc->chip->ReplyFifo); + }while (pa !=0xFFFFFFFF );return IRQ_HANDLED ; }