On Fri, 31 Mar 2000, Ronald G. Minnich wrote:
The IRQ assignment can't be done in the operating system. It depends on the wireing on your board and therefore it is done in BIOS. You can check the IRQ assignment with your original BIOS:
wow, I've done more looking around. The IRQ assignment in linux is pretty clearly being done in the OS in SMP kernels, check out io_apic.c ...
Nope. Linux just sets IRQs up based on the MP table. The MP table is constructed by BIOS and it reflects physical routing of interrupt lines on the board. See the code in mpparse.c. The code in io_apic.c is invoked much later and depends on what gets prepared within mpparse.c.
Board manufacturers are free to route I/O APIC interrupt lines however they like in MP systems, as long as the MP table gets these right.