From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: Sean Christopherson <seanjc@google.com>
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, pbonzini@redhat.com, kvm@vger.kernel.org,
kirill.shutemov@linux.intel.com, huibo.wang@amd.com,
naveen.rao@amd.com, francescolavra.fl@gmail.com
Subject: Re: [PATCH v3 13/17] x86/apic: Handle EOI writes for SAVIC guests
Date: Mon, 7 Apr 2025 21:49:47 +0530 [thread overview]
Message-ID: <3aaedf1c-e710-4037-bb2a-6c65359bcdac@amd.com> (raw)
In-Reply-To: <Z_PzDyiyLGq2tJl8@google.com>
On 4/7/2025 9:15 PM, Sean Christopherson wrote:
> On Tue, Apr 01, 2025, Neeraj Upadhyay wrote:
>> Secure AVIC accelerates guest's EOI msr writes for edge-triggered
>> interrupts. For level-triggered interrupts, EOI msr writes trigger
>> VC exception with SVM_EXIT_AVIC_UNACCELERATED_ACCESS error code. The
>> VC handler would need to trigger a GHCB protocol MSR write event to
>> to notify the Hypervisor about completion of the level-triggered
>> interrupt. This is required for cases like emulated IOAPIC. VC exception
>> handling adds extra performance overhead for APIC register write. In
>> addition, some unaccelerated APIC register msr writes are trapped,
>> whereas others are faulted. This results in additional complexity in
>> VC exception handling for unacclerated accesses. So, directly do a GHCB
>> protocol based EOI write from apic->eoi() callback for level-triggered
>> interrupts. Use wrmsr for edge-triggered interrupts, so that hardware
>> re-evaluates any pending interrupt which can be delivered to guest vCPU.
>> For level-triggered interrupts, re-evaluation happens on return from
>> VMGEXIT corresponding to the GHCB event for EOI msr write.
>>
>> Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
>> ---
>> Changes since v2:
>> - Reuse find_highest_vector() from kvm/lapic.c
>> - Misc cleanups.
>>
>> arch/x86/include/asm/apic-emul.h | 28 +++++++++++++
>> arch/x86/kernel/apic/x2apic_savic.c | 62 +++++++++++++++++++++++++----
>> arch/x86/kvm/lapic.c | 23 ++---------
>
> Please isolate the KVM changes to a standalone patch.
>
Ok sure.
>> 3 files changed, 85 insertions(+), 28 deletions(-)
>> create mode 100644 arch/x86/include/asm/apic-emul.h
>>
>> diff --git a/arch/x86/include/asm/apic-emul.h b/arch/x86/include/asm/apic-emul.h
>> new file mode 100644
>> index 000000000000..60d9e88fefc6
>> --- /dev/null
>> +++ b/arch/x86/include/asm/apic-emul.h
>
> I don't see any reason for a new file. arch/x86/include/asm/apic.h already has
> is_vector_pending() and lapic_vector_set_in_irr(), this functionality is more or
> less the same.
Ok. The intent here was to separate out emulated apic operations from the one
which go through the native apic driver.
- Neeraj
next prev parent reply other threads:[~2025-04-07 16:19 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-01 11:35 [PATCH v3 00/17] AMD: Add Secure AVIC Guest Support Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 01/17] x86/apic: Add new driver for Secure AVIC Neeraj Upadhyay
2025-04-03 11:34 ` Thomas Gleixner
2025-04-03 11:42 ` Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 02/17] x86/apic: Initialize Secure AVIC APIC backing page Neeraj Upadhyay
2025-04-03 11:37 ` Thomas Gleixner
2025-04-03 11:44 ` Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 03/17] x86/apic: Populate .read()/.write() callbacks of Secure AVIC driver Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 04/17] x86/apic: Initialize APIC ID for Secure AVIC Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 05/17] x86/apic: Add update_vector callback " Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 06/17] x86/apic: Add support to send IPI " Neeraj Upadhyay
2025-04-03 11:45 ` Thomas Gleixner
2025-04-03 11:58 ` Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 07/17] x86/apic: Support LAPIC timer " Neeraj Upadhyay
2025-04-03 12:13 ` Thomas Gleixner
2025-04-03 12:36 ` Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 08/17] x86/sev: Initialize VGIF for secondary VCPUs " Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 09/17] x86/apic: Add support to send NMI IPI " Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 10/17] x86/apic: Allow NMI to be injected from hypervisor " Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 11/17] x86/sev: Enable NMI support " Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 12/17] x86/apic: Read and write LVT* APIC registers from HV for SAVIC guests Neeraj Upadhyay
2025-04-14 23:57 ` Liz Jordan
2025-04-01 11:36 ` [PATCH v3 13/17] x86/apic: Handle EOI writes " Neeraj Upadhyay
2025-04-07 15:45 ` Sean Christopherson
2025-04-07 16:19 ` Neeraj Upadhyay [this message]
2025-04-01 11:36 ` [PATCH v3 14/17] x86/apic: Add kexec support for Secure AVIC Neeraj Upadhyay
2025-04-11 17:01 ` Francesco Lavra
2025-04-01 11:36 ` [PATCH v3 15/17] x86/apic: Enable Secure AVIC in Control MSR Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 16/17] x86/sev: Prevent SECURE_AVIC_CONTROL MSR interception for Secure AVIC guests Neeraj Upadhyay
2025-04-01 11:36 ` [PATCH v3 17/17] 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=3aaedf1c-e710-4037-bb2a-6c65359bcdac@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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.