diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-01-21 12:53:15 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-01-21 12:55:31 +0000 |
commit | 9f47eeffa3cfdcb512e2011fb00fc23c7c1a7d75 (patch) | |
tree | a2fadcca75b0d4a5e41ea7657254b72f2c49053b | |
parent | f7d181543fd96a89b84878ddb2d5ac010fadd9b8 (diff) | |
download | src-9f47eeffa3cfdcb512e2011fb00fc23c7c1a7d75.tar.gz src-9f47eeffa3cfdcb512e2011fb00fc23c7c1a7d75.zip |
x86: switch kernel TSC timecounter to RDTSCP on AMD Zen CPUs
Reported by: many
Tested by: gallatin, mikael, rhurlin
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
-rw-r--r-- | sys/x86/x86/tsc.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/sys/x86/x86/tsc.c b/sys/x86/x86/tsc.c index 85924df98312..de0a1505c2f6 100644 --- a/sys/x86/x86/tsc.c +++ b/sys/x86/x86/tsc.c @@ -633,19 +633,12 @@ init: /* * Timecounter implementation selection, top to bottom: - * - For AMD Zens and newer, use LFENCE;RDTSC. * - If RDTSCP is available, use RDTSCP. * - If fence instructions are provided (SSE2), use LFENCE;RDTSC * on Intel, and MFENCE;RDTSC on AMD. * - For really old CPUs, just use RDTSC. */ - if ((cpu_vendor_id == CPU_VENDOR_AMD || - cpu_vendor_id == CPU_VENDOR_HYGON) && - CPUID_TO_FAMILY(cpu_id) >= 0x17) { - tsc_timecounter.tc_get_timecount = shift > 0 ? - tsc_get_timecount_low_lfence : - tsc_get_timecount_lfence; - } else if ((amd_feature & AMDID_RDTSCP) != 0) { + if ((amd_feature & AMDID_RDTSCP) != 0) { tsc_timecounter.tc_get_timecount = shift > 0 ? tscp_get_timecount_low : tscp_get_timecount; } else if ((cpu_feature & CPUID_SSE2) != 0 && mp_ncpus > 1) { |