From: Stefano Stabellini Date: Wed, 14 Mar 2012 09:47:03 +0000 (+0000) Subject: arm: fix inflight_irqs list priority ordering X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=df16fc180f6aa8f06be3d7b9b469df74612c57b7;p=xen.git arm: fix inflight_irqs list priority ordering 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 Committed-by: Ian Campbell --- diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index dd996292a1..4d2a0e0512 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -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);