On Wed, Oct 20, 2021, Paolo Bonzini wrote: > The kvm_x86_sync_pir_to_irr callback can sometimes set KVM_REQ_EVENT. > If that happens exactly at the time that an exit is handled as > EXIT_FASTPATH_REENTER_GUEST, vcpu_enter_guest will go incorrectly > through the loop that calls kvm_x86_run, instead of processing > the request promptly. > > Fixes: 379a3c8ee444 ("KVM: VMX: Optimize posted-interrupt delivery for timer fastpath") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx> > arch/x86/kvm/x86.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index fa48948b4934..b9b31e5f72b0 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -9781,14 +9781,14 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) > if (likely(exit_fastpath != EXIT_FASTPATH_REENTER_GUEST)) > break; > > - if (unlikely(kvm_vcpu_exit_request(vcpu))) { > + if (vcpu->arch.apicv_active) > + static_call(kvm_x86_sync_pir_to_irr)(vcpu); > + > + if (unlikely(kvm_vcpu_exit_request(vcpu))) { > exit_fastpath = EXIT_FASTPATH_EXIT_HANDLED; > break; > } > - > - if (vcpu->arch.apicv_active) > - static_call(kvm_x86_sync_pir_to_irr)(vcpu); > - } > + } I think someone working on git has a meta-entry in the obfuscated C context. This is the most convoluted diff possible for a simple code move :-) > /* > * Do this here before restoring debug registers on the host. And > -- > 2.27.0 >