650 B
650 B
Full IRQ routing?
External IRQ sources:
- Legacy IRQ lines
- PCI IRQ pins (INTA#/INTB#/INTC#/INTD#)
Each of these is routed to a single GSI (IRQ of I/O APIC), which in turn is mapped to a single interrupt vector in any of the Local APICs
Mapping legacy IRQ to a handler: If I/O APIC is available
- Get 8259 IRQ -> I/O APIC Line mapping
- Allocate an interrupt vector/reuse shared vector
- Add a mapping in I/O APIC
- Add entry to IRQ handlers list
- Unmask the GSI Otherwise:
- Add entry
irq_numberto IRQ handlers list
I/O APIC init:
- Assign I/O APIC address variable
- Relocate existing legacy handlers to I/O APIC