]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/cpufeatures: Add X86_FEATURE_X2AVIC_EXT
authorNaveen N Rao <naveen@kernel.org>
Thu, 4 Sep 2025 18:33:06 +0000 (00:03 +0530)
committerSean Christopherson <seanjc@google.com>
Fri, 17 Oct 2025 22:23:45 +0000 (15:23 -0700)
Add CPUID feature bit for x2AVIC extension that enables AMD SVM to
support up to 4096 vCPUs in x2AVIC mode. The primary change is in the
size of the AVIC Physical ID table, which can now go up to 8 contiguous
4k pages. The number of pages allocated is controlled by the maximum
APIC ID for a guest, and that controls the number of pages to allocate
for the AVIC Physical ID table. AVIC hardware is enhanced to look up
Physical ID table entries for vCPUs > 512 for locating the target APIC
backing page and the host APIC ID of the physical core on which the
guest vCPU is running.

Signed-off-by: Naveen N Rao (AMD) <naveen@kernel.org>
Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/e5c9c471ab99a130bf9b728b77050ab308cf8624.1757009416.git.naveen@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/scattered.c

index 6bdf868c8f8ee80f34a136bd55963c1d8ece000e..7129eb44adadd3b2a02c8ebe5d305720d3031318 100644 (file)
 #define X86_FEATURE_IBPB_EXIT_TO_USER  (21*32+14) /* Use IBPB on exit-to-userspace, see VMSCAPE bug */
 #define X86_FEATURE_ABMC               (21*32+15) /* Assignable Bandwidth Monitoring Counters */
 #define X86_FEATURE_MSR_IMM            (21*32+16) /* MSR immediate form instructions */
+#define X86_FEATURE_X2AVIC_EXT         (21*32+17) /* AMD SVM x2AVIC support for 4k vCPUs */
 
 /*
  * BUG word(s)
index caa4dc885c214f70b7667154e151eefc34dc2f33..aa7f21f5f46b5d8d3ac27392c797e4b4cacf0447 100644 (file)
@@ -49,6 +49,7 @@ static const struct cpuid_bit cpuid_bits[] = {
        { X86_FEATURE_PROC_FEEDBACK,            CPUID_EDX, 11, 0x80000007, 0 },
        { X86_FEATURE_AMD_FAST_CPPC,            CPUID_EDX, 15, 0x80000007, 0 },
        { X86_FEATURE_MBA,                      CPUID_EBX,  6, 0x80000008, 0 },
+       { X86_FEATURE_X2AVIC_EXT,               CPUID_ECX,  6, 0x8000000a, 0 },
        { X86_FEATURE_COHERENCY_SFW_NO,         CPUID_EBX, 31, 0x8000001f, 0 },
        { X86_FEATURE_SMBA,                     CPUID_EBX,  2, 0x80000020, 0 },
        { X86_FEATURE_BMEC,                     CPUID_EBX,  3, 0x80000020, 0 },