x86: apic_is_clustered_box to indicate unsynched TSC's on multiboard vSMP systems
authorRavikiran G Thirumalai <kiran@scalex86.org>
Thu, 20 Mar 2008 07:45:08 +0000 (00:45 -0700)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:08 +0000 (17:41 +0200)
Indicate TSCs are unreliable as time sources if the platform is
a multi chassi ScaleMP vSMPowered machine.

Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic_64.c

index 868ec1deb19ad00659f0f9fcab58151cb4888ff1..5362cfd30ecd5f06e5d11de9e6bfc776f56e6f5c 100644 (file)
@@ -1209,7 +1209,7 @@ __cpuinit int apic_is_clustered_box(void)
         * will be [4, 0x23] or [8, 0x27] could be thought to
         * vsmp box still need checking...
         */
-       if (!is_vsmp_box() && (boot_cpu_data.x86_vendor == X86_VENDOR_AMD))
+       if ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && !is_vsmp_box())
                return 0;
 
        bios_cpu_apicid = x86_bios_cpu_apicid_early_ptr;
@@ -1249,6 +1249,12 @@ __cpuinit int apic_is_clustered_box(void)
                        ++zeros;
        }
 
+       /* ScaleMP vSMPowered boxes have one cluster per board and TSCs are
+        * not guaranteed to be synced between boards
+        */
+       if (is_vsmp_box() && clusters > 1)
+               return 1;
+
        /*
         * If clusters > 2, then should be multi-chassis.
         * May have to revisit this when multi-core + hyperthreaded CPUs come