[GIT pull] irq/core for v5.7

From: Thomas Gleixner
Date: Mon Mar 30 2020 - 10:49:58 EST


Linus,

please pull the latest irq/core branch from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-core-2020-03-30

up to: 8a13b02a010a: Merge tag 'irqchip-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/core

Updates for the interrupt subsystem:

Treewide:

- Cleanup of setup_irq() which is not longer required because the
memory allocator is available early. Most cleanup changes come
through the various maintainer trees, so the final removal of
setup_irq() is postponed towards the end of the merge window.

Core:

- Protection against unsafe invocation of interrupt handlers and unsafe
interrupt injection including a fixup of the offending PCI/AER error
injection mechanism.

Invoking interrupt handlers from arbitrary contexts, i.e. outside of
an actual interrupt, can cause inconsistent state on the fragile
x86 interrupt affinity changing hardware trainwreck.

Drivers:

- Second wave of support for the new ARM GICv4.1
- Multi-instance support for Xilinx and PLIC interrupt controllers
- CPU-Hotplug support for PLIC
- The obligatory new driver for X1000 TCU
- Enhancements, cleanups and fixes all over the place

Thanks,

tglx

------------------>
Alexander Sverdlin (1):
genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()

Alexandre Torgue (2):
irqchip/stm32: Add irq retrigger support
pinctrl: stm32: Add level interrupt support to gpio irq chip

Anson Huang (1):
irqchip: Add COMPILE_TEST support for IMX_INTMUX

Atish Patra (2):
irqchip/sifive-plic: Enable/Disable external interrupts upon cpu online/offline
irqchip/sifive-plic: Add support for multiple PLICs

Geert Uytterhoeven (1):
irqchip/renesas-intc-irqpin: Restore devm_ioremap() alignment

Gustavo A. R. Silva (2):
irqchip/irq-bcm7038-l1: Replace zero-length array with flexible-array member
irqchip/qcom-irq-combiner: Replace zero-length array with flexible-array member

Hans de Goede (1):
x86: Select HARDIRQS_SW_RESEND on x86

Heyi Guo (2):
irqchip/gic-v3-its: Fix access width for gicr_syncr
irqchip/gic-v4: Use Inner-Shareable attributes for virtual pending tables

Linus Walleij (1):
irqchip: vic: Support cascaded VIC in device tree

Lukas Wunner (1):
irqchip/bcm2835: Quiesce IRQs left enabled by bootloader

Marc Zyngier (20):
irqchip/gic-v3-its: Probe ITS page size for all GITS_BASERn registers
irqchip/atmel-aic: Fix irq_retrigger callback return value
irqchip/atmel-aic5: Fix irq_retrigger callback return value
ARM: sa1111: Fix irq_retrigger callback return value
irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency
irqchip/gic-v3: Use SGIs without active state if offered
irqchip/gic-v4.1: Skip absent CPUs while iterating over redistributors
irqchip/gic-v4.1: Ensure mutual exclusion between vPE affinity change and RD access
irqchip/gic-v4.1: Ensure mutual exclusion betwen invalidations on the same RD
irqchip/gic-v4.1: Advertise support v4.1 to KVM
irqchip/gic-v4.1: Map the ITS SGIR register page
irqchip/gic-v4.1: Plumb skeletal VSGI irqchip
irqchip/gic-v4.1: Add initial SGI configuration
irqchip/gic-v4.1: Plumb mask/unmask SGI callbacks
irqchip/gic-v4.1: Plumb get/set_irqchip_state SGI callbacks
irqchip/gic-v4.1: Plumb set_vcpu_affinity SGI callbacks
irqchip/gic-v4.1: Move doorbell management to the GICv4 abstraction layer
irqchip/gic-v4.1: Add VSGI allocation/teardown
irqchip/gic-v4.1: Add VSGI property setup
irqchip/gic-v4.1: Eagerly vmap vPEs

Marek Vasut (1):
irqchip/stm32: Retrigger both in eoi and unmask callbacks

Michal Simek (2):
irqchip/xilinx: Fill error code when irq domain registration fails
irqchip/xilinx: Enable generic irq multi handler

Mubin Sayyed (2):
irqchip/xilinx: Add support for multiple instances
irqchip/xilinx: Do not call irq_set_default_host()

Sungbo Eo (2):
irqchip/versatile-fpga: Handle chained IRQs properly
irqchip/versatile-fpga: Apply clear-mask earlier

Thomas Gleixner (7):
genirq/debugfs: Add missing sanity checks to interrupt injection
genirq: Add protection against unsafe usage of generic_handle_irq()
x86/apic/vector: Force interupt handler invocation to irq context
genirq: Add return value to check_irq_resend()
genirq: Sanitize state handling in check_irq_resend()
genirq: Provide interrupt injection mechanism
PCI/AER: Fix the broken interrupt injection

