[haiku-commits] haiku: hrev53872 - src/system/kernel/arch/x86 headers/private/kernel/arch/x86

  • From: Jérôme Duval <jerome.duval@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 14 Feb 2020 09:25:49 -0500 (EST)

hrev53872 adds 1 changeset to branch 'master'
old head: 27fee67244859dd4e91c6a4deb16406cdc6994ba
new head: 1a836b9e04e9eb36f8ee95eeb0af0bbcc31c40e3
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=1a836b9e04e9+%5E27fee6724485

----------------------------------------------------------------------------

1a836b9e04e9: kernel: x86: add some more cpuid flags.
  
  Change-Id: If81c8e38c4e5a8347b5818440a7516298be585bc
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2242
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

                                   [ Jérôme Duval <jerome.duval@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev53872
Commit:      1a836b9e04e9eb36f8ee95eeb0af0bbcc31c40e3
URL:         https://git.haiku-os.org/haiku/commit/?id=1a836b9e04e9
Author:      Jérôme Duval <jerome.duval@xxxxxxxxx>
Date:        Wed Feb 12 16:43:21 2020 UTC

----------------------------------------------------------------------------

2 files changed, 19 insertions(+), 3 deletions(-)
headers/private/kernel/arch/x86/arch_cpu.h | 10 ++++++++--
src/system/kernel/arch/x86/arch_cpu.cpp    | 12 +++++++++++-

----------------------------------------------------------------------------

diff --git a/headers/private/kernel/arch/x86/arch_cpu.h 
b/headers/private/kernel/arch/x86/arch_cpu.h
index e4ea1e21fb..69d849da54 100644
--- a/headers/private/kernel/arch/x86/arch_cpu.h
+++ b/headers/private/kernel/arch/x86/arch_cpu.h
@@ -198,6 +198,7 @@
 #define IA32_FEATURE_AMD_EXT_NX                        (1 << 20) // no execute 
bit
 #define IA32_FEATURE_AMD_EXT_MMXEXT            (1 << 22) // mmx extensions
 #define IA32_FEATURE_AMD_EXT_FFXSR             (1 << 25) // fast FXSAVE/FXRSTOR
+#define IA32_FEATURE_AMD_EXT_PDPE1GB   (1 << 26) // Gibibyte pages
 #define IA32_FEATURE_AMD_EXT_RDTSCP            (1 << 27) // rdtscp instruction
 #define IA32_FEATURE_AMD_EXT_LONG              (1 << 29) // long mode
 #define IA32_FEATURE_AMD_EXT_3DNOWEXT  (1 << 30) // 3DNow! extensions
@@ -207,6 +208,7 @@
 // available on Intel processors
 #define IA32_FEATURES_INTEL_EXT                        
(IA32_FEATURE_AMD_EXT_SYSCALL           \
                                                                                
        | IA32_FEATURE_AMD_EXT_NX               \
+                                                                               
        | IA32_FEATURE_AMD_EXT_PDPE1GB  \
                                                                                
        | IA32_FEATURE_AMD_EXT_RDTSCP   \
                                                                                
        | IA32_FEATURE_AMD_EXT_LONG)
 
@@ -286,13 +288,17 @@
 #define IA32_FEATURE_STIBP                     (1 << 27)       // STIBP 
Speculation Control
 #define IA32_FEATURE_L1D_FLUSH         (1 << 28)       // L1D_FLUSH supported
 #define IA32_FEATURE_ARCH_CAPABILITIES (1 << 29)       // 
IA32_ARCH_CAPABILITIES MSR
-#define IA32_FEATURE_SSBD                      (1 << 30)       // Speculative 
Store Bypass Disable
+#define IA32_FEATURE_SSBD                      (1 << 31)       // Speculative 
Store Bypass Disable
 
 // x86 defined features from cpuid eax 0x80000007, edx register
 #define IA32_FEATURE_INVARIANT_TSC             (1 << 8)
 
 // x86 defined features from cpuid eax 0x80000008, ebx register
-#define IA32_FEATURE_AMD_EXT_IBPB      (1 << 12)       /* IBPB Support only 
(no IBRS) */
+#define IA32_FEATURE_CLZERO                    (1 << 0)        // CLZERO 
instruction
+#define IA32_FEATURE_IBPB                      (1 << 12)       // IBPB Support 
only (no IBRS)
+#define IA32_FEATURE_AMD_SSBD          (1 << 24)       // Speculative Store 
Bypass Disable
+#define IA32_FEATURE_VIRT_SSBD         (1 << 25)       // Virtualized 
Speculative Store Bypass Disable
+#define IA32_FEATURE_AMD_SSB_NO                (1 << 26)       // Speculative 
Store Bypass is fixed in hardware
 
 
 // Memory type ranges
diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp 
b/src/system/kernel/arch/x86/arch_cpu.cpp
index 653e43dd71..7f735b977d 100644
--- a/src/system/kernel/arch/x86/arch_cpu.cpp
+++ b/src/system/kernel/arch/x86/arch_cpu.cpp
@@ -462,6 +462,8 @@ dump_feature_string(int currentCPU, cpu_ent* cpu)
                strlcat(features, "mmxext ", sizeof(features));
        if (cpu->arch.feature[FEATURE_EXT_AMD] & IA32_FEATURE_AMD_EXT_FFXSR)
                strlcat(features, "ffxsr ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_EXT_AMD] & IA32_FEATURE_AMD_EXT_PDPE1GB)
+               strlcat(features, "pdpe1gb ", sizeof(features));
        if (cpu->arch.feature[FEATURE_EXT_AMD] & IA32_FEATURE_AMD_EXT_LONG)
                strlcat(features, "long ", sizeof(features));
        if (cpu->arch.feature[FEATURE_EXT_AMD] & IA32_FEATURE_AMD_EXT_3DNOWEXT)
@@ -552,8 +554,16 @@ dump_feature_string(int currentCPU, cpu_ent* cpu)
                strlcat(features, "msr_arch ", sizeof(features));
        if (cpu->arch.feature[FEATURE_7_EDX] & IA32_FEATURE_SSBD)
                strlcat(features, "ssbd ", sizeof(features));
-       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_AMD_EXT_IBPB)
+       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_CLZERO)
+               strlcat(features, "clzero ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_IBPB)
                strlcat(features, "ibpb ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_AMD_SSBD)
+               strlcat(features, "amd_ssbd ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_VIRT_SSBD)
+               strlcat(features, "virt_ssbd ", sizeof(features));
+       if (cpu->arch.feature[FEATURE_EXT_8_EBX] & IA32_FEATURE_AMD_SSB_NO)
+               strlcat(features, "amd_ssb_no ", sizeof(features));
        dprintf("CPU %d: features: %s\n", currentCPU, features);
 }
 #endif // DUMP_FEATURE_STRING


Other related posts:

  • » [haiku-commits] haiku: hrev53872 - src/system/kernel/arch/x86 headers/private/kernel/arch/x86 - Jérôme Duval