Commit 3e00a5b2 authored by Eric Moore's avatar Eric Moore Committed by James Bottomley

[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: default avatarJan Beulich <jbeulich@novell.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.com>
Signed-off-by: default avatarEric Moore <Eric.Moore@lsil.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 376ac830
...@@ -369,20 +369,21 @@ static irqreturn_t ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment