Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[pandora-kernel.git] / arch / x86 / kernel / acpi / boot.c
index 71232b9..ec881c6 100644 (file)
@@ -198,6 +198,11 @@ static void __cpuinit acpi_register_lapic(int id, u8 enabled)
 {
        unsigned int ver = 0;
 
+       if (id >= (MAX_LOCAL_APIC-1)) {
+               printk(KERN_INFO PREFIX "skipped apicid that is too big\n");
+               return;
+       }
+
        if (!enabled) {
                ++disabled_cpus;
                return;
@@ -847,18 +852,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table)
  * returns 0 on success, < 0 on error
  */
 
-static void __init acpi_register_lapic_address(unsigned long address)
-{
-       mp_lapic_addr = address;
-
-       set_fixmap_nocache(FIX_APIC_BASE, address);
-       if (boot_cpu_physical_apicid == -1U) {
-               boot_cpu_physical_apicid  = read_apic_id();
-               apic_version[boot_cpu_physical_apicid] =
-                        GET_APIC_VERSION(apic_read(APIC_LVR));
-       }
-}
-
 static int __init early_acpi_parse_madt_lapic_addr_ovr(void)
 {
        int count;
@@ -880,7 +873,7 @@ static int __init early_acpi_parse_madt_lapic_addr_ovr(void)
                return count;
        }
 
-       acpi_register_lapic_address(acpi_lapic_addr);
+       register_lapic_address(acpi_lapic_addr);
 
        return count;
 }
@@ -907,16 +900,16 @@ static int __init acpi_parse_madt_lapic_entries(void)
                return count;
        }
 
-       acpi_register_lapic_address(acpi_lapic_addr);
+       register_lapic_address(acpi_lapic_addr);
 
        count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
-                                     acpi_parse_sapic, MAX_APICS);
+                                     acpi_parse_sapic, MAX_LOCAL_APIC);
 
        if (!count) {
                x2count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_X2APIC,
-                                               acpi_parse_x2apic, MAX_APICS);
+                                       acpi_parse_x2apic, MAX_LOCAL_APIC);
                count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC,
-                                             acpi_parse_lapic, MAX_APICS);
+                                       acpi_parse_lapic, MAX_LOCAL_APIC);
        }
        if (!count && !x2count) {
                printk(KERN_ERR PREFIX "No LAPIC entries present\n");
@@ -949,32 +942,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
 extern int es7000_plat;
 #endif
 
-static void assign_to_mp_irq(struct mpc_intsrc *m,
-                                   struct mpc_intsrc *mp_irq)
-{
-       memcpy(mp_irq, m, sizeof(struct mpc_intsrc));
-}
-
-static int mp_irq_cmp(struct mpc_intsrc *mp_irq,
-                               struct mpc_intsrc *m)
-{
-       return memcmp(mp_irq, m, sizeof(struct mpc_intsrc));
-}
-
-static void save_mp_irq(struct mpc_intsrc *m)
-{
-       int i;
-
-       for (i = 0; i < mp_irq_entries; i++) {
-               if (!mp_irq_cmp(&mp_irqs[i], m))
-                       return;
-       }
-
-       assign_to_mp_irq(m, &mp_irqs[mp_irq_entries]);
-       if (++mp_irq_entries == MAX_IRQ_SOURCES)
-               panic("Max # of irq sources exceeded!!\n");
-}
-
 void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi)
 {
        int ioapic;
@@ -1005,7 +972,7 @@ void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi)
        mp_irq.dstapic = mp_ioapics[ioapic].apicid; /* APIC ID */
        mp_irq.dstirq = pin;    /* INTIN# */
 
-       save_mp_irq(&mp_irq);
+       mp_save_irq(&mp_irq);
 
        isa_irq_to_gsi[bus_irq] = gsi;
 }
@@ -1080,7 +1047,7 @@ void __init mp_config_acpi_legacy_irqs(void)
                mp_irq.srcbusirq = i; /* Identity mapped */
                mp_irq.dstirq = pin;
 
-               save_mp_irq(&mp_irq);
+               mp_save_irq(&mp_irq);
        }
 }
 
@@ -1117,7 +1084,7 @@ static int mp_config_acpi_gsi(struct device *dev, u32 gsi, int trigger,
        mp_irq.dstapic = mp_ioapics[ioapic].apicid;
        mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
 
-       save_mp_irq(&mp_irq);
+       mp_save_irq(&mp_irq);
 #endif
        return 0;
 }