x86: Try to fix MP table I/O interrupt assignment entries
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 28 Mar 2019 19:40:43 +0000 (15:40 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 28 Mar 2019 19:48:16 +0000 (15:48 -0400)
commit28318d11027a46b2c8a549423e83198bafe316bb
tree971798d7cc1e63bf937dd434b8ede70b1ca4dbde
parentba6f521d0d9401f518f99b547d248c31d021fa71
x86: Try to fix MP table I/O interrupt assignment entries

I have a desktop PC with two IOAPICs, 8 and 9, and the IOINTR entries do
not specify valid APIC IDs (0 and 2).  ACPI agrees the IOAPIC ids are 8
and 9.

This method works at least for the lower IOAPIC (id = 8) on my deskop.

You'd have to have broken MP tables to even get this far.  Prior to this
commit, PCI devices would complain about not being able to set up an IOAPIC
route.

These changes will make those busted IOINTRs appear to be correct ones,
but there's no guarantee that the hardware is actually wired that way.
might think you're using an IOAPIC route when you're actually using the
wrong one.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/mp.c