IRQ Patch

Richard B. Johnson (root@analogic.com)
Wed, 25 Jun 1997 13:15:37 -0400 (EDT)


Linus,

The following patch fixes a problem with '386SX/16 machines where the
CPU stops being interrupted so the machine halts.

I have tested this on two 386SXs, 12 486-DX/66, 2 Pentium 166s, and one
dual Pentium 166 running SMP.

Several others in the linux-kernel group have tested this with no ill
effects. In other words, it doesn't seem to break anything.

It sends a specific EOI to the cascade, instead of the non-specific.

It patches cleanly in the current kernel. I think it should be used in
the current distribution.

--- /usr/src/linux/arch/i386/kernel/irq.c.orig Mon Jun 9 07:57:15 1997
+++ /usr/src/linux/arch/i386/kernel/irq.c Mon Jun 9 08:02:14 1997
@@ -82,12 +82,13 @@
if (irq_nr & 8) {
inb(0xA1); /* DUMMY */
outb(cached_A1,0xA1);
+ outb(0x62,0x20); /* Specific EOI to cascade */
outb(0x20,0xA0);
} else {
inb(0x21); /* DUMMY */
outb(cached_21,0x21);
+ outb(0x20,0x20);
}
- outb(0x20,0x20);
spin_unlock(&irq_controller_lock);
}

Cheers,
DJ
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Richard B. Johnson
Analogic Corporation
Email : rjohnson@analogic.com, johnson@analogic.com
Penguin : Linux version 2.1.44 on an i586 machine (66.15 BogoMips).
Warning : It's hard to stay on the trailing edge of technology.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-