Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: "Shukla, Manali" <manali.shukla@amd.com>
To: <seanjc@google.com>, <pbonzini@redhat.com>
Cc: <mingo@redhat.com>, <bp@alien8.de>, <dave.hansen@linux.intel.com>,
	<kvm@vger.kernel.org>, <x86@kernel.org>, <santosh.shukla@amd.com>,
	<nikunj.dadhania@amd.com>, <Naveen.Rao@amd.com>,
	<dapeng1.mi@linux.intel.com>
Subject: Re: [PATCH v1 0/9] KVM: x86: Add support for AMD Extended APIC registers
Date: Mon, 27 Apr 2026 10:04:53 +0530	[thread overview]
Message-ID: <9a9f712e-5f01-4652-9901-93cf3bdeef47@amd.com> (raw)
In-Reply-To: <0a9b715c-0476-469d-a09e-b56cb9f41455@amd.com>



On 3/10/2026 11:47 AM, Manali Shukla wrote:
> On 2/4/2026 1:14 PM, Manali Shukla wrote:
>> Add support for AMD's Extended APIC registers, which reside in a 4KB
>> APIC page instead of the legacy 1KB APIC register space.  Extended LVT
>> registers (offsets 0x500-0x530) provide additional interrupt vectors
>> for features like Instruction Based Sampling (IBS).
>>
>> Introduce KVM_CAP_LAPIC2 to allow userspace to opt into the full 4KB
>> APIC register space. The capability uses a bitmask to support different
>> APIC extensions:
>>
>>   KVM_LAPIC2_DEFAULT: 4KB APIC register space (common foundation)
>>   KVM_LAPIC2_AMD_DEFAULT: Extended LVT registers (AMD-specific)
>>
>> Add KVM_GET/SET_LAPIC2 ioctls that operate on a 4KB APIC register space
>> accommodate extended registers.  Legacy KVM_GET/SET_LAPIC continue to
>> work for backward compatibility.
>>
>> Emulate extended APIC registers (APIC_EFEAT, APIC_ECTRL, APIC_EILVTn)
>> when the guest has X86_FEATURE_EXTAPIC and userspace enables
>> KVM_CAP_LAPIC2.  Current AMD processors support four extended LVT
>> entries, future processors may support up to 255.
>>
>> Integrate with AVIC to accelerate extended LVT MSR access when
>> AVIC_EXTLVT is supported.  Reads are accelerated without VM-exits;
>> writes trigger trap-style VM-exits.
>>
>> Tested on AMD hardware with Extapic support:
>> - Extended APIC register read/write emulation and AVIC acceleration
>>   with IBS driver running on the guest
>> - VM migration with extended APIC state and without extended APIC state
>> - Backward compatibility check:
>>   Fallback to legacy IOCTLs when KVM_CAP_LAPIC2 capability is not enabled
>>
>> Equivalent Qemu changes can be found at:
>> https://github.com/AMDESE/qemu/tree/extlvt_v1
>>
>> Patches are prepared on kvm-x86/next (003f68c79227).
>>
>> Manali Shukla (7):
>>   KVM: x86: Refactor APIC register mask handling to support extended
>>     APIC registers
>>   x86/apic: Add helper to get maximum number of Extended LVT registers
>>   KVM: SVM: Set kvm_caps.has_extapic when CPU supports Extended APIC
>>   KVM: x86: Introduce KVM_CAP_LAPIC2 for 4KB APIC register space support
>>   KVM: x86: Refactor APIC state get/set to accept variable-sized buffers
>>   KVM: Add KVM_GET_LAPIC2 and KVM_SET_LAPIC2 for extended APIC
>>   KVM: SVM: Add AVIC support for extended LVT MSRs
>>
>> Santosh Shukla (2):
>>   KVM: x86: Emulate Extended LVT registers for AMD guests
>>   x86/cpufeatures: Add CPUID feature bit for Extended LVT AVIC
>>     acceleration
>>
>>  Documentation/virt/kvm/api.rst     |  75 +++++++++++++
>>  arch/x86/include/asm/apic.h        |   1 +
>>  arch/x86/include/asm/apicdef.h     |  18 +++
>>  arch/x86/include/asm/cpufeatures.h |   1 +
>>  arch/x86/include/asm/kvm_host.h    |  12 ++
>>  arch/x86/include/uapi/asm/kvm.h    |   5 +
>>  arch/x86/kernel/apic/apic.c        |  17 +++
>>  arch/x86/kvm/cpuid.c               |  10 +-
>>  arch/x86/kvm/lapic.c               | 169 ++++++++++++++++++++---------
>>  arch/x86/kvm/lapic.h               |  14 ++-
>>  arch/x86/kvm/svm/avic.c            |  14 +++
>>  arch/x86/kvm/svm/svm.c             |   3 +
>>  arch/x86/kvm/vmx/vmx.c             |  10 +-
>>  arch/x86/kvm/x86.c                 |  93 +++++++++++++++-
>>  arch/x86/kvm/x86.h                 |   2 +
>>  include/uapi/linux/kvm.h           |   7 ++
>>  16 files changed, 390 insertions(+), 61 deletions(-)
>>
> 
> A Gentle reminder to review.
> 
> -Manali
> 

A Gentle reminder to review.

-Manali

      reply	other threads:[~2026-04-27  4:35 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-04  7:44 [PATCH v1 0/9] KVM: x86: Add support for AMD Extended APIC registers Manali Shukla
2026-02-04  7:44 ` [PATCH v1 1/9] KVM: x86: Refactor APIC register mask handling to support extended " Manali Shukla
2026-05-14 12:48   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 2/9] x86/apic: Add helper to get maximum number of Extended LVT registers Manali Shukla
2026-05-06 11:22   ` Borislav Petkov
2026-05-14 12:50   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 3/9] KVM: SVM: Set kvm_caps.has_extapic when CPU supports Extended APIC Manali Shukla
2026-05-14 12:58   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 4/9] KVM: x86: Introduce KVM_CAP_LAPIC2 for 4KB APIC register space support Manali Shukla
2026-05-14 13:08   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 5/9] KVM: x86: Refactor APIC state get/set to accept variable-sized buffers Manali Shukla
2026-05-14 14:20   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 6/9] KVM: Add KVM_GET_LAPIC2 and KVM_SET_LAPIC2 for extended APIC Manali Shukla
2026-03-16 13:00   ` Nikunj A. Dadhania
2026-03-23 11:15     ` Manali Shukla
2026-05-14 14:36       ` Naveen N Rao
2026-05-14 14:41   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 7/9] KVM: x86: Emulate Extended LVT registers for AMD guests Manali Shukla
2026-05-14 14:48   ` Naveen N Rao
2026-02-04  7:44 ` [PATCH v1 8/9] x86/cpufeatures: Add CPUID feature bit for Extended LVT AVIC acceleration Manali Shukla
2026-02-04  7:44 ` [PATCH v1 9/9] KVM: SVM: Add AVIC support for extended LVT MSRs Manali Shukla
2026-05-14 15:10   ` Naveen N Rao
2026-03-10  6:17 ` [PATCH v1 0/9] KVM: x86: Add support for AMD Extended APIC registers Manali Shukla
2026-04-27  4:34   ` Shukla, Manali [this message]

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=9a9f712e-5f01-4652-9901-93cf3bdeef47@amd.com \
    --to=manali.shukla@amd.com \
    --cc=Naveen.Rao@amd.com \
    --cc=bp@alien8.de \
    --cc=dapeng1.mi@linux.intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nikunj.dadhania@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=santosh.shukla@amd.com \
    --cc=seanjc@google.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