On Tue, Sep 3, 2024 at 5:09 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > 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. The other way round? i.e. treat EXIT_FASTPATH_REENTER_GUEST as EXIT_FASTPATH_EXIT_HANDLED to go through event 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(). No, I wasn't worried about performance. Probably I misread if (likely(exit_fastpath != EXIT_FASTPATH_REENTER_GUEST)) break; as something like if (likely(exit_fastpath == EXIT_FASTPATH_REENTER_GUEST)) continue; EXIT_FASTPATH_REENTER_GUEST is exactly what's needed here. Paolo