Commit 301681d60003b172af1a70fdd833567e16f55d9a
Committed by
Greg Kroah-Hartman
1 parent
f10e2065ce
Exists in
smarct4x-processor-sdk-04.01.00.06
and in
1 other branch
ARCv2: IRQ: Call entry/exit functions for chained handlers in MCIP
[ Upstream commit e51d5d02f688c45b6f644f472f0c80fdfa73f0cb ] It is necessary to call entry/exit functions for parent interrupt controllers for proper masking/unmasking of interrupt lines. Signed-off-by: Yuriy Kolerov <yuriy.kolerov@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing 1 changed file with 4 additions and 0 deletions Side-by-side Diff
arch/arc/kernel/mcip.c
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | |
11 | 11 | #include <linux/smp.h> |
12 | 12 | #include <linux/irq.h> |
13 | +#include <linux/irqchip/chained_irq.h> | |
13 | 14 | #include <linux/spinlock.h> |
14 | 15 | #include <asm/irqflags-arcv2.h> |
15 | 16 | #include <asm/mcip.h> |
16 | 17 | |
17 | 18 | |
... | ... | @@ -221,10 +222,13 @@ |
221 | 222 | static void idu_cascade_isr(struct irq_desc *desc) |
222 | 223 | { |
223 | 224 | struct irq_domain *idu_domain = irq_desc_get_handler_data(desc); |
225 | + struct irq_chip *core_chip = irq_desc_get_chip(desc); | |
224 | 226 | irq_hw_number_t core_hwirq = irqd_to_hwirq(irq_desc_get_irq_data(desc)); |
225 | 227 | irq_hw_number_t idu_hwirq = core_hwirq - idu_first_hwirq; |
226 | 228 | |
229 | + chained_irq_enter(core_chip, desc); | |
227 | 230 | generic_handle_irq(irq_find_mapping(idu_domain, idu_hwirq)); |
231 | + chained_irq_exit(core_chip, desc); | |
228 | 232 | } |
229 | 233 | |
230 | 234 | static int idu_irq_map(struct irq_domain *d, unsigned int virq, irq_hw_number_t hwirq) |