ChangeSet 1.1447, 2005/05/06 10:51:46+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx
Xen can parse the ACPI tables to get IOAPIC information -- we can rely
on domain0 to fill in information we miss because Xen lacks an ACPI
interpreter.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
acpi.c | 12 ++++++++++--
mpparse.c | 4 ++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff -Nru a/xen/arch/x86/acpi.c b/xen/arch/x86/acpi.c
--- a/xen/arch/x86/acpi.c 2005-05-06 06:06:21 -04:00
+++ b/xen/arch/x86/acpi.c 2005-05-06 06:06:21 -04:00
@@ -189,7 +189,7 @@
#endif /*CONFIG_X86_LOCAL_APIC*/
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
+#if defined(CONFIG_X86_IO_APIC) /*&& defined(CONFIG_ACPI_INTERPRETER)*/
static int __init
acpi_parse_ioapic (
@@ -211,6 +211,7 @@
return 0;
}
+#ifdef CONFIG_ACPI_INTERPRETER
/*
* Parse Interrupt Source Override for the ACPI SCI
*/
@@ -244,6 +245,7 @@
acpi_sci_override_gsi = gsi;
return;
}
+#endif
static int __init
acpi_parse_fadt(unsigned long phys, unsigned long size)
@@ -277,11 +279,13 @@
acpi_table_print_madt_entry(header);
+#ifdef CONFIG_ACPI_INTERPRETER
if (intsrc->bus_irq == acpi_fadt.sci_int) {
acpi_sci_ioapic_setup(intsrc->global_irq,
intsrc->flags.polarity, intsrc->flags.trigger);
return 0;
}
+#endif
mp_override_legacy_irq (
intsrc->bus_irq,
@@ -460,13 +464,14 @@
#endif /*CONFIG_X86_LOCAL_APIC*/
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
+#if defined(CONFIG_X86_IO_APIC) /*&& defined(CONFIG_ACPI_INTERPRETER)*/
/*
* I/O APIC
* --------
*/
+#if 0
/*
* ACPI interpreter is required to complete interrupt setup,
* so if it is off, don't enumerate the io-apics with ACPI.
@@ -476,6 +481,7 @@
if (acpi_disabled || acpi_noirq) {
return 1;
}
+#endif
/*
* if "noapic" boot option, don't look for IO-APICs
@@ -510,12 +516,14 @@
return result;
}
+#ifdef CONFIG_ACPI_INTERPRETER
/*
* If BIOS did not supply an INT_SRC_OVR for the SCI
* pretend we got one so we can set the SCI flags.
*/
if (!acpi_sci_override_gsi)
acpi_sci_ioapic_setup(acpi_fadt.sci_int, 0, 0);
+#endif
result = acpi_table_parse_madt(ACPI_MADT_NMI_SRC, acpi_parse_nmi_src);
if (result < 0) {
diff -Nru a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
--- a/xen/arch/x86/mpparse.c 2005-05-06 06:06:21 -04:00
+++ b/xen/arch/x86/mpparse.c 2005-05-06 06:06:21 -04:00
@@ -1017,7 +1017,7 @@
MP_processor_info(&processor);
}
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
+#if defined(CONFIG_X86_IO_APIC) /*&& defined(CONFIG_ACPI_INTERPRETER)*/
#define MP_ISA_BUS 0
#define MP_MAX_IOAPIC_PIN 127
@@ -1085,7 +1085,7 @@
mp_ioapic_routing[idx].irq_end = irq_base +
io_apic_get_redir_entries(idx);
- printk("IOAPIC[%d]: apic_id %d, version %d, address 0x%lx, "
+ printk("IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
"IRQ %d-%d\n", idx, mp_ioapics[idx].mpc_apicid,
mp_ioapics[idx].mpc_apicver, mp_ioapics[idx].mpc_apicaddr,
mp_ioapic_routing[idx].irq_start,
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|