[SCSI] 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 <jbeulich@novell.com> Signed-off-by: Andrew Morton <akpm@osdl.com> Signed-off-by: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
376ac83078
commit
3e00a5b287
|
@ -369,20 +369,21 @@ static irqreturn_t
|
||||||
mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
||||||
{
|
{
|
||||||
MPT_ADAPTER *ioc = bus_id;
|
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!
|
* Drain the reply FIFO!
|
||||||
*/
|
*/
|
||||||
while (1) {
|
do {
|
||||||
pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
|
if (pa & MPI_ADDRESS_REPLY_A_BIT)
|
||||||
if (pa == 0xFFFFFFFF)
|
|
||||||
return IRQ_HANDLED;
|
|
||||||
else if (pa & MPI_ADDRESS_REPLY_A_BIT)
|
|
||||||
mpt_reply(ioc, pa);
|
mpt_reply(ioc, pa);
|
||||||
else
|
else
|
||||||
mpt_turbo_reply(ioc, pa);
|
mpt_turbo_reply(ioc, pa);
|
||||||
}
|
pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
|
||||||
|
} while (pa != 0xFFFFFFFF);
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue