Expand description
I/O APIC driver
The I/O APIC handles routing of external hardware interrupts to Local APICs. It uses indirect MMIO: write register index to IOREGSEL, then read/write IOWIN.
Constantsยง
- IOAPICID ๐
- IOAPICVER ๐
- IOREDTBL_
BASE ๐ - IOREGSEL ๐
- IOWIN ๐
- REDIR_
ACTIVE_ ๐LOW - REDIR_
LEVEL_ ๐TRIGGER - REDIR_
MASK ๐
Staticsยง
- IOAPIC_
BASE_ ๐VIRT - Virtual base address of the I/O APIC MMIO registers
- IOAPIC_
GSI_ ๐BASE - GSI base for this I/O APIC
- IOAPIC_
INITIALIZED ๐ - Whether the I/O APIC has been initialized
- MADT_
OVERRIDES ๐ - MADT interrupt-source overrides, stored so PCI NIC drivers can route their IRQ correctly after the APIC init phase.
Functionsยง
- find_
override ๐ - Find the override for a legacy IRQ, returning (gsi, polarity, trigger).
- init
- Initialize the I/O APIC.
- ioapic_
read ๐ โ - Read an I/O APIC register (indirect access)
- ioapic_
write ๐ โ - Write an I/O APIC register (indirect access)
- mask_
irq - Mask a GSI (disable the interrupt)
- mask_
legacy_ irq - Mask a legacy IRQ, resolving MADT overrides to the correct GSI.
- read_
redir ๐ โ - Read a 64-bit redirection entry
- route_
irq - Route a GSI to a specific LAPIC and vector.
- route_
legacy_ irq - Route a legacy ISA IRQ, applying MADT interrupt source overrides.
- route_
nic_ irq - Route a PCI NIC interrupt through the I/O APIC using stored MADT overrides.
- store_
madt_ overrides - Store the MADT interrupt-source overrides for later use by PCI NIC drivers.
- unmask_
irq - Unmask a GSI (enable the interrupt)
- write_
redir ๐ โ - Write a 64-bit redirection entry