irq: remove handle_domain_{irq,nmi}()
authorMark Rutland <mark.rutland@arm.com>
Wed, 20 Oct 2021 19:23:09 +0000 (20:23 +0100)
committerMark Rutland <mark.rutland@arm.com>
Tue, 26 Oct 2021 09:13:31 +0000 (10:13 +0100)
commit0953fb263714e1c8c1c3d395036d9a14310081dd
tree993373d8c1833347a90e071d44862b63a1c9a1a3
parent5aecc243776e89b0c462edd0a589030baba99ef8
irq: remove handle_domain_{irq,nmi}()

Now that entry code handles IRQ entry (including setting the IRQ regs)
before calling irqchip code, irqchip code can safely call
generic_handle_domain_irq(), and there's no functional reason for it to
call handle_domain_irq().

Let's cement this split of responsibility and remove handle_domain_irq()
entirely, updating irqchip drivers to call generic_handle_domain_irq().

For consistency, handle_domain_nmi() is similarly removed and replaced
with a generic_handle_domain_nmi() function which also does not perform
any entry logic.

Previously handle_domain_{irq,nmi}() had a WARN_ON() which would fire
when they were called in an inappropriate context. So that we can
identify similar issues going forward, similar WARN_ON_ONCE() logic is
added to the generic_handle_*() functions, and comments are updated for
clarity and consistency.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
48 files changed:
Documentation/core-api/irq/irq-domain.rst
arch/arm/Kconfig
arch/arm/mach-imx/avic.c
arch/arm/mach-imx/tzic.c
arch/arm/mach-omap1/irq.c
arch/arm/mach-s3c/irq-s3c24xx.c
arch/arm64/Kconfig
arch/csky/Kconfig
arch/openrisc/Kconfig
arch/riscv/Kconfig
drivers/irqchip/irq-apple-aic.c
drivers/irqchip/irq-armada-370-xp.c
drivers/irqchip/irq-aspeed-vic.c
drivers/irqchip/irq-atmel-aic.c
drivers/irqchip/irq-atmel-aic5.c
drivers/irqchip/irq-bcm2835.c
drivers/irqchip/irq-bcm2836.c
drivers/irqchip/irq-clps711x.c
drivers/irqchip/irq-csky-apb-intc.c
drivers/irqchip/irq-csky-mpintc.c
drivers/irqchip/irq-davinci-aintc.c
drivers/irqchip/irq-davinci-cp-intc.c
drivers/irqchip/irq-digicolor.c
drivers/irqchip/irq-dw-apb-ictl.c
drivers/irqchip/irq-ftintc010.c
drivers/irqchip/irq-gic-v3.c
drivers/irqchip/irq-gic.c
drivers/irqchip/irq-hip04.c
drivers/irqchip/irq-ixp4xx.c
drivers/irqchip/irq-lpc32xx.c
drivers/irqchip/irq-mmp.c
drivers/irqchip/irq-mxs.c
drivers/irqchip/irq-nvic.c
drivers/irqchip/irq-omap-intc.c
drivers/irqchip/irq-or1k-pic.c
drivers/irqchip/irq-orion.c
drivers/irqchip/irq-rda-intc.c
drivers/irqchip/irq-riscv-intc.c
drivers/irqchip/irq-sa11x0.c
drivers/irqchip/irq-sun4i.c
drivers/irqchip/irq-versatile-fpga.c
drivers/irqchip/irq-vic.c
drivers/irqchip/irq-vt8500.c
drivers/irqchip/irq-wpcm450-aic.c
drivers/irqchip/irq-zevio.c
include/linux/irqdesc.h
kernel/irq/Kconfig
kernel/irq/irqdesc.c