[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
1 changed files with 8 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue