diff options
author | njl <njl@FreeBSD.org> | 2003-12-09 03:04:19 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2003-12-09 03:04:19 +0000 |
commit | efa66ad0f323c9712423bc905dcaa10ca75ad528 (patch) | |
tree | 48d0758f9bbd904c81874126ad130c07b3aadd30 | |
parent | c9195ff9f0c933ba47c84645b2f010cb354f8150 (diff) | |
download | FreeBSD-src-efa66ad0f323c9712423bc905dcaa10ca75ad528.zip FreeBSD-src-efa66ad0f323c9712423bc905dcaa10ca75ad528.tar.gz |
Use the ACPI-CA definitions for the various APIC tables instead of our
own.
-rw-r--r-- | sys/amd64/acpica/madt.c | 114 | ||||
-rw-r--r-- | sys/i386/acpica/madt.c | 114 | ||||
-rw-r--r-- | sys/ia64/acpica/madt.c | 86 |
3 files changed, 151 insertions, 163 deletions
diff --git a/sys/amd64/acpica/madt.c b/sys/amd64/acpica/madt.c index 71be5ba..68759c5 100644 --- a/sys/amd64/acpica/madt.c +++ b/sys/amd64/acpica/madt.c @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include "acpi.h" #include <dev/acpica/acpivar.h> -#include <dev/acpica/madt.h> #include <dev/pci/pcivar.h> #define NIOAPICS 32 /* Max number of I/O APICs */ @@ -70,7 +69,7 @@ struct lapic_info { u_int la_apic_id:8; } lapics[NLAPICS + 1]; -static APIC_TABLE *madt; +static MULTIPLE_APIC_TABLE *madt; static vm_paddr_t madt_physaddr; static vm_offset_t madt_length; @@ -83,10 +82,10 @@ static int madt_find_interrupt(int intr, void **apic, u_int *pin); static void *madt_map(vm_paddr_t pa, int offset, vm_offset_t length); static void *madt_map_table(vm_paddr_t pa, int offset, const char *sig); static void madt_parse_apics(APIC_HEADER *entry, void *arg); -static void madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr); +static void madt_parse_interrupt_override(MADT_INTERRUPT_OVERRIDE *intr); static void madt_parse_ints(APIC_HEADER *entry, void *arg __unused); -static void madt_parse_local_nmi(LAPIC_NMI *nmi); -static void madt_parse_nmi(NMI *nmi); +static void madt_parse_local_nmi(MADT_LOCAL_APIC_NMI *nmi); +static void madt_parse_nmi(MADT_NMI_SOURCE *nmi); static int madt_probe(void); static int madt_probe_cpus(void); static void madt_probe_cpus_handler(APIC_HEADER *entry, void *arg __unused); @@ -222,7 +221,7 @@ madt_probe(void) printf("MADT: Failed to map XSDT\n"); return (ENXIO); } - count = (xsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) / + count = (xsdt->Length - sizeof(ACPI_TABLE_HEADER)) / sizeof(UINT64); for (i = 0; i < count; i++) if (madt_probe_table(xsdt->TableOffsetEntry[i])) @@ -235,7 +234,7 @@ madt_probe(void) printf("MADT: Failed to map RSDT\n"); return (ENXIO); } - count = (rsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) / + count = (rsdt->Length - sizeof(ACPI_TABLE_HEADER)) / sizeof(UINT32); for (i = 0; i < count; i++) if (madt_probe_table(rsdt->TableOffsetEntry[i])) @@ -310,8 +309,8 @@ madt_setup_local(void) madt = pmap_mapdev(madt_physaddr, madt_length); lapic_init((uintptr_t)madt->LocalApicAddress); printf("ACPI APIC Table: <%.*s %.*s>\n", - (int)sizeof(madt->Header.OemId), madt->Header.OemId, - (int)sizeof(madt->Header.OemTableId), madt->Header.OemTableId); + (int)sizeof(madt->OemId), madt->OemId, + (int)sizeof(madt->OemTableId), madt->OemTableId); /* * We ignore 64-bit local APIC override entries. Should we @@ -363,7 +362,7 @@ madt_walk_table(madt_entry_handler *handler, void *arg) APIC_HEADER *entry; u_char *p, *end; - end = (u_char *)(madt) + madt->Header.Length; + end = (u_char *)(madt) + madt->Length; for (p = (u_char *)(madt + 1); p < end; ) { entry = (APIC_HEADER *)p; handler(entry, arg); @@ -374,27 +373,27 @@ madt_walk_table(madt_entry_handler *handler, void *arg) static void madt_probe_cpus_handler(APIC_HEADER *entry, void *arg) { - PROCESSOR_APIC *proc; + MADT_PROCESSOR_APIC *proc; struct lapic_info *la; switch (entry->Type) { - case APIC_PROC: + case APIC_PROCESSOR: /* * The MADT does not include a BSP flag, so we have to * let the MP code figure out which CPU is the BSP on * its own. */ - proc = (PROCESSOR_APIC *)entry; + proc = (MADT_PROCESSOR_APIC *)entry; if (bootverbose) printf("MADT: Found CPU APIC ID %d ACPI ID %d: %s\n", - proc->LocalApicId, proc->ProcessorApicId, + proc->LocalApicId, proc->ProcessorId, proc->ProcessorEnabled ? "enabled" : "disabled"); - if (proc->ProcessorApicId > NLAPICS) + if (proc->ProcessorId > NLAPICS) panic("%s: CPU ID %d too high", __func__, - proc->ProcessorApicId); - la = &lapics[proc->ProcessorApicId]; + proc->ProcessorId); + la = &lapics[proc->ProcessorId]; KASSERT(la->la_present == 0, - ("Duplicate local ACPI ID %d", proc->ProcessorApicId)); + ("Duplicate local ACPI ID %d", proc->ProcessorId)); la->la_present = 1; la->la_apic_id = proc->LocalApicId; if (proc->ProcessorEnabled) { @@ -412,16 +411,15 @@ madt_probe_cpus_handler(APIC_HEADER *entry, void *arg) static void madt_parse_apics(APIC_HEADER *entry, void *arg __unused) { - IO_APIC *apic; - + MADT_IO_APIC *apic; switch (entry->Type) { case APIC_IO: - apic = (IO_APIC *)entry; + apic = (MADT_IO_APIC *)entry; if (bootverbose) - printf("MADT: Found IO APIC ID %d, Vector %d at %p\n", - apic->IoApicId, apic->Vector, - (void *)(uintptr_t)apic->IoApicAddress); + printf("MADT: Found IO APIC ID %d, Interrupt %d at %p\n", + apic->IoApicId, apic->Interrupt, + (void *)(uintptr_t)apic->Address); if (apic->IoApicId >= NIOAPICS) panic("%s: I/O APIC ID %d too high", __func__, apic->IoApicId); @@ -429,9 +427,9 @@ madt_parse_apics(APIC_HEADER *entry, void *arg __unused) panic("%s: Double APIC ID %d", __func__, apic->IoApicId); ioapics[apic->IoApicId].io_apic = ioapic_create( - (uintptr_t)apic->IoApicAddress, apic->IoApicId, - apic->Vector); - ioapics[apic->IoApicId].io_vector = apic->Vector; + (uintptr_t)apic->Address, apic->IoApicId, + apic->Interrupt); + ioapics[apic->IoApicId].io_vector = apic->Interrupt; break; default: break; @@ -448,10 +446,10 @@ interrupt_polarity(UINT16 Polarity) { switch (Polarity) { - case APIC_POLARITY_CONFORM: - case APIC_POLARITY_ACTIVEHI: + case POLARITY_CONFORMS: + case POLARITY_ACTIVE_HIGH: return (1); - case APIC_POLARITY_ACTIVELO: + case POLARITY_ACTIVE_LOW: return (0); default: panic("Bogus Interrupt Polarity"); @@ -463,10 +461,10 @@ interrupt_trigger(UINT16 TriggerMode) { switch (TriggerMode) { - case APIC_TRIGGER_CONFORM: - case APIC_TRIGGER_EDGE: + case TRIGGER_CONFORMS: + case TRIGGER_EDGE: return (1); - case APIC_TRIGGER_LEVEL: + case TRIGGER_LEVEL: return (0); default: panic("Bogus Interrupt Trigger Mode"); @@ -521,27 +519,26 @@ madt_find_interrupt(int intr, void **apic, u_int *pin) * Parse an interrupt source override for an ISA interrupt. */ static void -madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr) +madt_parse_interrupt_override(MADT_INTERRUPT_OVERRIDE *intr) { void *new_ioapic, *old_ioapic; u_int new_pin, old_pin; if (bootverbose) printf("MADT: intr override: source %u, irq %u\n", - intr->Source, intr->GlobalSystemInterrupt); + intr->Source, intr->Interrupt); KASSERT(intr->Bus == 0, ("bus for interrupt overrides must be zero")); - if (madt_find_interrupt(intr->GlobalSystemInterrupt, &new_ioapic, + if (madt_find_interrupt(intr->Interrupt, &new_ioapic, &new_pin) != 0) { printf("MADT: Could not find APIC for vector %d (IRQ %d)\n", - intr->GlobalSystemInterrupt, intr->Source); + intr->Interrupt, intr->Source); return; } - if (intr->Source != intr->GlobalSystemInterrupt) { + if (intr->Source != intr->Interrupt) { /* XXX: This assumes that the SCI uses IRQ 9. */ - if (intr->GlobalSystemInterrupt > 15 && intr->Source == 9) - acpi_OverrideInterruptLevel( - intr->GlobalSystemInterrupt); + if (intr->Interrupt > 15 && intr->Source == 9) + acpi_OverrideInterruptLevel(intr->Interrupt); else ioapic_remap_vector(new_ioapic, new_pin, intr->Source); if (madt_find_interrupt(intr->Source, &old_ioapic, @@ -562,23 +559,22 @@ madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr) * Parse an entry for an NMI routed to an IO APIC. */ static void -madt_parse_nmi(NMI *nmi) +madt_parse_nmi(MADT_NMI_SOURCE *nmi) { void *ioapic; u_int pin; - if (madt_find_interrupt(nmi->GlobalSystemInterrupt, - &ioapic, &pin) != 0) { + if (madt_find_interrupt(nmi->Interrupt, &ioapic, &pin) != 0) { printf("MADT: Could not find APIC for vector %d\n", - nmi->GlobalSystemInterrupt); + nmi->Interrupt); return; } ioapic_set_nmi(ioapic, pin); - if (nmi->TriggerMode != APIC_TRIGGER_CONFORM) + if (nmi->TriggerMode != TRIGGER_CONFORMS) ioapic_set_triggermode(ioapic, pin, interrupt_trigger(nmi->TriggerMode)); - if (nmi->Polarity != APIC_TRIGGER_CONFORM) + if (nmi->Polarity != TRIGGER_CONFORMS) ioapic_set_polarity(ioapic, pin, interrupt_polarity(nmi->Polarity)); } @@ -587,27 +583,27 @@ madt_parse_nmi(NMI *nmi) * Parse an entry for an NMI routed to a local APIC LVT pin. */ static void -madt_parse_local_nmi(LAPIC_NMI *nmi) +madt_parse_local_nmi(MADT_LOCAL_APIC_NMI *nmi) { u_int apic_id, pin; - if (nmi->ProcessorApicId == 0xff) + if (nmi->ProcessorId == 0xff) apic_id = APIC_ID_ALL; - else if (madt_find_cpu(nmi->ProcessorApicId, &apic_id) != 0) { + else if (madt_find_cpu(nmi->ProcessorId, &apic_id) != 0) { if (bootverbose) printf("MADT: Ignoring local NMI routed to ACPI CPU %u\n", - nmi->ProcessorApicId); + nmi->ProcessorId); return; } - if (nmi->LINTPin == 0) + if (nmi->Lint == 0) pin = LVT_LINT0; else pin = LVT_LINT1; lapic_set_lvt_mode(apic_id, pin, APIC_LVT_DM_NMI); - if (nmi->TriggerMode != APIC_TRIGGER_CONFORM) + if (nmi->TriggerMode != TRIGGER_CONFORMS) lapic_set_lvt_triggermode(apic_id, pin, interrupt_trigger(nmi->TriggerMode)); - if (nmi->Polarity != APIC_POLARITY_CONFORM) + if (nmi->Polarity != POLARITY_CONFORMS) lapic_set_lvt_polarity(apic_id, pin, interrupt_polarity(nmi->Polarity)); } @@ -620,15 +616,15 @@ madt_parse_ints(APIC_HEADER *entry, void *arg __unused) { switch (entry->Type) { - case APIC_INTERRUPT_SOURCE_OVERRIDE: + case APIC_XRUPT_OVERRIDE: madt_parse_interrupt_override( - (INTERRUPT_SOURCE_OVERRIDE *)entry); + (MADT_INTERRUPT_OVERRIDE *)entry); break; case APIC_NMI: - madt_parse_nmi((NMI *)entry); + madt_parse_nmi((MADT_NMI_SOURCE *)entry); break; - case APIC_LOCAL_APIC_NMI: - madt_parse_local_nmi((LAPIC_NMI *)entry); + case APIC_LOCAL_NMI: + madt_parse_local_nmi((MADT_LOCAL_APIC_NMI *)entry); break; } } diff --git a/sys/i386/acpica/madt.c b/sys/i386/acpica/madt.c index cddf9ff..01d7ccc 100644 --- a/sys/i386/acpica/madt.c +++ b/sys/i386/acpica/madt.c @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include "acpi.h" #include <dev/acpica/acpivar.h> -#include <dev/acpica/madt.h> #include <dev/pci/pcivar.h> #define NIOAPICS 32 /* Max number of I/O APICs */ @@ -70,7 +69,7 @@ struct lapic_info { u_int la_apic_id:8; } lapics[NLAPICS + 1]; -static APIC_TABLE *madt; +static MULTIPLE_APIC_TABLE *madt; static vm_paddr_t madt_physaddr; static vm_offset_t madt_length; @@ -83,10 +82,10 @@ static int madt_find_interrupt(int intr, void **apic, u_int *pin); static void *madt_map(vm_paddr_t pa, int offset, vm_offset_t length); static void *madt_map_table(vm_paddr_t pa, int offset, const char *sig); static void madt_parse_apics(APIC_HEADER *entry, void *arg); -static void madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr); +static void madt_parse_interrupt_override(MADT_INTERRUPT_OVERRIDE *intr); static void madt_parse_ints(APIC_HEADER *entry, void *arg __unused); -static void madt_parse_local_nmi(LAPIC_NMI *nmi); -static void madt_parse_nmi(NMI *nmi); +static void madt_parse_local_nmi(MADT_LOCAL_APIC_NMI *nmi); +static void madt_parse_nmi(MADT_NMI_SOURCE *nmi); static int madt_probe(void); static int madt_probe_cpus(void); static void madt_probe_cpus_handler(APIC_HEADER *entry, void *arg __unused); @@ -222,7 +221,7 @@ madt_probe(void) printf("MADT: Failed to map XSDT\n"); return (ENXIO); } - count = (xsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) / + count = (xsdt->Length - sizeof(ACPI_TABLE_HEADER)) / sizeof(UINT64); for (i = 0; i < count; i++) if (madt_probe_table(xsdt->TableOffsetEntry[i])) @@ -235,7 +234,7 @@ madt_probe(void) printf("MADT: Failed to map RSDT\n"); return (ENXIO); } - count = (rsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) / + count = (rsdt->Length - sizeof(ACPI_TABLE_HEADER)) / sizeof(UINT32); for (i = 0; i < count; i++) if (madt_probe_table(rsdt->TableOffsetEntry[i])) @@ -310,8 +309,8 @@ madt_setup_local(void) madt = pmap_mapdev(madt_physaddr, madt_length); lapic_init((uintptr_t)madt->LocalApicAddress); printf("ACPI APIC Table: <%.*s %.*s>\n", - (int)sizeof(madt->Header.OemId), madt->Header.OemId, - (int)sizeof(madt->Header.OemTableId), madt->Header.OemTableId); + (int)sizeof(madt->OemId), madt->OemId, + (int)sizeof(madt->OemTableId), madt->OemTableId); /* * We ignore 64-bit local APIC override entries. Should we @@ -362,7 +361,7 @@ madt_walk_table(madt_entry_handler *handler, void *arg) APIC_HEADER *entry; u_char *p, *end; - end = (u_char *)(madt) + madt->Header.Length; + end = (u_char *)(madt) + madt->Length; for (p = (u_char *)(madt + 1); p < end; ) { entry = (APIC_HEADER *)p; handler(entry, arg); @@ -373,27 +372,27 @@ madt_walk_table(madt_entry_handler *handler, void *arg) static void madt_probe_cpus_handler(APIC_HEADER *entry, void *arg) { - PROCESSOR_APIC *proc; + MADT_PROCESSOR_APIC *proc; struct lapic_info *la; switch (entry->Type) { - case APIC_PROC: + case APIC_PROCESSOR: /* * The MADT does not include a BSP flag, so we have to * let the MP code figure out which CPU is the BSP on * its own. */ - proc = (PROCESSOR_APIC *)entry; + proc = (MADT_PROCESSOR_APIC *)entry; if (bootverbose) printf("MADT: Found CPU APIC ID %d ACPI ID %d: %s\n", - proc->LocalApicId, proc->ProcessorApicId, + proc->LocalApicId, proc->ProcessorId, proc->ProcessorEnabled ? "enabled" : "disabled"); - if (proc->ProcessorApicId > NLAPICS) + if (proc->ProcessorId > NLAPICS) panic("%s: CPU ID %d too high", __func__, - proc->ProcessorApicId); - la = &lapics[proc->ProcessorApicId]; + proc->ProcessorId); + la = &lapics[proc->ProcessorId]; KASSERT(la->la_present == 0, - ("Duplicate local ACPI ID %d", proc->ProcessorApicId)); + ("Duplicate local ACPI ID %d", proc->ProcessorId)); la->la_present = 1; la->la_apic_id = proc->LocalApicId; if (proc->ProcessorEnabled) { @@ -411,16 +410,15 @@ madt_probe_cpus_handler(APIC_HEADER *entry, void *arg) static void madt_parse_apics(APIC_HEADER *entry, void *arg __unused) { - IO_APIC *apic; - + MADT_IO_APIC *apic; switch (entry->Type) { case APIC_IO: - apic = (IO_APIC *)entry; + apic = (MADT_IO_APIC *)entry; if (bootverbose) - printf("MADT: Found IO APIC ID %d, Vector %d at %p\n", - apic->IoApicId, apic->Vector, - (void *)(uintptr_t)apic->IoApicAddress); + printf("MADT: Found IO APIC ID %d, Interrupt %d at %p\n", + apic->IoApicId, apic->Interrupt, + (void *)(uintptr_t)apic->Address); if (apic->IoApicId >= NIOAPICS) panic("%s: I/O APIC ID %d too high", __func__, apic->IoApicId); @@ -428,9 +426,9 @@ madt_parse_apics(APIC_HEADER *entry, void *arg __unused) panic("%s: Double APIC ID %d", __func__, apic->IoApicId); ioapics[apic->IoApicId].io_apic = ioapic_create( - (uintptr_t)apic->IoApicAddress, apic->IoApicId, - apic->Vector); - ioapics[apic->IoApicId].io_vector = apic->Vector; + (uintptr_t)apic->Address, apic->IoApicId, + apic->Interrupt); + ioapics[apic->IoApicId].io_vector = apic->Interrupt; break; default: break; @@ -447,10 +445,10 @@ interrupt_polarity(UINT16 Polarity) { switch (Polarity) { - case APIC_POLARITY_CONFORM: - case APIC_POLARITY_ACTIVEHI: + case POLARITY_CONFORMS: + case POLARITY_ACTIVE_HIGH: return (1); - case APIC_POLARITY_ACTIVELO: + case POLARITY_ACTIVE_LOW: return (0); default: panic("Bogus Interrupt Polarity"); @@ -462,10 +460,10 @@ interrupt_trigger(UINT16 TriggerMode) { switch (TriggerMode) { - case APIC_TRIGGER_CONFORM: - case APIC_TRIGGER_EDGE: + case TRIGGER_CONFORMS: + case TRIGGER_EDGE: return (1); - case APIC_TRIGGER_LEVEL: + case TRIGGER_LEVEL: return (0); default: panic("Bogus Interrupt Trigger Mode"); @@ -520,27 +518,26 @@ madt_find_interrupt(int intr, void **apic, u_int *pin) * Parse an interrupt source override for an ISA interrupt. */ static void -madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr) +madt_parse_interrupt_override(MADT_INTERRUPT_OVERRIDE *intr) { void *new_ioapic, *old_ioapic; u_int new_pin, old_pin; if (bootverbose) printf("MADT: intr override: source %u, irq %u\n", - intr->Source, intr->GlobalSystemInterrupt); + intr->Source, intr->Interrupt); KASSERT(intr->Bus == 0, ("bus for interrupt overrides must be zero")); - if (madt_find_interrupt(intr->GlobalSystemInterrupt, &new_ioapic, + if (madt_find_interrupt(intr->Interrupt, &new_ioapic, &new_pin) != 0) { printf("MADT: Could not find APIC for vector %d (IRQ %d)\n", - intr->GlobalSystemInterrupt, intr->Source); + intr->Interrupt, intr->Source); return; } - if (intr->Source != intr->GlobalSystemInterrupt) { + if (intr->Source != intr->Interrupt) { /* XXX: This assumes that the SCI uses IRQ 9. */ - if (intr->GlobalSystemInterrupt > 15 && intr->Source == 9) - acpi_OverrideInterruptLevel( - intr->GlobalSystemInterrupt); + if (intr->Interrupt > 15 && intr->Source == 9) + acpi_OverrideInterruptLevel(intr->Interrupt); else ioapic_remap_vector(new_ioapic, new_pin, intr->Source); if (madt_find_interrupt(intr->Source, &old_ioapic, @@ -561,23 +558,22 @@ madt_parse_interrupt_override(INTERRUPT_SOURCE_OVERRIDE *intr) * Parse an entry for an NMI routed to an IO APIC. */ static void -madt_parse_nmi(NMI *nmi) +madt_parse_nmi(MADT_NMI_SOURCE *nmi) { void *ioapic; u_int pin; - if (madt_find_interrupt(nmi->GlobalSystemInterrupt, - &ioapic, &pin) != 0) { + if (madt_find_interrupt(nmi->Interrupt, &ioapic, &pin) != 0) { printf("MADT: Could not find APIC for vector %d\n", - nmi->GlobalSystemInterrupt); + nmi->Interrupt); return; } ioapic_set_nmi(ioapic, pin); - if (nmi->TriggerMode != APIC_TRIGGER_CONFORM) + if (nmi->TriggerMode != TRIGGER_CONFORMS) ioapic_set_triggermode(ioapic, pin, interrupt_trigger(nmi->TriggerMode)); - if (nmi->Polarity != APIC_TRIGGER_CONFORM) + if (nmi->Polarity != TRIGGER_CONFORMS) ioapic_set_polarity(ioapic, pin, interrupt_polarity(nmi->Polarity)); } @@ -586,27 +582,27 @@ madt_parse_nmi(NMI *nmi) * Parse an entry for an NMI routed to a local APIC LVT pin. */ static void -madt_parse_local_nmi(LAPIC_NMI *nmi) +madt_parse_local_nmi(MADT_LOCAL_APIC_NMI *nmi) { u_int apic_id, pin; - if (nmi->ProcessorApicId == 0xff) + if (nmi->ProcessorId == 0xff) apic_id = APIC_ID_ALL; - else if (madt_find_cpu(nmi->ProcessorApicId, &apic_id) != 0) { + else if (madt_find_cpu(nmi->ProcessorId, &apic_id) != 0) { if (bootverbose) printf("MADT: Ignoring local NMI routed to ACPI CPU %u\n", - nmi->ProcessorApicId); + nmi->ProcessorId); return; } - if (nmi->LINTPin == 0) + if (nmi->Lint == 0) pin = LVT_LINT0; else pin = LVT_LINT1; lapic_set_lvt_mode(apic_id, pin, APIC_LVT_DM_NMI); - if (nmi->TriggerMode != APIC_TRIGGER_CONFORM) + if (nmi->TriggerMode != TRIGGER_CONFORMS) lapic_set_lvt_triggermode(apic_id, pin, interrupt_trigger(nmi->TriggerMode)); - if (nmi->Polarity != APIC_POLARITY_CONFORM) + if (nmi->Polarity != POLARITY_CONFORMS) lapic_set_lvt_polarity(apic_id, pin, interrupt_polarity(nmi->Polarity)); } @@ -619,15 +615,15 @@ madt_parse_ints(APIC_HEADER *entry, void *arg __unused) { switch (entry->Type) { - case APIC_INTERRUPT_SOURCE_OVERRIDE: + case APIC_XRUPT_OVERRIDE: madt_parse_interrupt_override( - (INTERRUPT_SOURCE_OVERRIDE *)entry); + (MADT_INTERRUPT_OVERRIDE *)entry); break; case APIC_NMI: - madt_parse_nmi((NMI *)entry); + madt_parse_nmi((MADT_NMI_SOURCE *)entry); break; - case APIC_LOCAL_APIC_NMI: - madt_parse_local_nmi((LAPIC_NMI *)entry); + case APIC_LOCAL_NMI: + madt_parse_local_nmi((MADT_LOCAL_APIC_NMI *)entry); break; } } diff --git a/sys/ia64/acpica/madt.c b/sys/ia64/acpica/madt.c index f180886..b82db3e 100644 --- a/sys/ia64/acpica/madt.c +++ b/sys/ia64/acpica/madt.c @@ -27,7 +27,6 @@ */ #include "acpi.h" -#include <dev/acpica/madt.h> #include <machine/md_var.h> @@ -40,12 +39,12 @@ print_entry(APIC_HEADER *entry) { switch (entry->Type) { - case APIC_INTERRUPT_SOURCE_OVERRIDE: { - INTERRUPT_SOURCE_OVERRIDE *iso = - (INTERRUPT_SOURCE_OVERRIDE *)entry; + case APIC_XRUPT_OVERRIDE: { + MADT_INTERRUPT_OVERRIDE *iso = + (MADT_INTERRUPT_OVERRIDE *)entry; printf("\tInterrupt source override entry\n"); printf("\t\tBus=%d, Source=%d, Irq=0x%x\n", iso->Bus, - iso->Source, iso->GlobalSystemInterrupt); + iso->Source, iso->Interrupt); break; } @@ -54,27 +53,26 @@ print_entry(APIC_HEADER *entry) break; case APIC_IO_SAPIC: { - IO_SAPIC *sapic = (IO_SAPIC *)entry; + MADT_IO_SAPIC *sapic = (MADT_IO_SAPIC *)entry; printf("\tI/O SAPIC entry\n"); - printf("\t\tId=0x%x, Vector=0x%x, Address=0x%lx\n", - sapic->IoSapicId, sapic->Vector, sapic->IoSapicAddress); + printf("\t\tId=0x%x, InterruptBase=0x%x, Address=0x%lx\n", + sapic->IoSapicId, sapic->InterruptBase, sapic->Address); break; } - case APIC_LOCAL_APIC_NMI: + case APIC_LOCAL_NMI: printf("\tLocal APIC NMI entry\n"); break; - case APIC_LOCAL_APIC_OVERRIDE: { - LAPIC_OVERRIDE *lapic = (LAPIC_OVERRIDE *)entry; + case APIC_ADDRESS_OVERRIDE: { + MADT_ADDRESS_OVERRIDE *lapic = (MADT_ADDRESS_OVERRIDE *)entry; printf("\tLocal APIC override entry\n"); - printf("\t\tLocal APIC address=0x%lx\n", - lapic->LocalApicAddress); + printf("\t\tLocal APIC address=0x%jx\n", lapic->Address); break; } case APIC_LOCAL_SAPIC: { - LOCAL_SAPIC *sapic = (LOCAL_SAPIC *)entry; + MADT_LOCAL_SAPIC *sapic = (MADT_LOCAL_SAPIC *)entry; printf("\tLocal SAPIC entry\n"); printf("\t\tProcessorId=0x%x, Id=0x%x, Eid=0x%x", sapic->ProcessorId, sapic->LocalSapicId, @@ -89,19 +87,17 @@ print_entry(APIC_HEADER *entry) printf("\tNMI entry\n"); break; - case APIC_PLATFORM_INTERRUPT: { - PLATFORM_INTERRUPT_SOURCE *pis = - (PLATFORM_INTERRUPT_SOURCE *)entry; + case APIC_XRUPT_SOURCE: { + MADT_INTERRUPT_SOURCE *pis = (MADT_INTERRUPT_SOURCE *)entry; printf("\tPlatform interrupt entry\n"); printf("\t\tPolarity=%d, TriggerMode=%d, Id=0x%x, " "Eid=0x%x, Vector=0x%x, Irq=%d\n", pis->Polarity, pis->TriggerMode, pis->ProcessorId, - pis->ProcessorEid, pis->IoSapicVector, - pis->GlobalSystemInterrupt); + pis->ProcessorEid, pis->IoSapicVector, pis->Interrupt); break; } - case APIC_PROC: + case APIC_PROCESSOR: printf("\tLocal APIC entry\n"); break; @@ -116,7 +112,7 @@ ia64_probe_sapics(void) { ACPI_POINTER rsdp_ptr; APIC_HEADER *entry; - APIC_TABLE *table; + MULTIPLE_APIC_TABLE *table; RSDP_DESCRIPTOR *rsdp; XSDT_DESCRIPTOR *xsdt; char *end, *p; @@ -128,21 +124,19 @@ ia64_probe_sapics(void) rsdp = (RSDP_DESCRIPTOR *)IA64_PHYS_TO_RR7(rsdp_ptr.Pointer.Physical); xsdt = (XSDT_DESCRIPTOR *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress); - tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) - + tables = (UINT64 *)((char *)xsdt + xsdt->Length) - xsdt->TableOffsetEntry; for (t = 0; t < tables; t++) { - table = (APIC_TABLE *) + table = (MULTIPLE_APIC_TABLE *) IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]); if (bootverbose) printf("Table '%c%c%c%c' at %p\n", - table->Header.Signature[0], - table->Header.Signature[1], - table->Header.Signature[2], - table->Header.Signature[3], table); + table->Signature[0], table->Signature[1], + table->Signature[2], table->Signature[3], table); - if (strncmp(table->Header.Signature, APIC_SIG, 4) != 0) + if (strncmp(table->Signature, APIC_SIG, 4) != 0) continue; /* Save the address of the processor interrupt block. */ @@ -151,7 +145,7 @@ ia64_probe_sapics(void) table->LocalApicAddress); ia64_lapic_address = table->LocalApicAddress; - end = (char *)table + table->Header.Length; + end = (char *)table + table->Length; p = (char *)(table + 1); while (p < end) { entry = (APIC_HEADER *)p; @@ -161,21 +155,23 @@ ia64_probe_sapics(void) switch (entry->Type) { case APIC_IO_SAPIC: { - IO_SAPIC *sapic = (IO_SAPIC *)entry; - sapic_create(sapic->IoSapicId, sapic->Vector, - sapic->IoSapicAddress); + MADT_IO_SAPIC *sapic = (MADT_IO_SAPIC *)entry; + sapic_create(sapic->IoSapicId, + sapic->InterruptBase, sapic->Address); break; } - case APIC_LOCAL_APIC_OVERRIDE: { - LAPIC_OVERRIDE *lapic = (LAPIC_OVERRIDE*)entry; - ia64_lapic_address = lapic->LocalApicAddress; + case APIC_ADDRESS_OVERRIDE: { + MADT_ADDRESS_OVERRIDE *lapic = + (MADT_ADDRESS_OVERRIDE*)entry; + ia64_lapic_address = lapic->Address; break; } #ifdef SMP case APIC_LOCAL_SAPIC: { - LOCAL_SAPIC *sapic = (LOCAL_SAPIC *)entry; + MADT_LOCAL_SAPIC *sapic = + (MADT_LOCAL_SAPIC *)entry; if (sapic->ProcessorEnabled) cpu_mp_add(sapic->ProcessorId, sapic->LocalSapicId, @@ -201,8 +197,8 @@ int ia64_count_cpus(void) { ACPI_POINTER rsdp_ptr; - APIC_TABLE *table; - LOCAL_SAPIC *entry; + MULTIPLE_APIC_TABLE *table; + MADT_LOCAL_SAPIC *entry; RSDP_DESCRIPTOR *rsdp; XSDT_DESCRIPTOR *xsdt; char *end, *p; @@ -214,28 +210,28 @@ ia64_count_cpus(void) rsdp = (RSDP_DESCRIPTOR *)IA64_PHYS_TO_RR7(rsdp_ptr.Pointer.Physical); xsdt = (XSDT_DESCRIPTOR *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress); - tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) - + tables = (UINT64 *)((char *)xsdt + xsdt->Length) - xsdt->TableOffsetEntry; cpus = 0; for (t = 0; t < tables; t++) { - table = (APIC_TABLE *) + table = (MULTIPLE_APIC_TABLE *) IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]); - if (strncmp(table->Header.Signature, APIC_SIG, 4) != 0) + if (strncmp(table->Signature, APIC_SIG, 4) != 0) continue; - end = (char *)table + table->Header.Length; + end = (char *)table + table->Length; p = (char *)(table + 1); while (p < end) { - entry = (LOCAL_SAPIC *)p; + entry = (MADT_LOCAL_SAPIC *)p; - if (entry->Header.Type == APIC_LOCAL_SAPIC && + if (entry->Type == APIC_LOCAL_SAPIC && entry->ProcessorEnabled) cpus++; - p += entry->Header.Length; + p += entry->Length; } } |