1
0
Fork 0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-01-22 07:53:11 -05:00
linux/drivers/irqchip
Linus Torvalds 4c551165e7 Updates for the interrupt subsystem:
- Consolidation of the machine_kexec_mask_interrupts() by providing a
     generic implementation and replacing the copy & pasta orgy in the
     relevant architectures.
 
   - Prevent unconditional operations on interrupt chips during kexec
     shutdown, which can trigger warnings in certain cases when the
     underlying interrupt has been shut down before.
 
   - Make the enforcement of interrupt handling in interrupt context
     unconditionally available, so that it actually works for non x86
     related interrupt chips. The earlier enablement for ARM GIC chips set
     the required chip flag, but did not notice that the check was hidden
     behind a config switch which is not selected by ARM[64].
 
   - Decrapify the handling of deferred interrupt affinity setting. Some
     interrupt chips require that affinity changes are made from the context
     of handling an interrupt to avoid certain race conditions. For x86 this
     was the default, but with interrupt remapping this requirement was
     lifted and a flag was introduced which tells the core code that
     affinity changes can be done in any context. Unrestricted affinity
     changes are the default for the majority of interrupt chips. RISCV has
     the requirement to add the deferred mode to one of it's interrupt
     controllers, but with the original implementation this would require to
     add the any context flag to all other RISC-V interrupt chips. That's
     backwards, so reverse the logic and require that chips, which need the
     deferred mode have to be marked accordingly. That avoids chasing the
     'sane' chips and marking them.
 
   - Add multi-node support to the Loongarch AVEC interrupt controller
     driver.
 
   - The usual tiny cleanups, fixes and improvements all over the place.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmePkVITHHRnbHhAbGlu
 dXRyb25peC5kZQAKCRCmGPVMDXSYoRbQD/9bHVph/V9Ekl7JAX3aY4gG4JbRhOc7
 dp1VAcHRhktRfoTztYRbjsbMu2nvZ58GKA8bkOS2jHSF/m3PbkIJfOhwk0YdIAoa
 +kdy5yDgqCGfkqW43DN4Cr+CnzGjWMitw67tFp3fhwehMDpDjdt2L28IjtanSS0f
 hO6FV7o65MWeJwxk4Isb2/nvkO+X23Lrp6RrWS8SXBnF9FFXxiPIg/fiOPTizhCh
 1W/bSGxLLb9WwsVzmlGAKVFlXDij0QGaIUug2fdVZ63OsELXD7tJrLSPG133yk92
 ppIa0s6BT4IBsfM00us4hG15PkLuJmP3yWWcoquG0rP8Wq58VOXiN6+rcJIyvB+5
 mWceTH6IKfZGoRQKwXC7BxeBAIb147reiJtb06meq1/8ADIvzafiNy0c8x9i/UaV
 QiyhPVENjaGCGDomZmJQqN7Yb02Wge1k8InQnodDrHxZNl/bX/B1Z8Bxd0n6hPHg
 NSJXYif2AxgaddpohsdygqRDbT6SNyQdj7YjJFY5qAGJ3yFyJ4JB6WTqkWW4o1vH
 3FVqdAnJmejAmmYSkah0Hkem2T5QASQmTWb93PLxiV6q+d0NM8stWAujjyVdIV/B
 W4Uj9mQ20cz54TjLtxqX+A1k6KcqOWRgh1l2QbUlFsgsOP3V8yz47yqYdR9qMWlO
 9kNEjI3sw+G/IQ==
 =q4rj
 -----END PGP SIGNATURE-----

Merge tag 'irq-core-2025-01-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull interrupt subsystem updates from Thomas Gleixner:

 - Consolidate the machine_kexec_mask_interrupts() by providing a
   generic implementation and replacing the copy & pasta orgy in the
   relevant architectures.

 - Prevent unconditional operations on interrupt chips during kexec
   shutdown, which can trigger warnings in certain cases when the
   underlying interrupt has been shut down before.

 - Make the enforcement of interrupt handling in interrupt context
   unconditionally available, so that it actually works for non x86
   related interrupt chips. The earlier enablement for ARM GIC chips set
   the required chip flag, but did not notice that the check was hidden
   behind a config switch which is not selected by ARM[64].

 - Decrapify the handling of deferred interrupt affinity setting.

   Some interrupt chips require that affinity changes are made from the
   context of handling an interrupt to avoid certain race conditions.
   For x86 this was the default, but with interrupt remapping this
   requirement was lifted and a flag was introduced which tells the core
   code that affinity changes can be done in any context. Unrestricted
   affinity changes are the default for the majority of interrupt chips.

   RISCV has the requirement to add the deferred mode to one of it's
   interrupt controllers, but with the original implementation this
   would require to add the any context flag to all other RISC-V
   interrupt chips. That's backwards, so reverse the logic and require
   that chips, which need the deferred mode have to be marked
   accordingly. That avoids chasing the 'sane' chips and marking them.

 - Add multi-node support to the Loongarch AVEC interrupt controller
   driver.

 - The usual tiny cleanups, fixes and improvements all over the place.

