svn commit: r328214 - in stable/11/sys/x86: include x86

Konstantin Belousov kib at FreeBSD.org
Sun Jan 21 10:38:40 UTC 2018


Author: kib
Date: Sun Jan 21 10:38:38 2018
New Revision: 328214
URL: https://svnweb.freebsd.org/changeset/base/328214

Log:
  MFC r323822 (by cem):
  x86: Decode AMD "Extended Feature Extensions ID EBX" bits.

Modified:
  stable/11/sys/x86/include/specialreg.h
  stable/11/sys/x86/include/x86_var.h
  stable/11/sys/x86/x86/identcpu.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/x86/include/specialreg.h
==============================================================================
--- stable/11/sys/x86/include/specialreg.h	Sun Jan 21 10:35:17 2018	(r328213)
+++ stable/11/sys/x86/include/specialreg.h	Sun Jan 21 10:38:38 2018	(r328214)
@@ -323,6 +323,13 @@
 #define	AMDPM_CPB		0x00000200
 
 /*
+ * AMD extended function 8000_0008h ebx info (amd_extended_feature_extensions)
+ */
+#define	AMDFEID_CLZERO		0x00000001
+#define	AMDFEID_IRPERF		0x00000002
+#define	AMDFEID_XSAVEERPTR	0x00000004
+
+/*
  * AMD extended function 8000_0008h ecx info
  */
 #define	AMDID_CMP_CORES		0x000000ff

Modified: stable/11/sys/x86/include/x86_var.h
==============================================================================
--- stable/11/sys/x86/include/x86_var.h	Sun Jan 21 10:35:17 2018	(r328213)
+++ stable/11/sys/x86/include/x86_var.h	Sun Jan 21 10:38:38 2018	(r328214)
@@ -45,6 +45,7 @@ extern	u_int	cpu_feature2;
 extern	u_int	amd_feature;
 extern	u_int	amd_feature2;
 extern	u_int	amd_pminfo;
+extern	u_int	amd_extended_feature_extensions;
 extern	u_int	via_feature_rng;
 extern	u_int	via_feature_xcrypt;
 extern	u_int	cpu_clflush_line_size;

Modified: stable/11/sys/x86/x86/identcpu.c
==============================================================================
--- stable/11/sys/x86/x86/identcpu.c	Sun Jan 21 10:35:17 2018	(r328213)
+++ stable/11/sys/x86/x86/identcpu.c	Sun Jan 21 10:38:38 2018	(r328214)
@@ -92,6 +92,7 @@ u_int	cpu_feature2;		/* Feature flags */
 u_int	amd_feature;		/* AMD feature flags */
 u_int	amd_feature2;		/* AMD feature flags */
 u_int	amd_pminfo;		/* AMD advanced power management info */
+u_int	amd_extended_feature_extensions;
 u_int	via_feature_rng;	/* VIA RNG features */
 u_int	via_feature_xcrypt;	/* VIA ACE features */
 u_int	cpu_high;		/* Highest arg to CPUID */
@@ -992,6 +993,16 @@ printcpuinfo(void)
 				}
 			}
 
+			if (amd_extended_feature_extensions != 0) {
+				printf("\n  "
+				    "AMD Extended Feature Extensions ID EBX="
+				    "0x%b", amd_extended_feature_extensions,
+				    "\020"
+				    "\001CLZERO"
+				    "\002IRPerf"
+				    "\003XSaveErPtr");
+			}
+
 			if (via_feature_rng != 0 || via_feature_xcrypt != 0)
 				print_via_padlock_info();
 
@@ -1473,6 +1484,7 @@ finishidentcpu(void)
 	if (cpu_exthigh >= 0x80000008) {
 		do_cpuid(0x80000008, regs);
 		cpu_maxphyaddr = regs[0] & 0xff;
+		amd_extended_feature_extensions = regs[1];
 		cpu_procinfo2 = regs[2];
 	} else {
 		cpu_maxphyaddr = (cpu_feature & CPUID_PAE) != 0 ? 36 : 32;


More information about the svn-src-stable-11 mailing list