2.1.102 : irq detection broken for some drivers

Etienne Lorrain (lorrain@fb.sony.de)
Tue, 19 May 1998 17:57:43 +0001


Hi,

There seems to have quite few problems with
IRQ probing these days (2.1.102).
I just read irq.c file, and there seems to have
a new function:

+int i8259A_irq_pending (unsigned int irq)
+{
+ unsigned int mask = 1<<irq;
+
+ if (irq < 8)
+ return (inb(0x20) & mask);
+ return (inb(0xA0) & (mask >> 8));
+}

But usually, the 8259 PIC is not left
in this state (read of Interrupt Request Register
at 0x20/0xA0) by the BIOS, but to read
In Service Register.

So, I wonder if this should not be added in
IRQ initialisation (in init_IRQ()):

/* Set PICs to read Interrupt Request
Register at address 0x20/0xA0 */
outb(0x0A, 0xA0);
outb(0x0A, 0x20);

I will test to add these two lines in
the previous function as soon as possible,
i.e. IT IS NOT TESTED.

The opposite is (*NOT for this patch*):
/* Reset PICs to read In Service Register
at address 0x20/0xA0 : */
outb(0x0B, 0x20);
outb(0x0B, 0xA0);

Just because it may help,
or because it is too late and I did
not see where it has been done...

Etienne.

----------- etienne.lorrain@ibm.net
-- hdc: irq timeout: status=0xd0 { Busy }
-- ide1: reset: success
----------> I like Linux !

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu