mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] mpt_interrupt() should return IRQ_NONE when appropriate
@ 2006-04-26 13:58 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2006-04-26 13:58 UTC (permalink / raw)
  To: mpt_linux_developer; +Cc: linux-kernel

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>

diff -Npru /home/jbeulich/tmp/linux-2.6.17-rc2/drivers/message/fusion/mptbase.c
2.6.17-rc2-mpt_interrupt/drivers/message/fusion/mptbase.c
--- /home/jbeulich/tmp/linux-2.6.17-rc2/drivers/message/fusion/mptbase.c	2006-04-26 11:50:44.000000000 +0200
+++ 2.6.17-rc2-mpt_interrupt/drivers/message/fusion/mptbase.c	2006-04-25 15:04:48.000000000 +0200
@@ -372,20 +372,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;
 }



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-04-26 13:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-26 13:58 [PATCH] mpt_interrupt() should return IRQ_NONE when appropriate Jan Beulich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome