diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2016-01-01 10:42:54 +0100 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2016-05-09 06:02:30 +0200 |
commit | 1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac (patch) | |
tree | b78ae35cc351dd3faffcaf8a6fd200b1dd2a0ec3 /arch/arc/kernel/irq.c | |
parent | ARC: irq: export some IRQs again (diff) | |
download | linux-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.c | 9 |
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); } |