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;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to