- Update to 3.3-rc2.
[linux-flexiantxendom0-3.2.10.git] / arch / x86 / kernel / acpi / boot.c
index 6c86282..1b9b052 100644 (file)
@@ -70,7 +70,6 @@ int acpi_strict;
 
 u8 acpi_sci_flags __initdata;
 int acpi_sci_override_gsi __initdata;
-#ifndef CONFIG_XEN
 int acpi_skip_timer_override __initdata;
 int acpi_use_timer_override __initdata;
 int acpi_fix_pin2_polarity __initdata;
@@ -78,10 +77,6 @@ int acpi_fix_pin2_polarity __initdata;
 #ifdef CONFIG_X86_LOCAL_APIC
 static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
 #endif
-#else
-#define acpi_skip_timer_override 0
-#define acpi_fix_pin2_polarity 0
-#endif
 
 #ifndef __HAVE_ARCH_CMPXCHG
 #warning ACPI uses CMPXCHG, i486 and later hardware
@@ -187,7 +182,6 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
                return -ENODEV;
        }
 
-#ifndef CONFIG_XEN
        if (madt->address) {
                acpi_lapic_addr = (u64) madt->address;
 
@@ -197,14 +191,12 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
 
        default_acpi_madt_oem_check(madt->header.oem_id,
                                    madt->header.oem_table_id);
-#endif
 
        return 0;
 }
 
 static void __cpuinit acpi_register_lapic(int id, u8 enabled)
 {
-#ifndef CONFIG_XEN
        unsigned int ver = 0;
 
        if (id >= (MAX_LOCAL_APIC-1)) {
@@ -221,13 +213,14 @@ static void __cpuinit acpi_register_lapic(int id, u8 enabled)
                ver = apic_version[boot_cpu_physical_apicid];
 
        generic_processor_info(id, ver);
-#endif
 }
 
 static int __init
 acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
 {
        struct acpi_madt_local_x2apic *processor = NULL;
+       int apic_id;
+       u8 enabled;
 
        processor = (struct acpi_madt_local_x2apic *)header;
 
@@ -236,6 +229,8 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
 
        acpi_table_print_madt_entry(header);
 
+       apic_id = processor->local_apic_id;
+       enabled = processor->lapic_flags & ACPI_MADT_ENABLED;
 #ifdef CONFIG_X86_X2APIC
        /*
         * We need to register disabled CPU as well to permit
@@ -244,8 +239,10 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
         * to not preallocating memory for all NR_CPUS
         * when we use CPU hotplug.
         */
-       acpi_register_lapic(processor->local_apic_id,   /* APIC ID */
-                           processor->lapic_flags & ACPI_MADT_ENABLED);
+       if (!cpu_has_x2apic && (apic_id >= 0xff) && enabled)
+               printk(KERN_WARNING PREFIX "x2apic entry ignored\n");
+       else
+               acpi_register_lapic(apic_id, enabled);
 #else
        printk(KERN_WARNING PREFIX "x2apic entry ignored\n");
 #endif
@@ -300,7 +297,6 @@ static int __init
 acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header,
                          const unsigned long end)
 {
-#ifndef CONFIG_XEN
        struct acpi_madt_local_apic_override *lapic_addr_ovr = NULL;
 
        lapic_addr_ovr = (struct acpi_madt_local_apic_override *)header;
@@ -309,7 +305,6 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header,
                return -EINVAL;
 
        acpi_lapic_addr = lapic_addr_ovr->address;
-#endif
 
        return 0;
 }
@@ -598,7 +593,6 @@ void __init acpi_set_irq_model_ioapic(void)
 #ifdef CONFIG_ACPI_HOTPLUG_CPU
 #include <acpi/processor.h>
 
-#ifndef CONFIG_XEN
 static void acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
 {
 #ifdef CONFIG_ACPI_NUMA
@@ -684,9 +678,6 @@ free_tmp_map:
 out:
        return retval;
 }
-#else
-#define _acpi_map_lsapic(h, p) (-EINVAL)
-#endif
 
 /* wrapper to silence section mismatch warning */
 int __ref acpi_map_lsapic(acpi_handle handle, int *pcpu)
@@ -697,11 +688,9 @@ EXPORT_SYMBOL(acpi_map_lsapic);
 
 int acpi_unmap_lsapic(int cpu)
 {
-#ifndef CONFIG_XEN
        per_cpu(x86_cpu_to_apicid, cpu) = -1;
        set_cpu_present(cpu, false);
        num_processors--;
-#endif
 
        return (0);
 }
@@ -1343,7 +1332,6 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
        return 0;
 }
 
-#ifndef CONFIG_XEN
 /*
  * Force ignoring BIOS IRQ0 pin2 override
  */
@@ -1361,7 +1349,6 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
        }
        return 0;
 }
-#endif
 
 static int __init force_acpi_rsdt(const struct dmi_system_id *d)
 {
@@ -1482,7 +1469,6 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
        {}
 };
 
-#ifndef CONFIG_XEN
 /* second table for DMI checks that should run after early-quirks */
 static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
        /*
@@ -1529,7 +1515,6 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
         },
        {}
 };
-#endif
 
 /*
  * acpi_boot_table_init() and acpi_boot_init()
@@ -1602,10 +1587,8 @@ int __init early_acpi_boot_init(void)
 
 int __init acpi_boot_init(void)
 {
-#ifndef CONFIG_XEN
        /* those are executed after early-quirks are executed */
        dmi_check_system(acpi_dmi_table_late);
-#endif
 
        /*
         * If acpi_disabled, bail out
@@ -1705,7 +1688,7 @@ int __init acpi_mps_check(void)
        return 0;
 }
 
-#if defined(CONFIG_X86_IO_APIC) && !defined(CONFIG_XEN)
+#ifdef CONFIG_X86_IO_APIC
 static int __init parse_acpi_skip_timer_override(char *arg)
 {
        acpi_skip_timer_override = 1;