KVM: nVMX: don't clear mtf_pending when nested events are blocked
authorOliver Upton <oupton@google.com>
Mon, 6 Apr 2020 20:12:37 +0000 (20:12 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 7 Apr 2020 08:21:41 +0000 (04:21 -0400)
If nested events are blocked, don't clear the mtf_pending flag to avoid
missing later delivery of the MTF VM-exit.

Fixes: 5ef8acbdd687c ("KVM: nVMX: Emulate MTF when performing instruction emulation")
Signed-off-by: Oliver Upton <oupton@google.com>
Message-Id: <20200406201237.178725-1-oupton@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/nested.c

index de23230..cbc9ea2 100644 (file)
@@ -3645,7 +3645,8 @@ static int vmx_check_nested_events(struct kvm_vcpu *vcpu)
         * Clear the MTF state. If a higher priority VM-exit is delivered first,
         * this state is discarded.
         */
-       vmx->nested.mtf_pending = false;
+       if (!block_nested_events)
+               vmx->nested.mtf_pending = false;
 
        if (lapic_in_kernel(vcpu) &&
                test_bit(KVM_APIC_INIT, &apic->pending_events)) {