]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/apic: Allow NMI to be injected from hypervisor for Secure AVIC
authorNeeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Thu, 28 Aug 2025 11:12:43 +0000 (16:42 +0530)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 1 Sep 2025 10:57:18 +0000 (12:57 +0200)
Secure AVIC requires the "AllowedNmi" bit in the Secure AVIC Control MSR to be
set for an NMI to be injected from the hypervisor. So set it.

Signed-off-by: Kishon Vijay Abraham I <kvijayab@amd.com>
Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tianyu Lan <tiala@microsoft.com>
Link: https://lore.kernel.org/20250828111243.208946-1-Neeraj.Upadhyay@amd.com
arch/x86/include/asm/msr-index.h
arch/x86/kernel/apic/x2apic_savic.c

index 2a6d4fd8659a222394bb27af4a67f0da94eb709b..1291e053e40c24cdf31a3559172ab6e2d2f23780 100644 (file)
 #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_MASK    GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT)
+#define MSR_AMD64_SAVIC_CONTROL                0xc0010138
+#define MSR_AMD64_SAVIC_ALLOWEDNMI_BIT 1
+#define MSR_AMD64_SAVIC_ALLOWEDNMI     BIT_ULL(MSR_AMD64_SAVIC_ALLOWEDNMI_BIT)
 #define MSR_AMD64_RMP_BASE             0xc0010132
 #define MSR_AMD64_RMP_END              0xc0010133
 #define MSR_AMD64_RMP_CFG              0xc0010136
index 8ed56e87c32f6fda2b2591068ed2789fab519016..bbaedb48a7fbbbe11cf7ad0885895bc779d241a6 100644 (file)
@@ -328,6 +328,8 @@ static void savic_setup(void)
        res = savic_register_gpa(gpa);
        if (res != ES_OK)
                snp_abort();
+
+       native_wrmsrq(MSR_AMD64_SAVIC_CONTROL, gpa | MSR_AMD64_SAVIC_ALLOWEDNMI);
 }
 
 static int savic_probe(void)