Skip to contentSkip to conversation

sym53c8xx: fix "irq X: nobody cared" regression in 2.6.24

PATCH In review Tony Battersby 2 participants 2 messages Dec 14, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sym53c8xx: fix "irq X: nobody cared" regression in 2.6.24

The patch described by the following excerpt from ChangeLog-2.6.24-rc1 eventually causes a "irq X: nobody cared" error after a while:

commit 99c9e0a1d6cfe1ba1169a7a81435ee85bc00e4a1

Author: Matthew Wilcox <[email protected]>
Date:   Fri Oct 5 15:55:12 2007 -0400

[SCSI] sym53c8xx: Make interrupt handler capable of returning IRQ_NONE

After this happens, the kernel disables the IRQ, causing the SCSI card to stop working until the next reboot. The problem is caused by the interrupt handler returning IRQ_NONE instead of IRQ_HANDLED after handling an interrupt-on-the-fly (INTF) condition. The following patch fixes the problem.

---

James, please queue for scsi-rc-fixes-2.6. Thanks!

drivers/scsi/sym53c8xx_2/sym_hipd.c renamed from drivers/scsi/sym53c8xx_2/sym_hipd.c.orig +1 -1
@@ -2791,7 +2791,7 @@ irqreturn_t sym_interrupt(struct Scsi_Ho
 	istat = INB(np, nc_istat);
 	if (istat & INTF) {
 		OUTB(np, nc_istat, (istat & SIGP) | INTF | np->istat_sem);
-		istat = INB(np, nc_istat);		/* DUMMY READ */
+		istat |= INB(np, nc_istat);		/* DUMMY READ */
 		if (DEBUG_FLAGS & DEBUG_TINY) printf ("F ");
 		sym_wakeup_done(np);
 	}
Acked-by on v1 1/1
#1 lore raw
Quoted 7 lines · Tony Battersby

After this happens, the kernel disables the IRQ, causing the SCSI card to stop working until the next reboot. The problem is caused by the interrupt handler returning IRQ_NONE instead of IRQ_HANDLED after handling an interrupt-on-the-fly (INTF) condition. The following patch fixes the problem.

Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."