From df16fc180f6aa8f06be3d7b9b469df74612c57b7 Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Wed, 14 Mar 2012 09:47:03 +0000 Subject: [PATCH] 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 --- xen/arch/arm/vgic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); -- 2.30.2