]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: x86: Don't inhibit APICv/AVIC on xAPIC ID "change" if APIC is disabled
authorSean Christopherson <seanjc@google.com>
Fri, 6 Jan 2023 01:12:38 +0000 (01:12 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:34:11 +0000 (09:34 +0100)
commit a58a66afc464d6d2ec294cd3102f36f3652e7ce4 upstream.

Don't inhibit APICv/AVIC due to an xAPIC ID mismatch if the APIC is
hardware disabled.  The ID cannot be consumed while the APIC is disabled,
and the ID is guaranteed to be set back to the vcpu_id when the APIC is
hardware enabled (architectural behavior correctly emulated by KVM).

Fixes: 3743c2f02517 ("KVM: x86: inhibit APICv/AVIC on changes to APIC ID or APIC base")
Cc: stable@vger.kernel.org
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20230106011306.85230-6-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/lapic.c

index 0c8230a88bbf972a84b7b2587eb9fc3cc28cfe1a..bdb27eb7a9c7266b8a5e874a6870c28d0e1957e1 100644 (file)
@@ -2072,6 +2072,9 @@ static void kvm_lapic_xapic_id_updated(struct kvm_lapic *apic)
 {
        struct kvm *kvm = apic->vcpu->kvm;
 
+       if (!kvm_apic_hw_enabled(apic))
+               return;
+
        if (KVM_BUG_ON(apic_x2apic_mode(apic), kvm))
                return;