IOAPIC: Difference between revisions

→‎IO APIC Inputs: Changed typo (MADT, not MASD)
[unchecked revision][unchecked revision]
(fix dead link)
(→‎IO APIC Inputs: Changed typo (MADT, not MASD))
Line 253:
== IO APIC Inputs ==
 
How other hardware (devices, etc) use IO APIC inputs is completely arbitrary - the motherboard/chipset designer can hard-wire anything they like to any IO APIC input. For the motherboard designer's convenience, most but not all legacy IRQs are often (but not always) connected "1:1" to IO APIC inputs (e.g. IO APIC input #1 may be the same as PIC chip input #1) as this makes firmware a little easier (e.g. no need for "interrupt redirection entries" in ACPI's MASDMADT/APIC table), but this is not a requirement of any standard and not something that useful operating system software can rely on.
 
To correctly determine what how IO APIC inputs are used (and how they must be configured - as active high or active low, and as edge triggered or level triggered) operating system software must either:
Line 264:
 
4) Use an excessively "clever" auto-detection scheme (with a high risk of misconfiguration and race conditions). These schemes typically begin with whatever information can be obtained easily (e.g. determining legacy IRQs from ACPI's MADT/APIC table), assuming everything else can be configured as "level triggered active low" (to suit PCI), and then asking device drivers to repeatedly forcing their device to generate an IRQ (while ruling out IO APIC inputs that weren't triggered within a certain period of time after the IRQ was caused) until the specific IO APIC that the device uses can be determined.
 
 
== External Links ==
Anonymous user