Zenghui Yu (1):
irqchip/gic-v4.1: Wait for completion of redistributor's INVALL operation

afzal mohammed (6):
irqchip: Replace setup_irq() by request_irq()
alpha: Replace setup_irq() by request_irq()
c6x: Replace setup_irq() by request_irq()
hexagon: Replace setup_irq() by request_irq()
sh: Replace setup_irq() by request_irq()
unicore32: Replace setup_irq() by request_irq()

luanshi (2):
irqdomain: Fix function documentation of __irq_domain_alloc_fwnode()
irqchip/gic-v3: Move irq_domain_update_bus_token to after checking for NULL domain

åçæ (Zhou Yanjie) (1):
irqchip/ingenic: Add support for TCU of X1000.


arch/alpha/kernel/irq_alpha.c | 29 +-
arch/alpha/kernel/irq_i8259.c | 8 +-
arch/alpha/kernel/irq_impl.h | 7 +-
arch/alpha/kernel/irq_pyxis.c | 3 +-
arch/alpha/kernel/sys_alcor.c | 3 +-
arch/alpha/kernel/sys_cabriolet.c | 3 +-
arch/alpha/kernel/sys_eb64p.c | 3 +-
arch/alpha/kernel/sys_marvel.c | 2 +-
arch/alpha/kernel/sys_miata.c | 6 +-
arch/alpha/kernel/sys_ruffian.c | 3 +-
arch/alpha/kernel/sys_rx164.c | 3 +-
arch/alpha/kernel/sys_sx164.c | 3 +-
arch/alpha/kernel/sys_wildfire.c | 7 +-
arch/alpha/kernel/time.c | 6 +-
arch/arm/common/sa1111.c | 7 +-
arch/c6x/platforms/timer64.c | 11 +-
arch/hexagon/kernel/smp.c | 22 +-
arch/hexagon/kernel/time.c | 11 +-
arch/microblaze/Kconfig | 2 +
arch/microblaze/include/asm/irq.h | 3 -
arch/microblaze/kernel/irq.c | 21 +-
arch/riscv/kernel/traps.c | 2 +-
arch/sh/boards/mach-cayman/irq.c | 18 +-
arch/sh/drivers/dma/dma-pvr2.c | 9 +-
arch/unicore32/kernel/time.c | 11 +-
arch/x86/Kconfig | 1 +
arch/x86/kernel/apic/vector.c | 6 +
drivers/irqchip/Kconfig | 2 +-
drivers/irqchip/irq-atmel-aic.c | 2 +-
drivers/irqchip/irq-atmel-aic5.c | 2 +-
drivers/irqchip/irq-bcm2835.c | 15 +
drivers/irqchip/irq-bcm7038-l1.c | 2 +-
drivers/irqchip/irq-gic-v3-its.c | 532 ++++++++++++++++++++++++++----
drivers/irqchip/irq-gic-v3.c | 16 +-
drivers/irqchip/irq-gic-v4.c | 134 +++++++-
drivers/irqchip/irq-i8259.c | 16 +-
drivers/irqchip/irq-ingenic-tcu.c | 1 +
drivers/irqchip/irq-ingenic.c | 9 +-
drivers/irqchip/irq-renesas-intc-irqpin.c | 2 +-
drivers/irqchip/irq-sifive-plic.c | 119 +++++--
drivers/irqchip/irq-stm32-exti.c | 14 +-
drivers/irqchip/irq-versatile-fpga.c | 18 +-
drivers/irqchip/irq-vic.c | 9 +-
drivers/irqchip/irq-xilinx-intc.c | 123 ++++---
drivers/irqchip/qcom-irq-combiner.c | 2 +-
drivers/pci/pcie/Kconfig | 1 +
drivers/pci/pcie/aer_inject.c | 6 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 57 +++-
include/kvm/arm_vgic.h | 1 +
include/linux/cpuhotplug.h | 1 +
include/linux/interrupt.h | 2 +
include/linux/irq.h | 13 +
include/linux/irqchip/arm-gic-common.h | 2 +
include/linux/irqchip/arm-gic-v3.h | 23 +-
include/linux/irqchip/arm-gic-v4.h | 25 +-
kernel/irq/Kconfig | 5 +
kernel/irq/chip.c | 2 +-
kernel/irq/debugfs.c | 28 +-
kernel/irq/internals.h | 10 +-
kernel/irq/irqdesc.c | 6 +
kernel/irq/irqdomain.c | 14 +-
kernel/irq/resend.c | 143 ++++++--
virt/kvm/arm/vgic/vgic-v3.c | 4 +-
virt/kvm/arm/vgic/vgic-v4.c | 34 +-
64 files changed, 1185 insertions(+), 420 deletions(-)