Author: jkim
Date: Thu Mar 10 23:06:13 2011
New Revision: 219469
URL: http://svn.freebsd.org/changeset/base/219469

Log:
  Turn off pointless P-state invariant TSC detection based on CPU model
  on a virtual machine.

Modified:
  head/sys/x86/x86/tsc.c

Modified: head/sys/x86/x86/tsc.c
==============================================================================
--- head/sys/x86/x86/tsc.c      Thu Mar 10 22:56:00 2011        (r219468)
+++ head/sys/x86/x86/tsc.c      Thu Mar 10 23:06:13 2011        (r219469)
@@ -105,20 +105,23 @@ init_TSC(void)
 
        switch (cpu_vendor_id) {
        case CPU_VENDOR_AMD:
-               if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
-                   CPUID_TO_FAMILY(cpu_id) >= 0x10)
+               if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 ||
+                   (vm_guest == VM_GUEST_NO &&
+                   CPUID_TO_FAMILY(cpu_id) >= 0x10))
                        tsc_is_invariant = 1;
                break;
        case CPU_VENDOR_INTEL:
-               if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
-                   (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
+               if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 ||
+                   (vm_guest == VM_GUEST_NO &&
+                   ((CPUID_TO_FAMILY(cpu_id) == 0x6 &&
                    CPUID_TO_MODEL(cpu_id) >= 0xe) ||
                    (CPUID_TO_FAMILY(cpu_id) == 0xf &&
-                   CPUID_TO_MODEL(cpu_id) >= 0x3))
+                   CPUID_TO_MODEL(cpu_id) >= 0x3))))
                        tsc_is_invariant = 1;
                break;
        case CPU_VENDOR_CENTAUR:
-               if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
+               if (vm_guest == VM_GUEST_NO &&
+                   CPUID_TO_FAMILY(cpu_id) == 0x6 &&
                    CPUID_TO_MODEL(cpu_id) >= 0xf &&
                    (rdmsr(0x1203) & 0x100000000ULL) == 0)
                        tsc_is_invariant = 1;
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to