* tag 'irq-core-2025-01-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  genirq/generic_chip: Export irq_gc_mask_disable_and_ack_set()
  genirq/timings: Add kernel-doc for a function parameter
  genirq: Remove IRQ_MOVE_PCNTXT and related code
  x86/apic: Convert to IRQCHIP_MOVE_DEFERRED
  genirq: Provide IRQCHIP_MOVE_DEFERRED
  hexagon: Remove GENERIC_PENDING_IRQ leftover
  ARC: Remove GENERIC_PENDING_IRQ
  genirq: Remove handle_enforce_irqctx() wrapper
  genirq: Make handle_enforce_irqctx() unconditionally available
  irqchip/loongarch-avec: Add multi-nodes topology support
  irqchip/ts4800: Replace seq_printf() by seq_puts()
  irqchip/ti-sci-inta : Add module build support
  irqchip/ti-sci-intr: Add module build support
  irqchip/irq-brcmstb-l2: Replace brcmstb_l2_mask_and_ack() by generic function
  irqchip: keystone: Use syscon_regmap_lookup_by_phandle_args
  genirq/kexec: Prevent redundant IRQ masking by checking state before shutdown
  kexec: Consolidate machine_kexec_mask_interrupts() implementation
  genirq: Reuse irq_thread_fn() for forced thread case
  genirq: Move irq_thread_fn() further up in the code
