From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: <seanjc@google.com>, <pbonzini@redhat.com>, <kvm@vger.kernel.org>
Cc: <linux-kernel@vger.kernel.org>, <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>, <huibo.wang@amd.com>,
<naveen.rao@amd.com>, <binbin.wu@linux.intel.com>,
<isaku.yamahata@intel.com>
Subject: [RFC PATCH 03/19] KVM: x86: Convert guest_apic_protected bool to an enum type
Date: Fri, 28 Feb 2025 14:20:59 +0530 [thread overview]
Message-ID: <20250228085115.105648-4-Neeraj.Upadhyay@amd.com> (raw)
In-Reply-To: <20250228085115.105648-1-Neeraj.Upadhyay@amd.com>
Convert guest_apic_protected lapic struct member to an enum..
This allows to categorize guest APIC state protection according
to the KVM interrupt delivery mechanism.
This is used to distinguish between SNP Secure AVIC's interrupt
injection-based interrupt delivery and TDX's posted interrupt
delivery mechanism. Use value 0 to indicate unprotected APIC
so that functions like kvm_cpu_has_interrupt(), which require
KVM to call an arch-specific callback to determine whether
there are any interrupts that need to be delivered to the vCPU,
can still use non-zero guest_apic_protected check. Subsequent
patches for Secure AVIC-specific interrupt injection checks
will need to use specific guest_apic_protected value.
Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
---
arch/x86/kvm/lapic.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
index e33c969439f7..c9ef9bce438b 100644
--- a/arch/x86/kvm/lapic.h
+++ b/arch/x86/kvm/lapic.h
@@ -55,6 +55,12 @@ struct kvm_timer {
bool hv_timer_in_use;
};
+enum kvm_apic_protection {
+ APIC_STATE_UNPROTECTED,
+ APIC_STATE_PROTECTED_POSTED_INTR,
+ APIC_STATE_PROTECTED_INJECTED_INTR,
+};
+
struct kvm_lapic {
unsigned long base_address;
struct kvm_io_device dev;
@@ -66,7 +72,7 @@ struct kvm_lapic {
bool irr_pending;
bool lvt0_in_nmi_mode;
/* Select registers in the vAPIC cannot be read/written. */
- bool guest_apic_protected;
+ enum kvm_apic_protection guest_apic_protected;
/* Number of bits set in ISR. */
s16 isr_count;
/* The highest vector set in ISR; if -1 - invalid, must scan ISR. */
--
2.34.1
next prev parent reply other threads:[~2025-02-28 8:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-28 8:50 [RFC PATCH 00/19] AMD: Add Secure AVIC KVM Support Neeraj Upadhyay
2025-02-28 8:50 ` [RFC PATCH 01/19] KVM: TDX: Add support for find pending IRQ in a protected local APIC Neeraj Upadhyay
2025-02-28 8:50 ` [RFC PATCH 02/19] KVM: x86: Assume timer IRQ was injected if APIC state is protected Neeraj Upadhyay
2025-02-28 8:50 ` Neeraj Upadhyay [this message]
2025-02-28 8:51 ` [RFC PATCH 04/19] x86/cpufeatures: Add Secure AVIC CPU Feature Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 05/19] KVM: SVM: Add support for Secure AVIC capability in KVM Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 06/19] KVM: SVM: Initialize apic protected state for SAVIC guests Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 07/19] KVM: SEV: Do not intercept SECURE_AVIC_CONTROL MSR Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 08/19] KVM: SVM/SEV/X86: Secure AVIC: Add support to inject interrupts Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 09/19] KVM: SVM/SEV/X86: Secure AVIC: Add hypervisor side IPI Delivery Support Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 10/19] KVM: SVM: Secure AVIC: Do not inject "Exceptions" for Secure AVIC Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 11/19] KVM: SVM/SEV: Do not intercept exceptions for Secure AVIC guest Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 12/19] KVM: SVM/SEV: Secure AVIC: Set VGIF in VMSA area Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 13/19] KVM: SVM/SEV: Secure AVIC: Enable NMI support Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 14/19] KVM: SVM/SEV: Add SVM_VMGEXIT_SECURE_AVIC GHCB protocol event handling Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 15/19] KVM: x86: Secure AVIC: Indicate APIC is enabled by guest SW _always_ Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 16/19] KVM: x86: Secure AVIC: Add IOAPIC EOI support for level interrupts Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 17/19] KVM: x86/ioapic: Disable RTC_GSI EOI tracking for protected APIC Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 18/19] X86: SVM: Check injected vectors before waiting for timer expiry Neeraj Upadhyay
2025-02-28 8:51 ` [RFC PATCH 19/19] KVM: SVM/SEV: Allow creating VMs with Secure AVIC enabled 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=20250228085115.105648-4-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=binbin.wu@linux.intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=huibo.wang@amd.com \
--cc=isaku.yamahata@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=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
all inboxes | Powered by JetHome®