fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / i386 / mach-visws / mpparse.c
index dd1525a..f3c74fa 100644 (file)
@@ -1,5 +1,4 @@
 
-#include <linux/config.h>
 #include <linux/init.h>
 #include <linux/smp.h>
 
@@ -23,7 +22,6 @@ unsigned long mp_lapic_addr;
 
 /* Processor that is doing the boot up */
 unsigned int boot_cpu_physical_apicid = -1U;
-unsigned int boot_cpu_logical_apicid = -1U;
 
 /* Bitmask of physically existing CPUs */
 physid_mask_t phys_cpu_present_map;
@@ -36,7 +34,7 @@ unsigned int __initdata maxcpus = NR_CPUS;
  * No problem for Linux.
  */
 
-void __init MP_processor_info (struct mpc_config_processor *m)
+static void __init MP_processor_info (struct mpc_config_processor *m)
 {
        int ver, logical_apicid;
        physid_mask_t apic_cpus;
@@ -52,17 +50,15 @@ void __init MP_processor_info (struct mpc_config_processor *m)
                (m->mpc_cpufeature & CPU_MODEL_MASK) >> 4,
                m->mpc_apicver);
 
-       if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {
+       if (m->mpc_cpuflag & CPU_BOOTPROCESSOR)
                boot_cpu_physical_apicid = m->mpc_apicid;
-               boot_cpu_logical_apicid = logical_apicid;
-       }
 
-       if (m->mpc_apicid > MAX_APICS) {
+       ver = m->mpc_apicver;
+       if ((ver >= 0x14 && m->mpc_apicid >= 0xff) || m->mpc_apicid >= 0xf) {
                printk(KERN_ERR "Processor #%d INVALID. (Max ID: %d).\n",
                        m->mpc_apicid, MAX_APICS);
                return;
        }
-       ver = m->mpc_apicver;
 
        apic_cpus = apicid_to_cpu_present(m->mpc_apicid);
        physids_or(phys_cpu_present_map, phys_cpu_present_map, apic_cpus);