summaryrefslogtreecommitdiffstats
path: root/arch/arc/kernel/irq.c
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2016-01-01 10:42:54 +0100
committerVineet Gupta <vgupta@synopsys.com>2016-05-09 06:02:30 +0200
commit1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac (patch)
treeb78ae35cc351dd3faffcaf8a6fd200b1dd2a0ec3 /arch/arc/kernel/irq.c
parentARC: irq: export some IRQs again (diff)
downloadlinux-1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac.tar.xz
linux-1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac.zip
ARC: [intc-*] Do a domain lookup in primary handler for hwirq -> linux virq
The primary interrupt handler arch_do_IRQ() was passing hwirq as linux virq to core code. This was fragile and worked so far as we only had legacy/linear domains. This came out of a rant by Marc Zyngier. http://lists.infradead.org/pipermail/linux-snps-arc/2015-December/000298.html Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Noam Camus <noamc@ezchip.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/kernel/irq.c')
-rw-r--r--arch/arc/kernel/irq.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/arc/kernel/irq.c b/arch/arc/kernel/irq.c
index fb6dede9d05f..538b36afe89e 100644
--- a/arch/arc/kernel/irq.c
+++ b/arch/arc/kernel/irq.c
@@ -41,12 +41,7 @@ void __init init_IRQ(void)
* "C" Entry point for any ARC ISR, called from low level vector handler
* @irq is the vector number read from ICAUSE reg of on-chip intc
*/
-void arch_do_IRQ(unsigned int irq, struct pt_regs *regs)
+void arch_do_IRQ(unsigned int hwirq, struct pt_regs *regs)
{
- struct pt_regs *old_regs = set_irq_regs(regs);
-
- irq_enter();
- generic_handle_irq(irq);
- irq_exit();
- set_irq_regs(old_regs);
+ handle_domain_irq(NULL, hwirq, regs);
}