2025-01-21 13:51:07 -08:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c
irq-al-fic.c
irq-alpine-msi.c irqchip/alpine-msi: Fix off-by-one in allocation error path 2024-04-09 11:03:15 +02:00
irq-apple-aic.c irqchip/apple-aic: Only access system registers on SoCs which provide them 2024-09-04 20:43:30 +02:00
irq-armada-370-xp.c irqchip/armada-370-xp: Use mpic_is_ipi_available() in mpic_of_init() 2024-08-08 17:15:01 +02:00
irq-aspeed-i2c-ic.c
irq-aspeed-intc.c irqchip/aspeed-intc: Add AST27XX INTC support 2024-10-17 21:35:28 +02:00
irq-aspeed-scu-ic.c
irq-aspeed-vic.c
irq-ath79-cpu.c
irq-ath79-misc.c
irq-atmel-aic-common.c of: remove internal arguments from of_property_for_each_u32() 2024-07-25 06:53:47 -05:00
irq-atmel-aic-common.h
irq-atmel-aic.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-atmel-aic5.c irqchip/atmel-aic5: Add support for sam9x7 aic 2024-10-02 15:36:47 +02:00
irq-bcm2835.c irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND 2024-07-15 15:13:55 +02:00
irq-bcm2836.c irqchip/bcm2836: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND 2024-12-03 12:15:42 +01:00
irq-bcm6345-l1.c irqchip/irq-bcm6345-l1: Avoid explicit cpumask allocation on stack 2024-04-24 21:23:49 +02:00
irq-bcm7038-l1.c irqchip/irq-bcm7038-l1: Prefer struct_size over open coded arithmetic 2024-02-13 10:53:15 +01:00
irq-bcm7120-l2.c
irq-brcmstb-l2.c irqchip/irq-brcmstb-l2: Replace brcmstb_l2_mask_and_ack() by generic function 2025-01-15 09:47:46 +01:00
irq-clps711x.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-crossbar.c
irq-csky-apb-intc.c
irq-csky-mpintc.c
irq-davinci-cp-intc.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-digicolor.c
irq-dw-apb-ictl.c Revert "irqchip/dw-apb-ictl: Support building as module" 2024-06-25 21:30:48 +02:00
irq-ftintc010.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-gic-common.c irqchip/gic-v3: Make distributor priorities variables 2024-06-24 18:16:44 +01:00
irq-gic-common.h Switch ARM/ARM64 over to the modern per device MSI domains: 2024-07-22 14:02:19 -07:00
irq-gic-pm.c
irq-gic-realview.c
irq-gic-v2m.c irqchip/gic-v2m: Fix refcount leak in gicv2m_of_init() 2024-08-20 17:05:32 +02:00
irq-gic-v3-its-fsl-mc-msi.c
irq-gic-v3-its-msi-parent.c irqchip/gic-v3-its: Correctly fish out the DID for platform MSI 2024-07-18 20:34:46 +02:00
irq-gic-v3-its.c irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity() 2025-01-15 09:42:45 +01:00
irq-gic-v3-mbi.c irqchip/gic_v3_mbi: Switch over to parent domain 2024-07-18 20:31:20 +02:00
irq-gic-v3.c irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly 2025-01-15 09:42:44 +01:00
irq-gic-v4.c irqchip/gic-v4.1: Replace bare number with ID_AA64PFR0_EL1_GIC_V4P1 2024-08-02 14:54:25 +02:00
irq-gic.c irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base 2024-12-13 18:11:52 +01:00
irq-goldfish-pic.c
irq-hip04.c irqchip/gic-v3: Make distributor priorities variables 2024-06-24 18:16:44 +01:00
irq-i8259.c
irq-idt3243x.c
irq-imgpdc.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-imx-gpcv2.c
irq-imx-intmux.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-imx-irqsteer.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-imx-mu-msi.c irqchip/imx-mu-msi: Switch to MSI parent 2024-07-18 20:31:20 +02:00
irq-ingenic-tcu.c
irq-ingenic.c
irq-ixp4xx.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-jcore-aic.c
irq-keystone.c irqchip: keystone: Use syscon_regmap_lookup_by_phandle_args 2025-01-15 09:47:46 +01:00
irq-lan966x-oic.c irqchip: Add support for LAN966x OIC 2024-06-17 15:48:15 +02:00
irq-loongarch-avec.c irqchip/loongarch-avec: Add multi-nodes topology support 2025-01-15 10:19:20 +01:00
irq-loongarch-cpu.c Updates for the interrupt subsystem: 2024-09-17 07:09:17 +02:00
irq-loongson-eiointc.c irqchip/loongson-eiointc: Add virt extension support 2024-11-13 16:18:27 +08:00
irq-loongson-htpic.c
irq-loongson-htvec.c LoongArch: Move irqchip function prototypes to irq-loongson.h 2024-08-23 20:40:27 +02:00
irq-loongson-liointc.c LoongArch: Move irqchip function prototypes to irq-loongson.h 2024-08-23 20:40:27 +02:00
irq-loongson-pch-lpc.c LoongArch: Move irqchip function prototypes to irq-loongson.h 2024-08-23 20:40:27 +02:00
irq-loongson-pch-msi.c irqchip/loongarch-avec: Add AVEC irqchip support 2024-08-23 20:40:27 +02:00
irq-loongson-pch-pic.c LoongArch: Move irqchip function prototypes to irq-loongson.h 2024-08-23 20:40:27 +02:00
irq-loongson.h irqchip/loongarch-avec: Add AVEC irqchip support 2024-08-23 20:40:27 +02:00
irq-lpc32xx.c
irq-ls-extirq.c
irq-ls-scfg-msi.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-ls1x.c
irq-madera.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-mbigen.c Updates for the interrupt subsystem: 2024-09-17 07:09:17 +02:00
irq-mchp-eic.c
irq-meson-gpio.c irqchip/meson-gpio: Convert meson_gpio_irq_controller::lock to 'raw_spinlock_t' 2024-07-29 15:43:50 +02:00
irq-mips-cpu.c
irq-mips-gic.c irqchip/mips-gic: Prevent indirect access to clusters without CPU cores 2024-10-30 15:41:32 +01:00
irq-mmp.c
irq-mscc-ocelot.c irqchip/ocelot: Comment sticky register clearing code 2024-10-02 15:11:07 +02:00
irq-msi-lib.c irqchip/irq-msi-lib: Check for NULL ops in msi_lib_irq_domain_select() 2024-08-23 13:55:15 +02:00
irq-msi-lib.h irqchip/irq-msi-lib: Prepare for DEVICE MSI to replace platform MSI 2024-07-18 20:31:20 +02:00
irq-mst-intc.c
irq-mtk-cirq.c
irq-mtk-sysirq.c
irq-mvebu-gicp.c irqchip/mvebu-gicp: Switch to MSI parent 2024-07-18 20:31:20 +02:00
irq-mvebu-icu.c irqchip/irq-mvebu-icu: Remove platform MSI leftovers 2024-07-18 20:31:21 +02:00
irq-mvebu-odmi.c irqchip/mvebu-odmi: Switch to parent MSI 2024-07-18 20:31:21 +02:00
irq-mvebu-pic.c - Move the ->select callback to the correct ops structure in irq-mvebu-sei to 2024-12-01 12:37:58 -08:00
irq-mvebu-sei.c irqchip/irq-mvebu-sei: Move misplaced select() callback to SEI CP domain 2024-11-26 19:58:27 +01:00
irq-mxs.c irqchip/mxs: Declare icoll_handle_irq() as static 2024-04-23 00:28:14 +02:00
irq-nvic.c
irq-omap-intc.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-ompic.c
irq-or1k-pic.c
irq-orion.c
irq-owl-sirq.c
irq-partition-percpu.c
irq-pic32-evic.c A couple of fixes for interrupt chip drivers: 2024-08-04 08:36:57 -07:00
irq-pruss-intc.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-qcom-mpm.c
irq-rda-intc.c
irq-realtek-rtl.c
irq-renesas-intc-irqpin.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-renesas-irqc.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-renesas-rza1.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-renesas-rzg2l.c irqchip/renesas-rzg2l: Fix missing put_device 2024-10-15 23:54:35 +02:00
irq-renesas-rzv2h.c irqchip: Add RZ/V2H(P) Interrupt Control Unit (ICU) driver 2024-10-16 00:01:06 +02:00
irq-riscv-aplic-direct.c irqchip/riscv-aplic: Add ACPI support 2024-08-27 15:48:36 +02:00
irq-riscv-aplic-main.c irqchip/riscv-aplic: Prevent crash when MSI domain is missing 2024-11-16 00:45:37 +01:00
irq-riscv-aplic-main.h irqchip/riscv-aplic: Add ACPI support 2024-08-27 15:48:36 +02:00
irq-riscv-aplic-msi.c irqchip/riscv-aplic: Prevent crash when MSI domain is missing 2024-11-16 00:45:37 +01:00
irq-riscv-imsic-early.c irqchip/riscv-imsic: Add ACPI support 2024-08-27 15:48:36 +02:00
irq-riscv-imsic-platform.c irqchip/riscv-imsic: Fix output text of base address 2024-10-02 15:12:18 +02:00
irq-riscv-imsic-state.c irqchip/riscv-imsic: Add ACPI support 2024-08-27 15:48:36 +02:00
irq-riscv-imsic-state.h irqchip/riscv-imsic: Add ACPI support 2024-08-27 15:48:36 +02:00
irq-riscv-intc.c irqchip/riscv-intc: Fix SMP=n boot with ACPI 2024-10-15 23:14:25 +02:00
irq-sa11x0.c irqchip: Remove asmlinkage for handlers registered with set_handle_irq() 2024-07-30 13:35:49 +02:00
irq-sifive-plic.c A set of updates for the interrupt subsystem: 2024-11-19 15:54:19 -08:00
irq-sl28cpld.c
irq-sni-exiu.c
irq-sp7021-intc.c
irq-st.c
irq-starfive-jh8100-intc.c irqchip: Add StarFive external interrupt controller 2024-02-26 15:09:18 +01:00
irq-stm32-exti.c irqchip/stm32-exti: Split MCU and MPU code 2024-06-23 19:49:45 +02:00
irq-stm32mp-exti.c irqchip/stm32mp-exti: Use of_property_present() for non-boolean properties 2024-11-07 00:23:59 +01:00
irq-sun4i.c
irq-sun6i-r.c minmax: don't use max() in situations that want a C constant expression 2024-07-28 20:23:27 -07:00
irq-sunxi-nmi.c irqchip/sunxi-nmi: Add missing SKIP_WAKE flag 2025-01-15 09:42:45 +01:00
irq-tb10x.c irqchip: Remove redundant irq_chip::name initialization 2024-03-25 17:38:29 +01:00
irq-tegra.c
irq-thead-c900-aclint-sswi.c irqchip: Add T-HEAD C900 ACLINT SSWI driver 2024-11-07 00:28:27 +01:00
irq-ti-sci-inta.c irqchip/ti-sci-inta : Add module build support 2025-01-15 09:54:29 +01:00
irq-ti-sci-intr.c irqchip/ti-sci-intr: Add module build support 2025-01-15 09:54:29 +01:00
irq-ts4800.c irqchip/ts4800: Replace seq_printf() by seq_puts() 2025-01-15 09:59:42 +01:00
irq-uniphier-aidet.c
irq-versatile-fpga.c Fix a potential abuse of seq_printf() format string in drivers 2024-11-22 15:31:35 +01:00
irq-vf610-mscm-ir.c
irq-vic.c irqchip/vic: Fix a kernel-doc warning 2024-02-21 18:31:08 +01:00
irq-vt8500.c
irq-wpcm450-aic.c
irq-xilinx-intc.c irqchip/xilinx: Fix shift out of bounds 2024-08-10 10:39:24 +02:00
irq-xtensa-mx.c
irq-xtensa-pic.c
irq-zevio.c
irqchip.c irqchip: Plug a OF node reference leak in platform_irqchip_probe() 2025-01-15 10:38:43 +01:00
Kconfig Updates for the interrupt subsystem: 2025-01-21 13:51:07 -08:00
Makefile irqchip: Add T-HEAD C900 ACLINT SSWI driver 2024-11-07 00:28:27 +01:00
qcom-irq-combiner.c
qcom-pdc.c
spear-shirq.c