[PATCH] 2.4.18, 2.5.5: I/O APIC through-8259A mode IRQ 0 routing
authorMaciej W. Rozycki <macro@ds2.pg.gda.pl>
Tue, 5 Mar 2002 07:11:20 +0000 (23:11 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Tue, 5 Mar 2002 07:11:20 +0000 (23:11 -0800)
commit04a868aa8a1713d9cb9de71fc1a52c4da7ef568f
tree864bd5b1f6fcdf2525f4e0844a4e231a9e6324f9
parent28bb702852d086da2be61843b6547b2a1ee431dc
[PATCH] 2.4.18, 2.5.5: I/O APIC through-8259A mode IRQ 0 routing

 There is a problem with the through-8259A mode for IRQ 0 on I/O APIC
systems.  Depending on correctness of an MP table, IRQ 0 routing is either
not registered at all or registered at a wrong pin.  As a result the 8254
timer IRQ only works by an accident (it's edge-triggered and never
disabled/enabled so it happens to survive this incorrect configuration).
A visible effect is you can't change the affinity for IRQ 0.

 Following is a patch that fixes both cases referred to above.  The code
looks obvious but it was additionally run-time tested just in case.  The
issue is serious -- please apply the patch ASAP.  As no changes were done
to io_apic.c since the development fork, the patch applies cleanly both to
2.4 and to 2.5.

 Credit goes to Joe for discovering the affinity problem and providing a
fix proposal (incorporated in the final one).

  Maciej
arch/i386/kernel/io_apic.c