From: Jan Kiszka Date: Mon, 24 Nov 2008 11:26:19 +0000 (+0100) Subject: KVM: VMX: Fix pending NMI-vs.-IRQ race for user space irqchip X-Git-Tag: v2.6.29-rc1~539^2~6 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=264ff01d55b456932cef03082448b41d2edeb6a1;p=~shefty%2Frdma-dev.git KVM: VMX: Fix pending NMI-vs.-IRQ race for user space irqchip As with the kernel irqchip, don't allow an NMI to stomp over an already injected IRQ; instead wait for the IRQ injection to be completed. Signed-off-by: Jan Kiszka Signed-off-by: Avi Kivity --- diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index e446f232588..487e1dcdce3 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -2486,7 +2486,9 @@ static void do_interrupt_requests(struct kvm_vcpu *vcpu, vmx_update_window_states(vcpu); if (vcpu->arch.nmi_pending && !vcpu->arch.nmi_injected) { - if (vcpu->arch.nmi_window_open) { + if (vcpu->arch.interrupt.pending) { + enable_nmi_window(vcpu); + } else if (vcpu->arch.nmi_window_open) { vcpu->arch.nmi_pending = false; vcpu->arch.nmi_injected = true; } else {