Wanpeng Li <kernellwp@xxxxxxxxx> writes: > From: Wanpeng Li <wanpengli@xxxxxxxxxxx> > > Moving svm_complete_interrupts() into svm_vcpu_run() which can align VMX > and SVM with respect to completing interrupts. > > Suggested-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > Cc: Paul K. <kronenpj@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Wanpeng Li <wanpengli@xxxxxxxxxxx> > --- > arch/x86/kvm/svm/svm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index c61bc3b..74bcf0a 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -2938,8 +2938,6 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) > if (npt_enabled) > vcpu->arch.cr3 = svm->vmcb->save.cr3; > > - svm_complete_interrupts(svm); > - > if (is_guest_mode(vcpu)) { > int vmexit; > > @@ -3530,6 +3528,8 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) > SVM_EXIT_EXCP_BASE + MC_VECTOR)) > svm_handle_mce(svm); > > + svm_complete_interrupts(svm); > + > vmcb_mark_all_clean(svm->vmcb); > return exit_fastpath; > } This seems to be the right thing to do, however, the amount of code between kvm_x86_ops.run() and kvm_x86_ops.handle_exit() is non-trivial, hope it won't blow up in testing... Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> One more thing: VMX version does vmx_complete_interrupts(vmx); if (is_guest_mode(vcpu)) return EXIT_FASTPATH_NONE; and on SVM we analyze is_guest_mode() inside svm_exit_handlers_fastpath() - should we also change that for conformity? -- Vitaly