[GIT PULL] irqchip updates for 6.3

From: Marc Zyngier
Date: Sat Feb 18 2023 - 09:35:07 EST


Thomas,

Here's a small set of irqchip and irqdomain updates. The most
interesting thing is probably the irqdomain locking rework, while the
rest is the usual set of minor updates and fixes (details in the tag).

Please pull,

M.

The following changes since commit 5dc4c995db9eb45f6373a956eb1f69460e69e6d4:

Linux 6.2-rc4 (2023-01-15 09:22:43 -0600)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git tags/irqchip-6.3

for you to fetch changes up to a83bf176fed4ee88dad84d59f77dde153b9a442a:

Merge branch irq/bcm-l2-fixes into irq/irqchip-next (2023-02-18 14:25:09 +0000)

----------------------------------------------------------------
irqchip updates for 6.3

- New and improved irqdomain locking, closing a number of races that
became apparent now that we are able to probe drivers in parallel

- A bunch of OF node refcounting bugs have been fixed

- We now have a new IPI mux, lifted from the Apple AIC code and
made common. It is expected that riscv will eventually benefit
from it

- Two small fixes for the Broadcom L2 drivers

- Various cleanups and minor bug fixes

----------------------------------------------------------------
Anup Patel (1):
genirq: Add mechanism to multiplex a single HW IPI

Florian Fainelli (2):
irqchip/irq-brcmstb-l2: Set IRQ_LEVEL for level triggered interrupts
irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts

Huacai Chen (1):
irqchip/loongson-liointc: Save/restore int_edge/int_pol registers during S3/S4

Johan Hovold (19):
irqdomain: Fix association race
irqdomain: Fix disassociation race
irqdomain: Drop bogus fwspec-mapping error handling
irqdomain: Look for existing mapping only once
irqdomain: Refactor __irq_domain_alloc_irqs()
irqdomain: Fix mapping-creation race
irqdomain: Drop revmap mutex
irqdomain: Drop dead domain-name assignment
irqdomain: Drop leftover brackets
irqdomain: Clean up irq_domain_push/pop_irq()
x86/ioapic: Use irq_domain_create_hierarchy()
x86/uv: Use irq_domain_create_hierarchy()
irqchip/alpine-msi: Use irq_domain_add_hierarchy()
irqchip/gic-v2m: Use irq_domain_create_hierarchy()
irqchip/gic-v3-its: Use irq_domain_create_hierarchy()
irqchip/gic-v3-mbi: Use irq_domain_create_hierarchy()
irqchip/loongson-pch-msi: Use irq_domain_create_hierarchy()
irqchip/mvebu-odmi: Use irq_domain_create_hierarchy()
irqdomain: Switch to per-domain locking

Lukas Bulwahn (1):
irqchip/ls-scfg-msi: Simplify Kconfig dependencies

Marc Zyngier (8):
irqchip/apple-aic: Move over to core ipi-mux
genirq/ipi-mux: Use irq_domain_alloc_irqs()
Merge branch irq/ipi-mux into irq/irqchip-next
Merge branch irq/refcount into irq/irqchip-next
Merge branch irq/misc-6.3 into irq/irqchip-next
irqdomain: Fix domain registration race
Merge branch irq/irqdomain-locking into irq/irqchip-next
Merge branch irq/bcm-l2-fixes into irq/irqchip-next

Miaoqian Lin (4):
irqchip: Fix refcount leak in platform_irqchip_probe
irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains
irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe
irqchip/ti-sci: Fix refcount leak in ti_sci_intr_irq_domain_probe

Ryan Chen (1):
irqchip/aspeed-scu-ic: Correctly initialise status and enable registers

arch/x86/kernel/apic/io_apic.c | 7 +-
arch/x86/platform/uv/uv_irq.c | 7 +-
drivers/irqchip/Kconfig | 3 +-
drivers/irqchip/irq-alpine-msi.c | 9 +-
drivers/irqchip/irq-apple-aic.c | 161 +------------
drivers/irqchip/irq-aspeed-scu-ic.c | 5 +-
drivers/irqchip/irq-bcm7120-l2.c | 3 +-
drivers/irqchip/irq-brcmstb-l2.c | 6 +-
drivers/irqchip/irq-gic-v2m.c | 5 +-
drivers/irqchip/irq-gic-v3-its.c | 13 +-
drivers/irqchip/irq-gic-v3-mbi.c | 5 +-
drivers/irqchip/irq-loongson-liointc.c | 13 ++
drivers/irqchip/irq-loongson-pch-msi.c | 9 +-
drivers/irqchip/irq-mvebu-gicp.c | 1 +
drivers/irqchip/irq-mvebu-odmi.c | 13 +-
drivers/irqchip/irq-ti-sci-intr.c | 1 +
drivers/irqchip/irqchip.c | 8 +-
include/linux/irq.h | 3 +
include/linux/irqdomain.h | 6 +-
kernel/irq/Kconfig | 5 +
kernel/irq/Makefile | 1 +
kernel/irq/ipi-mux.c | 206 +++++++++++++++++
kernel/irq/irqdomain.c | 408 ++++++++++++++++++++-------------
23 files changed, 537 insertions(+), 361 deletions(-)
create mode 100644 kernel/irq/ipi-mux.c