On Wed, 9 Sep 2020 at 16:36, Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote: > > 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? Agreed, will do in v2. Wanpeng