From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: <linux-kernel@vger.kernel.org>
Cc: <bp@alien8.de>, <tglx@linutronix.de>, <mingo@redhat.com>,
<dave.hansen@linux.intel.com>, <Thomas.Lendacky@amd.com>,
<nikunj@amd.com>, <Santosh.Shukla@amd.com>,
<Vasant.Hegde@amd.com>, <Suravee.Suthikulpanit@amd.com>,
<David.Kaplan@amd.com>, <x86@kernel.org>, <hpa@zytor.com>,
<peterz@infradead.org>, <seanjc@google.com>,
<pbonzini@redhat.com>, <kvm@vger.kernel.org>,
<kirill.shutemov@linux.intel.com>, <huibo.wang@amd.com>,
<naveen.rao@amd.com>, <francescolavra.fl@gmail.com>,
<tiala@microsoft.com>
Subject: [RFC PATCH v7 30/37] x86/apic: Allow NMI to be injected from hypervisor for Secure AVIC
Date: Tue, 10 Jun 2025 23:24:17 +0530 [thread overview]
Message-ID: <20250610175424.209796-31-Neeraj.Upadhyay@amd.com> (raw)
In-Reply-To: <20250610175424.209796-1-Neeraj.Upadhyay@amd.com>
Secure AVIC requires "AllowedNmi" bit in the Secure AVIC Control MSR
to be set for NMI to be injected from hypervisor. Set "AllowedNmi"
bit in Secure AVIC Control MSR to allow NMI interrupts to be injected
from hypervisor.
Signed-off-by: Kishon Vijay Abraham I <kvijayab@amd.com>
Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
---
Changes since v6:
- No change.
arch/x86/include/asm/msr-index.h | 3 +++
arch/x86/kernel/apic/x2apic_savic.c | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index f617c8365f18..7ef1173ef15e 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -701,6 +701,9 @@
#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_SECURE_AVIC_CONTROL 0xc0010138
+#define MSR_AMD64_SECURE_AVIC_ALLOWEDNMI_BIT 1
+#define MSR_AMD64_SECURE_AVIC_ALLOWEDNMI BIT_ULL(MSR_AMD64_SECURE_AVIC_ALLOWEDNMI_BIT)
#define MSR_AMD64_RMP_BASE 0xc0010132
#define MSR_AMD64_RMP_END 0xc0010133
#define MSR_AMD64_RMP_CFG 0xc0010136
diff --git a/arch/x86/kernel/apic/x2apic_savic.c b/arch/x86/kernel/apic/x2apic_savic.c
index 66fa4b8d76ef..583b57636f21 100644
--- a/arch/x86/kernel/apic/x2apic_savic.c
+++ b/arch/x86/kernel/apic/x2apic_savic.c
@@ -19,6 +19,11 @@
static struct apic_page __percpu *apic_page __ro_after_init;
+static inline void savic_wr_control_msr(u64 val)
+{
+ native_wrmsr(MSR_AMD64_SECURE_AVIC_CONTROL, lower_32_bits(val), upper_32_bits(val));
+}
+
static int savic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
return x2apic_enabled() && cc_platform_has(CC_ATTR_SNP_SECURE_AVIC);
@@ -330,6 +335,7 @@ static void savic_setup(void)
res = savic_register_gpa(gpa);
if (res != ES_OK)
snp_abort();
+ savic_wr_control_msr(gpa | MSR_AMD64_SECURE_AVIC_ALLOWEDNMI);
}
static int savic_probe(void)
--
2.34.1
next prev parent reply other threads:[~2025-06-10 18:05 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 17:53 [RFC PATCH v7 00/37] AMD: Add Secure AVIC Guest Support Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 01/37] KVM: lapic: Remove __apic_test_and_{set|clear}_vector() Neeraj Upadhyay
2025-06-23 11:26 ` Borislav Petkov
2025-06-25 1:18 ` Neeraj Upadhyay
2025-06-25 12:53 ` Sean Christopherson
2025-06-10 17:53 ` [RFC PATCH v7 02/37] KVM: lapic: Remove redundant parentheses around 'bitmap' Neeraj Upadhyay
2025-06-23 11:41 ` Borislav Petkov
2025-06-25 1:19 ` Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 03/37] x86/apic: KVM: Deduplicate APIC vector => register+bit math Neeraj Upadhyay
2025-06-23 11:49 ` Borislav Petkov
2025-06-25 1:21 ` Neeraj Upadhyay
2025-06-25 12:59 ` Sean Christopherson
2025-06-10 17:53 ` [RFC PATCH v7 04/37] KVM: lapic: Rename VEC_POS/REG_POS macro usages Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 05/37] KVM: lapic: Change lapic regs base address to void pointer Neeraj Upadhyay
2025-07-01 15:47 ` Borislav Petkov
2025-06-10 17:53 ` [RFC PATCH v7 06/37] KVM: lapic: Rename find_highest_vector() Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 07/37] KVM: lapic: Rename lapic get/set_reg() helpers Neeraj Upadhyay
2025-06-25 13:56 ` Sean Christopherson
2025-06-10 17:53 ` [RFC PATCH v7 08/37] KVM: lapic: Rename lapic get/set_reg64() helpers Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 09/37] KVM: lapic: Rename lapic set/clear vector helpers Neeraj Upadhyay
2025-06-10 17:53 ` [RFC PATCH v7 10/37] KVM: lapic: Mark apic_find_highest_vector() inline Neeraj Upadhyay
2025-06-25 13:58 ` Sean Christopherson
2025-06-10 17:53 ` [RFC PATCH v7 11/37] x86/apic: KVM: Move apic_find_highest_vector() to a common header Neeraj Upadhyay
2025-06-25 13:59 ` Sean Christopherson
2025-06-10 17:53 ` [RFC PATCH v7 12/37] x86/apic: KVM: Move lapic get/set_reg() helpers to common code Neeraj Upadhyay
2025-06-25 14:03 ` Sean Christopherson
2025-06-10 17:54 ` [RFC PATCH v7 13/37] KVM: x86: Move lapic get/set_reg64() " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 14/37] KVM: x86: Move lapic set/clear_vector() " Neeraj Upadhyay
2025-06-25 14:04 ` Sean Christopherson
2025-06-10 17:54 ` [RFC PATCH v7 15/37] KVM: x86: apic_test_vector() " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 16/37] x86/apic: Rename 'reg_off' to 'reg' Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 17/37] x86/apic: Unionize apic regs for 32bit/64bit access w/o type casting Neeraj Upadhyay
2025-06-24 10:28 ` Huang, Kai
2025-06-25 1:15 ` Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 18/37] x86/apic: Simplify bitwise operations on apic bitmap Neeraj Upadhyay
2025-06-24 10:37 ` Huang, Kai
2025-06-25 1:18 ` Neeraj Upadhyay
2025-06-25 14:05 ` Sean Christopherson
2025-06-10 17:54 ` [RFC PATCH v7 19/37] x86/apic: Move apic_update_irq_cfg() calls to apic_update_vector() Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 20/37] x86/apic: Add new driver for Secure AVIC Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 21/37] x86/apic: Initialize Secure AVIC APIC backing page Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 22/37] x86/apic: Populate .read()/.write() callbacks of Secure AVIC driver Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 23/37] x86/apic: Initialize APIC ID for Secure AVIC Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 24/37] x86/apic: Add update_vector() callback for apic drivers Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 25/37] x86/apic: Add update_vector() callback for Secure AVIC Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 26/37] x86/apic: Add support to send IPI " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 27/37] x86/apic: Support LAPIC timer " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 28/37] x86/sev: Initialize VGIF for secondary VCPUs " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 29/37] x86/apic: Add support to send NMI IPI " Neeraj Upadhyay
2025-06-10 17:54 ` Neeraj Upadhyay [this message]
2025-06-10 17:54 ` [RFC PATCH v7 31/37] x86/sev: Enable NMI support " Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 32/37] x86/apic: Read and write LVT* APIC registers from HV for SAVIC guests Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 33/37] x86/apic: Handle EOI writes for Secure AVIC guests Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 34/37] x86/apic: Add kexec support for Secure AVIC Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 35/37] x86/apic: Enable Secure AVIC in Control MSR Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 36/37] x86/sev: Prevent SECURE_AVIC_CONTROL MSR interception for Secure AVIC guests Neeraj Upadhyay
2025-06-10 17:54 ` [RFC PATCH v7 37/37] x86/sev: Indicate SEV-SNP guest supports Secure AVIC Neeraj Upadhyay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250610175424.209796-31-Neeraj.Upadhyay@amd.com \
--to=neeraj.upadhyay@amd.com \
--cc=David.Kaplan@amd.com \
--cc=Santosh.Shukla@amd.com \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=Thomas.Lendacky@amd.com \
--cc=Vasant.Hegde@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=francescolavra.fl@gmail.com \
--cc=hpa@zytor.com \
--cc=huibo.wang@amd.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=naveen.rao@amd.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=tiala@microsoft.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox