]> xenbits.xensource.com Git - xen.git/commitdiff
arm: fix inflight_irqs list priority ordering
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Wed, 14 Mar 2012 09:47:03 +0000 (09:47 +0000)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Wed, 14 Mar 2012 09:47:03 +0000 (09:47 +0000)
Lower priority integers mean higher priority.
Also when we are about to insert the lowest priority IRQ so far, add it
at the end.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/vgic.c

index dd996292a181b21eadbf565961379933633aca50..4d2a0e0512dd6091c361b375623b817d468a2f34 100644 (file)
@@ -567,14 +567,14 @@ void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int irq, int virtual)
     spin_lock(&v->arch.vgic.lock);
     list_for_each_entry ( iter, &v->arch.vgic.inflight_irqs, inflight )
     {
-        if ( iter->priority < priority )
+        if ( iter->priority > priority )
         {
             list_add_tail(&n->inflight, &iter->inflight);
             spin_unlock(&v->arch.vgic.lock);
             return;
         }
     }
-    list_add(&n->inflight, &v->arch.vgic.inflight_irqs);
+    list_add_tail(&n->inflight, &v->arch.vgic.inflight_irqs);
     spin_unlock(&v->arch.vgic.lock);
     /* we have a new higher priority irq, inject it into the guest */
     cpu_raise_softirq(v->processor, VGIC_SOFTIRQ);