This patch fixes so that gic_update always updates all the cores with new pending irq states. If the function returns early it is possible to get interrupts that has already been acknowledged.
Signed-off-by: Johan Karlsson <johan.karls...@enea.com> diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 270ce05..f1641f5 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -61,7 +61,7 @@ void gic_update(GICState *s) s->current_pending[cpu] = 1023; if (!s->enabled || !s->cpu_enabled[cpu]) { qemu_irq_lower(s->parent_irq[cpu]); - return; + continue; } best_prio = 0x100; best_irq = 1023;