15#define IOAPIC_IRQ_OVERRIDE_MAX 255
44 bool enabled = lapic->
flags & 1;
45 bool online_capable = lapic->
flags & 2;
50 if (!enabled && !online_capable)
65 mos_panic(
"Multiple IOAPICs not supported");
73 pr_dinfo2(x86_acpi,
"MADT entry IOAPIC override [%p], bus=%u, flags=0x%x, 'irq source %u is now global irq %u'", (
void *) int_override,
77 mos_panic(
"IOAPIC override for non-ISA bus not supported");
80 mos_panic(
"IOAPIC override for IRQ >= 255 not supported");
83 mos_panic(
"Multiple IOAPIC overrides for the same IRQ not supported");
91 pr_dinfo2(x86_acpi,
"MADT entry IOAPIC NMI [%p], nmi_source=%u, global_irq=%u, flags=0x%x", (
void *) int_override, int_override->
nmi_source,
93 pr_dwarn(x86_acpi,
"Unhandled MADT entry type 3 (IOAPIC NMI)");
100 pr_dwarn(x86_acpi,
"Unhandled MADT entry type 4 (LAPIC NMI)");
106 pr_dinfo2(x86_acpi,
"MADT entry LAPIC address override [%p], address=%llu", (
void *) local_apic_nmi, local_apic_nmi->
lapic_paddr);
107 pr_dwarn(x86_acpi,
"Unhandled MADT entry type 5 (LAPIC address override)");
113 pr_dinfo2(x86_acpi,
"MADT entry local x2 SAPIC override [%p], x2apic_id=%u, flags=0x%x, acpi_id=%u", (
void *) local_sapic_override,
115 pr_dwarn(x86_acpi,
"Unhandled MADT entry type 9 (local x2 SAPIC override)");
120 pr_warn(
"Strange MADT entry type %u", entry->type);
#define madt_entry_foreach(var, madt)
#define MOS_MAX_CPU_COUNT
static u32 volatile * ioapic
static u32 ioapic_irq_override[255]
#define IOAPIC_IRQ_OVERRIDE_MAX
u32 x86_ioapic_get_irq_override(u32 irq)
const acpi_madt_t * x86_acpi_madt
u32 x86_lapic_global_base
#define container_of(ptr, type, member)
#define mos_panic(fmt,...)
#define pr_dinfo2(feat, fmt,...)
#define pr_dwarn(feat, fmt,...)