aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/irqchip/irq-mips-gic.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index c5f33c3bd228..a376fc632263 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -371,18 +371,13 @@ static void gic_handle_shared_int(bool chained)
371 bitmap_and(pending, pending, intrmask, gic_shared_intrs); 371 bitmap_and(pending, pending, intrmask, gic_shared_intrs);
372 bitmap_and(pending, pending, pcpu_mask, gic_shared_intrs); 372 bitmap_and(pending, pending, pcpu_mask, gic_shared_intrs);
373 373
374 intr = find_first_bit(pending, gic_shared_intrs); 374 for_each_set_bit(intr, pending, gic_shared_intrs) {
375 while (intr != gic_shared_intrs) {
376 virq = irq_linear_revmap(gic_irq_domain, 375 virq = irq_linear_revmap(gic_irq_domain,
377 GIC_SHARED_TO_HWIRQ(intr)); 376 GIC_SHARED_TO_HWIRQ(intr));
378 if (chained) 377 if (chained)
379 generic_handle_irq(virq); 378 generic_handle_irq(virq);
380 else 379 else
381 do_IRQ(virq); 380 do_IRQ(virq);
382
383 /* go to next pending bit */
384 bitmap_clear(pending, intr, 1);
385 intr = find_first_bit(pending, gic_shared_intrs);
386 } 381 }
387} 382}
388 383