Message ID | 20220508023930.12881-14-suravee.suthikulpanit@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introducing AMD x2AVIC and hybrid-AVIC modes | expand |
> When launching a VM with x2APIC and specify more than 255 vCPUs, > the guest kernel can disable x2APIC (e.g. specify nox2apic kernel option). > The VM fallbacks to xAPIC mode, and disable the vCPU ID 255 and greater. > > In this case, APICV is deactivated for the disabled vCPUs. > However, the current APICv consistency warning does not account for > this case, which results in a warning. > > Therefore, modify warning logic to report only when vCPU APIC mode > is valid. > > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> > Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> > --- > arch/x86/kvm/x86.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 77e49892dea1..0febaca80feb 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -10242,7 +10242,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) > * per-VM state, and responsing vCPUs must wait for the update > * to complete before servicing KVM_REQ_APICV_UPDATE. > */ > - WARN_ON_ONCE(kvm_vcpu_apicv_activated(vcpu) != kvm_vcpu_apicv_active(vcpu)); > + WARN_ON_ONCE((kvm_vcpu_apicv_activated(vcpu) != kvm_vcpu_apicv_active(vcpu)) && > + (kvm_get_apic_mode(vcpu) != LAPIC_MODE_DISABLED)); > > exit_fastpath = static_call(kvm_x86_vcpu_run)(vcpu); > if (likely(exit_fastpath != EXIT_FASTPATH_REENTER_GUEST)) Looks good to me. Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 77e49892dea1..0febaca80feb 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -10242,7 +10242,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) * per-VM state, and responsing vCPUs must wait for the update * to complete before servicing KVM_REQ_APICV_UPDATE. */ - WARN_ON_ONCE(kvm_vcpu_apicv_activated(vcpu) != kvm_vcpu_apicv_active(vcpu)); + WARN_ON_ONCE((kvm_vcpu_apicv_activated(vcpu) != kvm_vcpu_apicv_active(vcpu)) && + (kvm_get_apic_mode(vcpu) != LAPIC_MODE_DISABLED)); exit_fastpath = static_call(kvm_x86_vcpu_run)(vcpu); if (likely(exit_fastpath != EXIT_FASTPATH_REENTER_GUEST))