KVM: SVM: fix NMI window after iret
authorRadim Krčmář <rkrcmar@redhat.com>
Fri, 17 Jan 2014 19:52:42 +0000 (20:52 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 18 Feb 2014 09:14:24 +0000 (10:14 +0100)
We should open NMI window right after an iret, but SVM exits before it.
We wanted to single step using the trap flag and then open it.
(or we could emulate the iret instead)
We don't do it since commit 3842d135ff2 (likely), because the iret exit
handler does not request an event, so NMI window remains closed until
the next exit.

Fix this by making KVM_REQ_EVENT request in the iret handler.

Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm.c

index e81df8fce0275781a654f356fe77e38129d5210a..64d9bb9590e34ca895f8156eb634fd733f2e8e32 100644 (file)
@@ -2842,6 +2842,7 @@ static int iret_interception(struct vcpu_svm *svm)
        clr_intercept(svm, INTERCEPT_IRET);
        svm->vcpu.arch.hflags |= HF_IRET_MASK;
        svm->nmi_iret_rip = kvm_rip_read(&svm->vcpu);
+       kvm_make_request(KVM_REQ_EVENT, &svm->vcpu);
        return 1;
 }