diff options
Diffstat (limited to 'drivers/irqchip/irq-armada-370-xp.c')
-rw-r--r-- | drivers/irqchip/irq-armada-370-xp.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index df60eabaf49e..3e238cd049e6 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c | |||
@@ -387,13 +387,15 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained) | |||
387 | if (!(msimask & BIT(msinr))) | 387 | if (!(msimask & BIT(msinr))) |
388 | continue; | 388 | continue; |
389 | 389 | ||
390 | irq = irq_find_mapping(armada_370_xp_msi_domain, | 390 | if (is_chained) { |
391 | msinr - 16); | 391 | irq = irq_find_mapping(armada_370_xp_msi_domain, |
392 | 392 | msinr - 16); | |
393 | if (is_chained) | ||
394 | generic_handle_irq(irq); | 393 | generic_handle_irq(irq); |
395 | else | 394 | } else { |
396 | handle_IRQ(irq, regs); | 395 | irq = msinr - 16; |
396 | handle_domain_irq(armada_370_xp_msi_domain, | ||
397 | irq, regs); | ||
398 | } | ||
397 | } | 399 | } |
398 | } | 400 | } |
399 | #else | 401 | #else |
@@ -438,9 +440,8 @@ armada_370_xp_handle_irq(struct pt_regs *regs) | |||
438 | break; | 440 | break; |
439 | 441 | ||
440 | if (irqnr > 1) { | 442 | if (irqnr > 1) { |
441 | irqnr = irq_find_mapping(armada_370_xp_mpic_domain, | 443 | handle_domain_irq(armada_370_xp_mpic_domain, |
442 | irqnr); | 444 | irqnr, regs); |
443 | handle_IRQ(irqnr, regs); | ||
444 | continue; | 445 | continue; |
445 | } | 446 | } |
446 | 447 | ||