Date: Thu, 10 Mar 2011 23:06:13 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r219469 - head/sys/x86/x86 Message-ID: <201103102306.p2AN6DOV058695@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201103102306.p2AN6DOV058695>