]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/sev: Allow IBPB-on-Entry feature for SNP guests
authorKim Phillips <kim.phillips@amd.com>
Tue, 3 Feb 2026 22:24:03 +0000 (16:24 -0600)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 2 Mar 2026 10:08:59 +0000 (11:08 +0100)
The SEV-SNP IBPB-on-Entry feature does not require a guest-side
implementation. It was added in Zen5 h/w, after the first SNP Zen
implementation, and thus was not accounted for when the initial set of SNP
features were added to the kernel.

In its abundant precaution, commit

  8c29f0165405 ("x86/sev: Add SEV-SNP guest feature negotiation support")

included SEV_STATUS' IBPB-on-Entry bit as a reserved bit, thereby masking
guests from using the feature.

Allow guests to make use of IBPB-on-Entry when supported by the hypervisor, as
the bit is now architecturally defined and safe to expose.

Fixes: 8c29f0165405 ("x86/sev: Add SEV-SNP guest feature negotiation support")
Signed-off-by: Kim Phillips <kim.phillips@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Nikunj A Dadhania <nikunj@amd.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Cc: stable@kernel.org
Link: https://patch.msgid.link/20260203222405.4065706-2-kim.phillips@amd.com
arch/x86/boot/compressed/sev.c
arch/x86/coco/sev/core.c
arch/x86/include/asm/msr-index.h

index 46b54720d91d854a7cca94c055758d7520e74c8e..e468476e9e4a0749e5987a666aaf174ffd341a7b 100644 (file)
@@ -188,6 +188,7 @@ bool sev_es_check_ghcb_fault(unsigned long address)
                                 MSR_AMD64_SNP_RESERVED_BIT13 |         \
                                 MSR_AMD64_SNP_RESERVED_BIT15 |         \
                                 MSR_AMD64_SNP_SECURE_AVIC |            \
+                                MSR_AMD64_SNP_RESERVED_BITS19_22 |     \
                                 MSR_AMD64_SNP_RESERVED_MASK)
 
 #ifdef CONFIG_AMD_SECURE_AVIC
index 907981b94c4018c81822d6903ea3f82636a46119..7ed3da998489d9e08afb84f540aecd1ef7300008 100644 (file)
@@ -89,6 +89,7 @@ static const char * const sev_status_feat_names[] = {
        [MSR_AMD64_SNP_VMSA_REG_PROT_BIT]       = "VMSARegProt",
        [MSR_AMD64_SNP_SMT_PROT_BIT]            = "SMTProt",
        [MSR_AMD64_SNP_SECURE_AVIC_BIT]         = "SecureAVIC",
+       [MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT]       = "IBPBOnEntry",
 };
 
 /*
index da5275d8eda63e196ce2604a679aecfc7b2870d6..6673601246b382e6989fd0a9a5123a0c695d185a 100644 (file)
 #define MSR_AMD64_SNP_SMT_PROT         BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT)
 #define MSR_AMD64_SNP_SECURE_AVIC_BIT  18
 #define MSR_AMD64_SNP_SECURE_AVIC      BIT_ULL(MSR_AMD64_SNP_SECURE_AVIC_BIT)
-#define MSR_AMD64_SNP_RESV_BIT         19
+#define MSR_AMD64_SNP_RESERVED_BITS19_22 GENMASK_ULL(22, 19)
+#define MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT        23
+#define MSR_AMD64_SNP_IBPB_ON_ENTRY    BIT_ULL(MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT)
+#define MSR_AMD64_SNP_RESV_BIT         24
 #define MSR_AMD64_SNP_RESERVED_MASK    GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT)
 #define MSR_AMD64_SAVIC_CONTROL                0xc0010138
 #define MSR_AMD64_SAVIC_EN_BIT         0