KVM: nSVM: remove exit_required
authorPaolo Bonzini <pbonzini@redhat.com>
Sat, 16 May 2020 12:46:00 +0000 (08:46 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 28 May 2020 15:46:17 +0000 (11:46 -0400)
All events now inject vmexits before vmentry rather than after vmexit.  Therefore,
exit_required is not set anymore and we can remove it.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm/nested.c
arch/x86/kvm/svm/svm.c
arch/x86/kvm/svm/svm.h

index 1ae13fd..3d17c62 100644 (file)
@@ -792,8 +792,7 @@ static int svm_check_nested_events(struct kvm_vcpu *vcpu)
 {
        struct vcpu_svm *svm = to_svm(vcpu);
        bool block_nested_events =
-               kvm_event_needs_reinjection(vcpu) || svm->nested.exit_required ||
-               svm->nested.nested_run_pending;
+               kvm_event_needs_reinjection(vcpu) || svm->nested.nested_run_pending;
 
        if (vcpu->arch.exception.pending) {
                if (block_nested_events)
index 89b6fb1..545f63e 100644 (file)
@@ -2889,13 +2889,6 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
        if (npt_enabled)
                vcpu->arch.cr3 = svm->vmcb->save.cr3;
 
-       if (unlikely(svm->nested.exit_required)) {
-               nested_svm_vmexit(svm);
-               svm->nested.exit_required = false;
-
-               return 1;
-       }
-
        if (is_guest_mode(vcpu)) {
                int vmexit;
 
@@ -3328,13 +3321,6 @@ static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
        svm->vmcb->save.rip = vcpu->arch.regs[VCPU_REGS_RIP];
 
        /*
-        * A vmexit emulation is required before the vcpu can be executed
-        * again.
-        */
-       if (unlikely(svm->nested.exit_required))
-               return EXIT_FASTPATH_NONE;
-
-       /*
         * Disable singlestep if we're injecting an interrupt/exception.
         * We don't want our modified rflags to be pushed on the stack where
         * we might not be able to easily reset them if we disabled NMI
index 8342032..89fab75 100644 (file)
@@ -95,9 +95,6 @@ struct nested_state {
        u64 vmcb_msrpm;
        u64 vmcb_iopm;
 
-       /* A VMEXIT is required but not yet emulated */
-       bool exit_required;
-
        /* A VMRUN has started but has not yet been performed, so
         * we cannot inject a nested vmexit yet.  */
        bool nested_run_pending;