@@ -100,6 +100,10 @@ config IRQ_MSI_IOMMU
config HANDLE_DOMAIN_IRQ
bool
+config ARCH_HAS_IRQENTRY_ENTER
+ bool
+ select HANDLE_DOMAIN_IRQ
+
config IRQ_TIMINGS
bool
@@ -669,7 +669,9 @@ int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq,
unsigned int irq = hwirq;
int ret = 0;
+#ifndef CONFIG_ARCH_HAS_IRQENTRY_ENTER
irq_enter();
+#endif
#ifdef CONFIG_IRQ_DOMAIN
if (lookup)
@@ -687,7 +689,9 @@ int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq,
generic_handle_irq(irq);
}
+#ifndef CONFIG_ARCH_HAS_IRQENTRY_ENTER
irq_exit();
+#endif
set_irq_regs(old_regs);
return ret;
}
Arches may implement their own counterpart of irq_enter/exit in the frontend. Hence make the pair in __handle_domain_irq() arch optional Signed-off-by: Pingfan Liu <kernelfans@gmail.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Marc Zyngier <maz@kernel.org> Cc: Julien Thierry <julien.thierry@arm.com> To: linux-arm-kernel@lists.infradead.org --- kernel/irq/Kconfig | 4 ++++ kernel/irq/irqdesc.c | 4 ++++ 2 files changed, 8 insertions(+)