diff options
-rw-r--r-- | drivers/irqchip/irq-mips-gic.c | 7 |
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 | ||