Re: [PATCH] KVM: SVM: Check vCPU ID against max x2AVIC ID if and only if x2AVIC is enabled

Sean Christopherson
2026-01-14T19:42:47Z

On Wed, Jan 14, 2026, Naveen N Rao wrote:
> On Mon, Jan 12, 2026 at 03:28:05PM -0800, Sean Christopherson wrote:
> > When allocating the AVIC backing page, only check one of the max AVIC vs.
> > x2AVIC ID based on whether or not x2AVIC is enabled. Doing so fixes a bug
> > where KVM incorrectly inhibits AVIC if x2AVIC is _disabled_ and any vCPU
> > with a non-zero APIC ID is created, as x2avic_max_physical_id is left '0'
> > when x2AVIC is disabled.
> >
> > Fixes: 940fc47cfb0d ("KVM: SVM: Add AVIC support for 4k vCPUs in x2AVIC mode")
> > Cc: stable@vger.kernel.org
> > Cc: Naveen N Rao (AMD) <naveen@kernel.org>
> > Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
> > Signed-off-by: Sean Christopherson <seanjc@google.com>
> > ---
> > arch/x86/kvm/svm/avic.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
>
> I think the bad commit is:
> f628a34a9d52 ("KVM: SVM: Replace "avic_mode" enum with "x2avic_enabled" boolean")
>
> ... which introduced x2avic_enabled.

No. That commit definitely set a trap for 4k vCPUs support, but there was no
functional bug as of that commit. KVM would unnecessarily check @id against
X2AVIC_MAX_PHYSICAL_ID, but it's a non-issue because X2AVIC_MAX_PHYSICAL_ID is
a constant and greater than AVIC_MAX_PHYSICAL_ID.

if ((!x2avic_enabled && id > AVIC_MAX_PHYSICAL_ID) ||
(id > X2AVIC_MAX_PHYSICAL_ID))
return -EINVAL;

So from a "what LTS commits need this fix" perspective, it's just the ones with
940fc47cfb0d.