Module Name:    src
Committed By:   martin
Date:           Wed Jun 21 19:04:19 UTC 2023

Modified Files:
        src/sys/arch/x86/include [netbsd-9]: specialreg.h
        src/usr.sbin/cpuctl/arch [netbsd-9]: i386.c

Log Message:
Pull up following revision(s) (requested by msaitoh in ticket #1646):

        sys/arch/x86/include/specialreg.h: revision 1.202
        sys/arch/x86/include/specialreg.h: revision 1.203
        usr.sbin/cpuctl/arch/i386.c: revision 1.136

Add some CPUID bits from PPR for AMD Family 19h Model 61h Revision B1.

Add AMD CPUID Fn0000_0008 %ebx bit 3 INVLPGB.


To generate a diff of this commit:
cvs rdiff -u -r1.150.2.12 -r1.150.2.13 src/sys/arch/x86/include/specialreg.h
cvs rdiff -u -r1.104.2.12 -r1.104.2.13 src/usr.sbin/cpuctl/arch/i386.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/include/specialreg.h
diff -u src/sys/arch/x86/include/specialreg.h:1.150.2.12 src/sys/arch/x86/include/specialreg.h:1.150.2.13
--- src/sys/arch/x86/include/specialreg.h:1.150.2.12	Mon Jan 23 13:00:53 2023
+++ src/sys/arch/x86/include/specialreg.h	Wed Jun 21 19:04:19 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: specialreg.h,v 1.150.2.12 2023/01/23 13:00:53 martin Exp $	*/
+/*	$NetBSD: specialreg.h,v 1.150.2.13 2023/06/21 19:04:19 martin Exp $	*/
 
 /*
  * Copyright (c) 2014-2020 The NetBSD Foundation, Inc.
@@ -868,6 +868,7 @@
 #define CPUID_CAPEX_CLZERO	   __BIT(0)  /* CLZERO instruction */
 #define CPUID_CAPEX_IRPERF	   __BIT(1)  /* InstRetCntMsr */
 #define CPUID_CAPEX_XSAVEERPTR	   __BIT(2)  /* RstrFpErrPtrs by XRSTOR */
+#define CPUID_CAPEX_INVLPGB	   __BIT(3)  /* INVLPGB instruction */
 #define CPUID_CAPEX_RDPRU	   __BIT(4)  /* RDPRU instruction */
 #define CPUID_CAPEX_MBE		   __BIT(6)  /* Memory Bandwidth Enforcement */
 #define CPUID_CAPEX_MCOMMIT	   __BIT(8)  /* MCOMMIT instruction */
@@ -890,7 +891,7 @@
 #define CPUID_CAPEX_BTC_NO	   __BIT(29) /* Branch Type Confusion NO */
 
 #define CPUID_CAPEX_FLAGS	"\20"					   \
-	"\1CLZERO"	"\2IRPERF"	"\3XSAVEERPTR"			   \
+	"\1CLZERO"	"\2IRPERF"	"\3XSAVEERPTR"	"\4INVLPGB"	   \
 	"\5RDPRU"			"\7MBE"				   \
 	"\11MCOMMIT"	"\12WBNOINVD"	"\13B10"			   \
 	"\15IBPB"	"\16INT_WBINVD"	"\17IBRS"	"\20STIBP"	   \
@@ -936,6 +937,9 @@
 #define CPUID_AMD_SVM_TLBICTL	      __BIT(24) /* TLB Intercept Control */
 #define CPUID_AMD_SVM_VNMI	      __BIT(25) /* NMI Virtualization */
 #define CPUID_AMD_SVM_IBSVIRT	      __BIT(26) /* IBS Virtualization */
+#define CPUID_AMD_SVM_XLVTOFFFLTCHG   __BIT(27) /* Ext LVToffset FLT changed */
+#define CPUID_AMD_SVM_VMCBADRCHKCHG   __BIT(28) /* VMCB addr check changed */
+
 
 #define CPUID_AMD_SVM_FLAGS	 "\20"					\
 	"\1" "NP"	"\2" "LbrVirt"	"\3" "SVML"	"\4" "NRIPS"	\
@@ -946,8 +950,8 @@
 						"\20" "V_VMSAVE_VMLOAD"	\
 	"\21" "VGIF"	"\22" "GMET"	"\23x2AVIC"	"\24SSSCHECK"	\
 	"\25" "SPEC_CTRL" "\26" "ROGPT"		"\30HOST_MCE_OVERRIDE"	\
-	"\31" "TLBICTL"	"\32VNMI"	"\33IBSVIRT"	"\34B27"	\
-	"\35B28"
+	"\31" "TLBICTL"	"\32VNMI" "\33IBSVIRT" "\34ExtLvtOffsetFaultChg" \
+	"\35VmcbAddrChkChg"
 
 /*
  * AMD Instruction-Based Sampling Capabilities.
@@ -1050,21 +1054,26 @@
 
 /* %eax */
 #define CPUID_AMDEXT2_NONESTEDDBP __BIT(0) /* No nested data breakpoints */
+#define CPUID_AMDEXT2_FGKBNOSERIAL __BIT(1) /* {FS,GS,K}BASE WRMSR !serializ */
 #define CPUID_AMDEXT2_LFENCESERIAL __BIT(2) /* LFENCE always serializing */
 #define CPUID_AMDEXT2_SMMPGCFGLCK __BIT(3) /* SMM Paging configuration lock */
 #define CPUID_AMDEXT2_NULLSELCLRB __BIT(6) /* Null segment selector clr base */
 #define CPUID_AMDEXT2_UPADDRIGN	  __BIT(7) /* Upper Address Ignore */
 #define CPUID_AMDEXT2_AUTOIBRS	  __BIT(8) /* Automatic IBRS */
 #define CPUID_AMDEXT2_NOSMMCTL	  __BIT(9) /* SMM_CTL MSR is not supported */
+#define CPUID_AMDEXT2_FSRS	  __BIT(10) /* Fast Short Rep Stosb */
+#define CPUID_AMDEXT2_FSRC	  __BIT(11) /* Fast Short Rep Cmpsb */
 #define CPUID_AMDEXT2_PREFETCHCTL __BIT(13) /* Prefetch control MSR */
 #define CPUID_AMDEXT2_CPUIDUSRDIS __BIT(17) /* CPUID dis. for non-priv. soft */
+#define CPUID_AMDEXT2_EPSF	  __BIT(18) /* Enhanced Predective Store Fwd */
 
 #define CPUID_AMDEXT2_FLAGS	 "\20"					      \
-	"\1NoNestedDataBp"	"\3LfenceAlwaysSerialize" "\4SmmPgCfgLock"    \
+	"\1NoNestedDataBp" "\2FsGsKernelGsBaseNonSerializing"		      \
+				"\3LfenceAlwaysSerialize" "\4SmmPgCfgLock"    \
 			     "\7NullSelectClearsBase" "\10UpperAddressIgnore" \
-	"\11AutomaticIBRS" "\12NoSmmCtlMSR"				      \
+	"\11AutomaticIBRS" "\12NoSmmCtlMSR"	"\13FSRS"	"\14FSRC"     \
 			"\16PrefetchCtlMSR"				      \
-			"\22CpuidUserDis"
+			"\22CpuidUserDis"	"\23EPSF"
 
 /*
  * AMD Extended Performance Monitoring and Debug
@@ -1082,7 +1091,8 @@
 /* %ebx */
 #define CPUID_AXPERF_NCPC      __BITS(3, 0)	/* Num of Core PMC counters */
 #define CPUID_AXPERF_NLBRSTACK __BITS(9, 4)	/* Num of LBR Stack entries */
-#define CPUID_AXPERF_NNBPC     __BITS(15, 10)	/* Num of Northbridge PMC */
+#define CPUID_AXPERF_NNBPC     __BITS(15, 10)	/* Num of NorthBridge PMCs */
+#define CPUID_AXPERF_NUMCPC    __BITS(21, 16)	/* Num of UMC PMCs */
 
 /*
  * Centaur Extended Feature flags.

Index: src/usr.sbin/cpuctl/arch/i386.c
diff -u src/usr.sbin/cpuctl/arch/i386.c:1.104.2.12 src/usr.sbin/cpuctl/arch/i386.c:1.104.2.13
--- src/usr.sbin/cpuctl/arch/i386.c:1.104.2.12	Mon Jan 23 13:04:11 2023
+++ src/usr.sbin/cpuctl/arch/i386.c	Wed Jun 21 19:04:19 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: i386.c,v 1.104.2.12 2023/01/23 13:04:11 martin Exp $	*/
+/*	$NetBSD: i386.c,v 1.104.2.13 2023/06/21 19:04:19 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: i386.c,v 1.104.2.12 2023/01/23 13:04:11 martin Exp $");
+__RCSID("$NetBSD: i386.c,v 1.104.2.13 2023/06/21 19:04:19 martin Exp $");
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -2274,7 +2274,7 @@ identifycpu(int fd, const char *cpuname)
 			    CPUID_AMD_ENCMEM_FLAGS, descs[0]);
 		}
 		if (ci->ci_max_ext_cpuid >= 0x80000022) {
-			uint8_t ncore, nnb, nlbrs;
+			uint8_t ncore, nnb, numc, nlbrs;
 
 			x86_cpuid(0x80000022, descs);
 			print_bits(cpuname, "Perfmon:",
@@ -2282,10 +2282,11 @@ identifycpu(int fd, const char *cpuname)
 
 			ncore = __SHIFTOUT(descs[1], CPUID_AXPERF_NCPC);
 			nnb = __SHIFTOUT(descs[1], CPUID_AXPERF_NNBPC);
+			numc = __SHIFTOUT(descs[1], CPUID_AXPERF_NUMCPC);
 			nlbrs = __SHIFTOUT(descs[1], CPUID_AXPERF_NLBRSTACK);
 			aprint_verbose("%s: Perfmon: counters: "
-			    "Core %hhu, Northbridge %hhu\n", cpuname,
-			    ncore, nnb);
+			    "Core %hhu, Northbridge %hhu, UMC %hhu\n", cpuname,
+			    ncore, nnb, numc);
 			aprint_verbose("%s: Perfmon: LBR Stack %hhu entries\n",
 			    cpuname, nlbrs);
 		}

Reply via email to