[PATCH] x86-64: Use largest APIC number, not number of CPUs to decide on physflat...
authorAndi Kleen <ak@suse.de>
Mon, 12 Sep 2005 16:49:24 +0000 (18:49 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 12 Sep 2005 17:49:55 +0000 (10:49 -0700)
Handles case where BIOS gives CPUs very large APIC numbers correctly.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/kernel/genapic.c

index b1c144f73149854da5e9bb277e4309e281b60ba3..f3159a496e39ca2c6136b6bae47c72ecb11d1371 100644 (file)
@@ -45,7 +45,7 @@ void __init clustered_apic_check(void)
        u8 clusters, max_cluster;
        u8 id;
        u8 cluster_cnt[NUM_APIC_CLUSTERS];
-       int num_cpus = 0;
+       int max_apic = 0;
 
 #if defined(CONFIG_ACPI)
        /*
@@ -64,7 +64,8 @@ void __init clustered_apic_check(void)
                id = bios_cpu_apicid[i];
                if (id == BAD_APICID)
                        continue;
-               num_cpus++;
+               if (id > max_apic)
+                       max_apic = id;
                cluster_cnt[APIC_CLUSTERID(id)]++;
        }
 
@@ -79,7 +80,7 @@ void __init clustered_apic_check(void)
                   we have ACPI platform support for CPU hotplug
                   we should detect hotplug capablity from ACPI tables and
                   only do this when really needed. -AK */
-               if (num_cpus <= 8)
+               if (max_apic <= 8)
                        genapic = &apic_flat;
 #endif
                goto print;