git: 9f47eeffa3cf - main - x86: switch kernel TSC timecounter to RDTSCP on AMD Zen CPUs

Konstantin Belousov kib at FreeBSD.org
Thu Jan 21 12:58:09 UTC 2021


The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=9f47eeffa3cfdcb512e2011fb00fc23c7c1a7d75

commit 9f47eeffa3cfdcb512e2011fb00fc23c7c1a7d75
Author:     Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-01-21 12:53:15 +0000
Commit:     Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-01-21 12:55:31 +0000

    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
---
 sys/x86/x86/tsc.c | 9 +--------
 1 file changed, 1 insertion(+), 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) {


More information about the dev-commits-src-main mailing list