Commit c6dca712 authored by Marc Zyngier's avatar Marc Zyngier
Browse files

Merge branch irq/remove-handle-domain-irq-20211026 into irq/irqchip-next



* irq/remove-handle-domain-irq-20211026:
  : Large rework of the architecture entry code from Mark Rutland.
  : From the cover letter:
  :
  : <quote>
  : The handle_domain_{irq,nmi}() functions were oringally intended as a
  : convenience, but recent rework to entry code across the kernel tree has
  : demonstrated that they cause more pain than they're worth and prevent
  : architectures from being able to write robust entry code.
  :
  : This series reworks the irq code to remove them, handling the necessary
  : entry work consistently in entry code (be it architectural or generic).
  : </quote>
  MIPS: irq: Avoid an unused-variable error
  irq: remove handle_domain_{irq,nmi}()
  irq: remove CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
  irq: riscv: perform irqentry in entry code
  irq: openrisc: perform irqentry in entry code
  irq: csky: perform irqentry in entry code
  irq: arm64: perform irqentry in entry code
  irq: arm: perform irqentry in entry code
  irq: add a (temporary) CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
  irq: nds32: avoid CONFIG_HANDLE_DOMAIN_IRQ
  irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ
  irq: add generic_handle_arch_irq()
  irq: unexport handle_irq_desc()
  irq: simplify handle_domain_{irq,nmi}()
  irq: mips: simplify do_domain_IRQ()
  irq: mips: stop (ab)using handle_domain_irq()
  irq: mips: simplify bcm6345_l1_irq_handle()
  irq: mips: avoid nested irq_enter()

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parents e6a767a1 34fca894
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -67,9 +67,6 @@ variety of methods:
  deprecated
- generic_handle_domain_irq() handles an interrupt described by a
  domain and a hwirq number
- handle_domain_irq() does the same thing for root interrupt
  controllers and deals with the set_irq_reg()/irq_enter() sequences
  that most architecture requires

Note that irq domain lookups must happen in contexts that are
compatible with a RCU read-side critical section.
+0 −1
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ config ARC
	select HAVE_KRETPROBES
	select HAVE_MOD_ARCH_SPECIFIC
	select HAVE_PERF_EVENTS
	select HANDLE_DOMAIN_IRQ
	select IRQ_DOMAIN
	select MODULES_USE_ELF_RELA
	select OF
+9 −1
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@
#include <linux/interrupt.h>
#include <linux/irqchip.h>
#include <asm/mach_desc.h>

#include <asm/irq_regs.h>
#include <asm/smp.h>

/*
@@ -39,5 +41,11 @@ void __init init_IRQ(void)
 */
void arch_do_IRQ(unsigned int hwirq, struct pt_regs *regs)
{
	handle_domain_irq(NULL, hwirq, regs);
	struct pt_regs *old_regs;

	irq_enter();
	old_regs = set_irq_regs(regs);
	generic_handle_domain_irq(NULL, hwirq);
	set_irq_regs(old_regs);
	irq_exit();
}
+0 −1
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ config ARM
	select GENERIC_PCI_IOMAP
	select GENERIC_SCHED_CLOCK
	select GENERIC_SMP_IDLE_THREAD
	select HANDLE_DOMAIN_IRQ
	select HARDIRQS_SW_RESEND
	select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
	select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
+1 −4
Original line number Diff line number Diff line
@@ -38,14 +38,11 @@
 */
	.macro	irq_handler
#ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
	ldr	r1, =handle_arch_irq
	mov	r0, sp
	badr	lr, 9997f
	ldr	pc, [r1]
	bl	generic_handle_arch_irq
#else
	arch_irq_handler_default
#endif
9997:
	.endm

	.macro	pabt_helper
Loading