Re: [PATCH 1/5] KVM: x86: Re-enter guest if WRMSR(X2APIC_ICR) fastpath is successful

From: Sean Christopherson
Date: Tue Sep 03 2024 - 11:10:36 EST


On Mon, Sep 02, 2024, Paolo Bonzini wrote:
> On Fri, Aug 2, 2024 at 9:51 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
> > Re-enter the guest in the fastpath if WRMSR emulation for x2APIC's ICR is
> > successful, as no additional work is needed, i.e. there is no code unique
> > for WRMSR exits between the fastpath and the "!= EXIT_FASTPATH_NONE" check
> > in __vmx_handle_exit().
>
> What about if you send an IPI to yourself? Doesn't that return true
> for kvm_vcpu_exit_request() if posted interrupts are disabled?

Yes, but that doesn't have anything to do with WRMSR itself, as KVM needs to morph
EXIT_FASTPATH_EXIT_HANDLED => EXIT_FASTPATH_REENTER_GUEST if there's a pending
event that needs requires injection.

Given that kvm_x86_ops.sync_pir_to_irr is likely NULL if virtual interrupt delivery
is enabled, the overhead of the trying to re-enter the guest it essentially a few
cycles, e.g. check vcpu->mode and kvm_request_pending().