mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86: Add bit definitions for Automatic IBRS
This is an AMD feature to reduce the IBRS handling overhead. Once enabled, processes running at CPL=0 are automatically IBRS-protected even if SPEC_CTRL.IBRS is not set. Furthermore, the RAS/RSB is cleared on VMEXIT. The feature is exposed in CPUID and toggled in EFER. Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
05422d276b
commit
8347d6bb29
5 files changed
+5
No files matched your search
@@ -317,6 +317,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
|
||||
|
||||
{"lfence+", 0x80000021, NA, CPUID_REG_EAX, 2, 1},
|
||||
{"nscb", 0x80000021, NA, CPUID_REG_EAX, 6, 1},
|
||||
{"auto-ibrs", 0x80000021, NA, CPUID_REG_EAX, 8, 1},
|
||||
{"cpuid-user-dis", 0x80000021, NA, CPUID_REG_EAX, 17, 1},
|
||||
|
||||
{"maxhvleaf", 0x40000000, NA, CPUID_REG_EAX, 0, 8},
|
||||
|
||||
@@ -199,6 +199,7 @@ static const char *const str_e21a[32] =
|
||||
{
|
||||
[ 2] = "lfence+",
|
||||
[ 6] = "nscb",
|
||||
[ 8] = "auto-ibrs",
|
||||
|
||||
/* 16 */ [17] = "cpuid-user-dis",
|
||||
};
|
||||
|
||||
@@ -161,6 +161,7 @@ static inline bool boot_cpu_has(unsigned int feat)
|
||||
#define cpu_has_amd_ssbd boot_cpu_has(X86_FEATURE_AMD_SSBD)
|
||||
#define cpu_has_virt_ssbd boot_cpu_has(X86_FEATURE_VIRT_SSBD)
|
||||
#define cpu_has_ssb_no boot_cpu_has(X86_FEATURE_SSB_NO)
|
||||
#define cpu_has_auto_ibrs boot_cpu_has(X86_FEATURE_AUTO_IBRS)
|
||||
|
||||
/* CPUID level 0x00000007:0.edx */
|
||||
#define cpu_has_avx512_4vnniw boot_cpu_has(X86_FEATURE_AVX512_4VNNIW)
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
#define EFER_NXE (_AC(1, ULL) << 11) /* No Execute Enable */
|
||||
#define EFER_SVME (_AC(1, ULL) << 12) /* Secure Virtual Machine Enable */
|
||||
#define EFER_FFXSE (_AC(1, ULL) << 14) /* Fast FXSAVE/FXRSTOR */
|
||||
#define EFER_AIBRSE (_AC(1, ULL) << 21) /* Automatic IBRS Enable */
|
||||
|
||||
#define EFER_KNOWN_MASK \
|
||||
(EFER_SCE | EFER_LME | EFER_LMA | EFER_NXE | EFER_SVME | EFER_FFXSE)
|
||||
|
||||
@@ -287,6 +287,7 @@ XEN_CPUFEATURE(AVX_IFMA, 10*32+23) /*A AVX-IFMA Instructions */
|
||||
/* AMD-defined CPU features, CPUID level 0x80000021.eax, word 11 */
|
||||
XEN_CPUFEATURE(LFENCE_DISPATCH, 11*32+ 2) /*A LFENCE always serializing */
|
||||
XEN_CPUFEATURE(NSCB, 11*32+ 6) /*A Null Selector Clears Base (and limit too) */
|
||||
XEN_CPUFEATURE(AUTO_IBRS, 11*32+ 8) /* Automatic IBRS */
|
||||
XEN_CPUFEATURE(CPUID_USER_DIS, 11*32+17) /* CPUID disable for CPL > 0 software */
|
||||
|
||||
/* Intel-defined CPU features, CPUID level 0x00000007:1.ebx, word 12 */
|
||||
|
||||