[GIT PULL] irqchip updates for 5.10

From: Marc Zyngier
Date: Sat Oct 10 2020 - 19:04:07 EST


Hi Thomas,

This is the rather large set of irqchip updates for 5.10.

This time around, we have three new drivers (MStar, Owl SIRQ and
PRUSS), some cross-architecture updates (the arm/arm64 switch to
standard IRQs for IPIs and the corresponding changes to their primary
irqchip drivers), a number of fixes as the fallout from these updates
(the Tegra bug is tasty), some driver updates (QC PDC, WD APB ICTL,
GIC...), and a couple of mundane bug fixes.

Please pull,

M.

The following changes since commit f4d51dffc6c01a9e94650d95ce0104964f8ae822:

Linux 5.9-rc4 (2020-09-06 17:11:40 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 63ea38a402213d8c9c16e58ee4901ff51bc8fe3c:

Merge branch 'irq/mstar' into irq/irqchip-next (2020-10-10 12:46:54 +0100)

----------------------------------------------------------------
irqchip updates for Linux 5.10

Core changes:
- Allow irq retriggering to follow a hierarchy
- Allow interrupt hierarchies to be trimmed at allocation time
- Allow interrupts to be hidden from /proc/interrupts (IPIs)
- Introduce stub for set_handle_irq() when !GENERIC_IRQ_MULTI_HANDLER
- New per-cpu IPI handling flow

Architecture changes:
- Move arm/arm64 IPI handling to the core interrupt code, removing
the home brewed accounting

Driver updates:
- New driver for the MStar (and more recently Mediatek) platforms
- New driver for the Actions Owl SIRQ controller
- New driver for the TI PRUSS infrastructure
- Wake-up support for the Qualcomm PDC controller
- Primary interrupt controller support for the Designware APB ICTL
- Convert the IPI code for GIC, GICv3, hip04, armada-270-xp and bcm2836
to using standard interrupts
- Improve GICv3 pseudo-NMI support to deal with both non-secure and secure
priorities on arm64
- Convert the GIC/GICv3 drivers to using HW-based irq retrigger
- A sprinkling of dev_err_probe() conversion
- A set of NVIDIA Tegra fixes for interrupt hierarchy corruption
- A reset fix for the Loongson HTVEC driver
- A couple of error handling fixes in the TI SCI drivers

----------------------------------------------------------------
Alexandru Elisei (2):
irqchip/gic-v3: Spell out when pseudo-NMIs are enabled
irqchip/gic-v3: Support pseudo-NMIs when SCR_EL3.FIQ == 0

Anson Huang (2):
irqchip/imx-intmux: Use dev_err_probe() to simplify error handling
irqchip/imx-irqsteer: Use dev_err_probe() to simplify error handling

Cristian Ciocaltea (3):
dt-bindings: interrupt-controller: Add Actions SIRQ controller binding
irqchip: Add Actions Semi Owl SIRQ controller
MAINTAINERS: Add entries for Actions Semi Owl SIRQ controller

David Lechner (1):
irqchip/irq-pruss-intc: Implement irq_{get, set}_irqchip_state ops

Grzegorz Jaszczyk (1):
irqchip/irq-pruss-intc: Add a PRUSS irqchip driver for PRUSS interrupts

Huacai Chen (1):
irqchip/loongson-htvec: Fix initial interrupt clearing

Krzysztof Kozlowski (1):
irqchip/ti-sci: Simplify with dev_err_probe()

Lad Prabhakar (1):
irqchip: Kconfig: Update description for RENESAS_IRQC config

Marc Zyngier (36):
genirq: Walk the irq_data hierarchy when resending an interrupt
irqchip/git-v3-its: Implement irq_retrigger callback for device-triggered LPIs
genirq: Add fasteoi IPI flow
genirq: Allow interrupts to be excluded from /proc/interrupts
arm64: Allow IPIs to be handled as normal interrupts
ARM: Allow IPIs to be handled as normal interrupts
irqchip/gic-v3: Describe the SGI range
irqchip/gic-v3: Configure SGIs as standard interrupts
irqchip/gic: Refactor SMP configuration
irqchip/gic: Configure SGIs as standard interrupts
irqchip/gic-common: Don't enable SGIs by default
irqchip/bcm2836: Configure mailbox interrupts as standard interrupts
irqchip/hip04: Configure IPIs as standard interrupts
irqchip/armada-370-xp: Configure IPIs as standard interrupts
arm64: Kill __smp_cross_call and co
arm64: Remove custom IRQ stat accounting
ARM: Kill __smp_cross_call and co
ARM: Remove custom IRQ stat accounting
irqchip/bcm2836: Provide mask/unmask dummy methods for IPIs
irqchip/gic: Cleanup Franken-GIC handling
Merge remote-tracking branch 'origin/irq/misc-5.10' into irq/irqchip-next
Merge remote-tracking branch 'origin/irq/dev_err_probe' into irq/irqchip-next
Merge remote-tracking branch 'origin/irq/gic-v3-nmi-ns' into irq/irqchip-next
Merge remote-tracking branch 'origin/irq/ipi-as-irq' into irq/irqchip-next
Merge remote-tracking branch 'origin/irq/gic-retrigger' into irq/irqchip-next
arm: Move ipi_teardown() to a CONFIG_HOTPLUG_CPU section
ARM: Handle no IPI being registered in show_ipi_list()
Merge branch 'irq/ipi-as-irq', remote-tracking branches 'origin/irq/dw' and 'origin/irq/owl' into irq/irqchip-next
Merge branch 'irq/qcom-pdc-wakeup' into irq/irqchip-next
genirq/irqdomain: Allow partial trimming of irq_data hierarchy
gpio: tegra186: Allow optional irq parent callbacks
soc/tegra: pmc: Allow optional irq parent callbacks
soc/tegra: pmc: Don't create fake interrupt hierarchy levels
Merge branch 'irq/tegra-pmc' into irq/irqchip-next
Merge branch 'irq/irqchip-fixes' into irq/irqchip-next
Merge branch 'irq/mstar' into irq/irqchip-next

Mark-PK Tsai (2):
irqchip/irq-mst: Add MStar interrupt controller support
dt-bindings: interrupt-controller: Add MStar interrupt controller

Maulik Shah (6):
pinctrl: qcom: Set IRQCHIP_SET_TYPE_MASKED and IRQCHIP_MASK_ON_SUSPEND flags
pinctrl: qcom: Use return value from irq_set_wake() call
genirq/PM: Introduce IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND flag
pinctrl: qcom: Set IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND flag
irqchip/qcom-pdc: Set IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND flag
irqchip/qcom-pdc: Reset PDC interrupts during init

Suman Anna (3):
dt-bindings: irqchip: Add PRU-ICSS interrupt controller bindings
irqchip/irq-pruss-intc: Add logic for handling reserved interrupts
irqchip/irq-pruss-intc: Add support for ICSSG INTC on K3 SoCs

Valentin Schneider (2):
irqchip/gic-v2, v3: Implement irq_chip->irq_retrigger()
irqchip/gic-v2, v3: Prevent SW resends entirely

YueHaibing (3):
irqchip/ti-sci-inta: Fix unsigned comparison to zero
irqchip/ti-sci-intr: Fix unsigned comparison to zero
arm64: Fix -Wunused-function warning when !CONFIG_HOTPLUG_CPU

Zhen Lei (4):
genirq: Add stub for set_handle_irq() when !GENERIC_IRQ_MULTI_HANDLER
irqchip/dw-apb-ictl: Refactor priot to introducing hierarchical irq domains
irqchip/dw-apb-ictl: Add primary interrupt controller support
dt-bindings: dw-apb-ictl: Update binding to describe use as primary interrupt controller

.../interrupt-controller/actions,owl-sirq.yaml | 65 ++
.../interrupt-controller/mstar,mst-intc.yaml | 64 ++
.../interrupt-controller/snps,dw-apb-ictl.txt | 14 +-
.../interrupt-controller/ti,pruss-intc.yaml | 158 +++++
MAINTAINERS | 9 +
arch/arm/Kconfig | 1 +
arch/arm/include/asm/hardirq.h | 17 -
arch/arm/include/asm/smp.h | 5 +-
arch/arm/kernel/irq.c | 1 -
arch/arm/kernel/smp.c | 140 +++--
arch/arm64/Kconfig | 1 +
arch/arm64/include/asm/arch_gicv3.h | 8 +-
arch/arm64/include/asm/hardirq.h | 9 -
arch/arm64/include/asm/irq_work.h | 4 +-
arch/arm64/include/asm/ptrace.h | 14 +-
arch/arm64/include/asm/smp.h | 16 +-
arch/arm64/kernel/image-vars.h | 2 +
arch/arm64/kernel/irq.c | 11 +-
arch/arm64/kernel/smp.c | 129 ++--
drivers/gpio/gpio-tegra186.c | 15 +-
drivers/irqchip/Kconfig | 24 +-
drivers/irqchip/Makefile | 3 +
drivers/irqchip/irq-armada-370-xp.c | 262 +++++---
drivers/irqchip/irq-bcm2836.c | 153 ++++-
drivers/irqchip/irq-dw-apb-ictl.c | 81 ++-
drivers/irqchip/irq-gic-common.c | 3 -
drivers/irqchip/irq-gic-v3-its.c | 6 +
drivers/irqchip/irq-gic-v3.c | 184 ++++--
drivers/irqchip/irq-gic.c | 247 ++++----
drivers/irqchip/irq-hip04.c | 89 ++-
drivers/irqchip/irq-imx-intmux.c | 9 +-
drivers/irqchip/irq-imx-irqsteer.c | 9 +-
drivers/irqchip/irq-loongson-htvec.c | 4 +-
drivers/irqchip/irq-mst-intc.c | 199 ++++++
drivers/irqchip/irq-owl-sirq.c | 359 +++++++++++
drivers/irqchip/irq-pruss-intc.c | 664 +++++++++++++++++++++
drivers/irqchip/irq-ti-sci-inta.c | 14 +-
drivers/irqchip/irq-ti-sci-intr.c | 14 +-
drivers/irqchip/qcom-pdc.c | 14 +-
drivers/pinctrl/qcom/pinctrl-msm.c | 11 +-
drivers/soc/tegra/pmc.c | 91 ++-
include/linux/irq.h | 60 +-
include/linux/irqdomain.h | 3 +
kernel/irq/chip.c | 27 +
kernel/irq/debugfs.c | 4 +
kernel/irq/irqdomain.c | 99 ++-
kernel/irq/pm.c | 34 +-
kernel/irq/proc.c | 2 +-
kernel/irq/resend.c | 15 +-
kernel/irq/settings.h | 7 +
50 files changed, 2761 insertions(+), 613 deletions(-)
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/actions,owl-sirq.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/mstar,mst-intc.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml
create mode 100644 drivers/irqchip/irq-mst-intc.c
create mode 100644 drivers/irqchip/irq-owl-sirq.c
create mode 100644 drivers/irqchip/irq-pruss-intc.c