Hi, since the last 8259 thread I've seen a report from a Motorola Atlas (PReP)
user whose problems were also fixed by using the PCI interrupt acknowledge. If
it's a hardware bug, it affects both the IBM Fire Coral and the Intel 82378IB
ISA bridges. Here is my updated patch. I apologize for the whitespace changes;
here are the important differences:
- i8259_irq has been renamed to i8259_poll
- a new i8259_irq has been added, which uses the PCI int ack address
- both i8259_irq and i8259_poll are no longer passed the unused 'int cpu'
- i8259_init now takes a 'long intack_addr', which on PReP is 0xbffffff0.
For platforms that only poll, this argument is irrelevant and can be 0x0
- IO resources 0x20-0x21, 0xA0-0xA1, and 0x4D0-0x4D1 are now reserved
- ISR selection is done once at initialization rather than on every irq
This patch works on my (PReP) PowerSeries 830 and fixes the interrupt death
problems I and others have seen.
If this is the right idea, I intend to change all 8259 users:
- ppc_md.get_irq = i8259_irq -> ppc_md.get_irq = i8259_poll
- i8259_init() -> i8259_init(0x0)
- i8259_irq(smp_processor_id()) -> i8259_poll()
-Hollis