]> xenbits.xensource.com Git - xen.git/commitdiff
x86/hvm: don't give vector callback higher priority than NMI/MCE
authorJan Beulich <jbeulich@suse.com>
Mon, 10 Sep 2012 14:47:31 +0000 (16:47 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 10 Sep 2012 14:47:31 +0000 (16:47 +0200)
Those two should always be delivered first imo.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
xen/arch/x86/hvm/irq.c

index f44f3b957ee898a6ff7aad42262170f6a5f429a2..604e927c76d9fb08a08db9ca1189bcf003b5b829 100644 (file)
@@ -395,16 +395,16 @@ struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v)
     struct hvm_domain *plat = &v->domain->arch.hvm_domain;
     int vector;
 
-    if ( (plat->irq.callback_via_type == HVMIRQ_callback_vector)
-         && vcpu_info(v, evtchn_upcall_pending) )
-        return hvm_intack_vector(plat->irq.callback_via.vector);
-
     if ( unlikely(v->nmi_pending) )
         return hvm_intack_nmi;
 
     if ( unlikely(v->mce_pending) )
         return hvm_intack_mce;
 
+    if ( (plat->irq.callback_via_type == HVMIRQ_callback_vector)
+         && vcpu_info(v, evtchn_upcall_pending) )
+        return hvm_intack_vector(plat->irq.callback_via.vector);
+
     if ( vlapic_accept_pic_intr(v) && plat->vpic[0].int_output )
         return hvm_intack_pic(0);