linux/drivers/irqchip
Sascha Bischoff 1017911fcc irqchip/gic-v5: Preserve ICC_CR0_EL1 state
In addition to EN, ICC_CR0_EL1 contains other fields, such as LINK and
LINK_IDLE. The driver only needs to modify EN, and must preserve the
values of all other fields when enabling or disabling the CPU
interface.

Define the missing LINK and LINK_IDLE fields, and use read-modify-write
accesses to update EN without affecting the rest of ICC_CR0_EL1.

Fixes: 7ec80fb3f0 ("irqchip/gic-v5: Add GICv5 PPI support")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://patch.msgid.link/20260907164945.714545-1-sascha.bischoff@arm.com
Closes: https://lore.kernel.org/r/20260807121703.D4B7A1F00A3A@smtp.kernel.org
2026-09-07 21:44:17 +02:00
..
.kunitconfig irqchip/ast2700-intc: Add KUnit tests for route resolution 2026-04-30 12:53:04 +02:00
alphascale_asm9260-icoll.h
exynos-combiner.c irqchip/exynos-combiner: Remove useless spinlock 2026-06-03 18:27:05 +02:00
irq-aclint-sswi.c irqchip/aslint-sswi: Fix error check of of_io_request_and_map() result 2026-01-18 14:39:18 +01:00
irq-al-fic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-alpine-msi.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
irq-apple-aic.c irqchip/apple-aic: Add support for "apple,t8122-aic3" 2026-03-11 09:59:29 +01:00
irq-armada-370-xp.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-aspeed-i2c-ic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-aspeed-scu-ic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-aspeed-vic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ast2700-intc1.c irqchip/ast2700-intc: Avoid allocating in the irq_domain activate() callback 2026-08-19 21:45:30 +02:00
irq-ast2700-intc0-test.c irqchip/ast2700-intc: Add KUnit tests for route resolution 2026-04-30 12:53:04 +02:00
irq-ast2700-intc0.c irqchip/ast2700-intc: Disable all interrupt merge banks on probe 2026-08-20 08:29:33 +02:00
irq-ast2700.c irqchip/ast2700-intc: Add AST2700-A2 support 2026-04-30 12:53:03 +02:00
irq-ast2700.h irqchip/ast2700-intc: Add AST2700-A2 support 2026-04-30 12:53:03 +02:00
irq-ath79-cpu.c irqchip/ath79-cpu: Remove unused function 2026-05-11 15:06:47 +02:00
irq-ath79-misc.c irqchip/ath79-misc: Fix missing prototypes warnings 2025-06-20 21:38:52 +02:00
irq-atmel-aic-common.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-atmel-aic-common.h
irq-atmel-aic.c irqchip/atmel-aic[5]: Fix incorrect lock guard conversion 2025-08-23 21:41:07 +02:00
irq-atmel-aic5.c irqchip/atmel-aic[5]: Fix incorrect lock guard conversion 2025-08-23 21:41:07 +02:00
irq-bcm2712-mip.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-bcm2835.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-bcm2836.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-bcm6345-l1.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
irq-bcm7038-l1.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
irq-bcm7120-l2.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
irq-brcmstb-l2.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-clps711x.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-crossbar.c irqchip/crossbar: Fix parent domain resource leak 2026-06-21 14:59:20 +02:00
irq-csky-apb-intc.c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
irq-csky-mpintc.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-davinci-cp-intc.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-digicolor.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-dw-apb-ictl.c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
irq-econet-en751221.c irqchip/econet-en751221: Support MIPS 34Kc VEIC mode 2026-05-11 15:29:31 +02:00
irq-ftintc010.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +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 irqchip/gic-v3: Rename GICv3 ITS MSI parent 2025-07-08 18:35:52 +01:00
irq-gic-its-msi-parent.c irqchip/gic-v3-its: Enable dynamic MSI-X allocation 2026-07-15 09:10:45 +02:00
irq-gic-its-msi-parent.h irqchip/gic-v5: Add GICv5 ITS support 2025-07-08 18:35:52 +01:00
irq-gic-pm.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-gic-realview.c irqchip/gic/realview: Fix refcount leak in realview_gic_of_init 2022-06-09 17:36:57 +01:00
irq-gic-v2m.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-gic-v3-its.c pci-v7.3-changes 2026-08-23 12:44:10 -07:00
irq-gic-v3-mbi.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-gic-v3.c arm64 updates for 7.3 2026-08-18 11:57:17 -07:00
irq-gic-v4.c KVM: arm64: WARN if unmapping a vLPI fails in any path 2025-06-20 13:52:29 -07:00
irq-gic-v5-irs.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
irq-gic-v5-its.c irqchip/gic-v5: Allocate ITS parent LPIs as a range 2026-05-11 14:56:04 +02:00
irq-gic-v5-iwb.c Interrupt chip driver updates: 2026-08-18 15:24:18 -07:00
irq-gic-v5.c irqchip/gic-v5: Preserve ICC_CR0_EL1 state 2026-09-07 21:44:17 +02:00
irq-gic.c ACPI: irq: Move RISC-V interrupt controllers autodep to ACPI IRQ code 2026-07-09 15:30:18 +02:00
irq-goldfish-pic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-hip04.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-i8259.c syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01:00
irq-idt3243x.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-imx-gpcv2.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-imx-intmux.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
irq-imx-irqsteer.c irqchip/imx-irqsteer: Add NXP S32N79 support 2026-03-11 09:55:26 +01:00
irq-imx-mu-msi.c irqchip: Pass platform device to platform drivers 2025-10-16 18:17:27 +02:00
irq-ingenic-tcu.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ingenic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ixp4xx.c irqchip: Switch to of_fwnode_handle() 2025-05-16 21:06:07 +02:00
irq-jcore-aic.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-keystone.c irqchip: Use dev_fwnode() 2025-06-12 15:08:12 +02:00
irq-lan966x-oic.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
irq-loongarch-avec.c irqchip/loongarch-ir: Add IR (interrupt redirection) irqchip support 2026-06-03 22:28:11 +02:00
irq-loongarch-cpu.c ACPI: irq: Move RISC-V interrupt controllers autodep to ACPI IRQ code 2026-07-09 15:30:18 +02:00
irq-loongarch-ir.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
irq-loongson-eiointc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson-htpic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson-htvec.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson-liointc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson-pch-lpc.c irqchip/loongson-pch-lpc: Add OF init code 2026-03-26 16:15:04 +01:00
irq-loongson-pch-msi.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson-pch-pic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-loongson.h irqchip/loongarch-ir: Add IR (interrupt redirection) irqchip support 2026-06-03 22:28:11 +02:00
irq-lpc32xx.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ls-extirq.c irqchip/ls-extirq: Fix devm_of_iomap() error check 2026-02-24 18:35:49 +01:00
irq-ls-scfg-msi.c irqchip/ls-scfg-msi: Fix NULL dereference in error handling 2025-07-18 14:54:45 +02:00
irq-ls1x.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-madera.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-mbigen.c Revert "irqchip/mbigen: Fix mbigen node address layout" 2026-09-04 16:12:53 +02:00
irq-mchp-eic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-meson-gpio.c irqchip/meson-gpio: Use the correct register in meson_s4_gpio_irq_set_type() 2026-05-11 15:22:48 +02:00
irq-mips-cpu.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-mips-gic.c irqchip/mips-gic: Allow forced affinity 2025-06-21 18:20:54 +02:00
irq-mmp.c irqchip/mmp: Make icu_irq_chip variable static const 2026-02-17 11:03:56 +01:00
irq-mscc-ocelot.c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
irq-msi-lib.c irqchip/msi-lib: Refuse initialization when irq_write_msi_msg() is missing 2026-02-24 08:17:14 +01:00
irq-mst-intc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-mtk-cirq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-mtk-sysirq.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
irq-mvebu-gicp.c irqchip/mvebu-gicp: Fix an IS_ERR() vs NULL check in probe() 2025-08-24 12:00:47 +02:00
irq-mvebu-icu.c irqchip: Make irq-msi-lib.h globally available 2025-05-16 21:32:19 +02:00
irq-mvebu-odmi.c irqchip: Use IS_ERR_OR_NULL() instead of NULL and IS_ERR() checks 2026-03-10 18:34:52 +01:00
irq-mvebu-pic.c irqchip/mvebu-pic: Drop unused module alias 2025-10-16 18:17:28 +02:00
irq-mvebu-sei.c irqchip/mvebu: Convert to msi_create_parent_irq_domain() helper 2025-05-16 21:32:20 +02:00
irq-mxs.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-nvic.c irqchip: Use int type to store negative error codes 2025-09-03 14:10:30 +02:00
irq-omap-intc.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-ompic.c openrisc: Fix IPIs on simple multicore systems 2026-01-16 16:38:56 +00:00
irq-or1k-pic.c openrisc: Fix IPIs on simple multicore systems 2026-01-16 16:38:56 +00:00
irq-orion.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-owl-sirq.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-pic32-evic.c irqchip/irq-pic32-evic: Add __maybe_unused for board_bind_eic_interrupt in COMPILE_TEST 2026-04-07 11:19:02 +02:00
irq-pruss-intc.c irqchip: Use dev_fwnode() 2025-06-12 15:08:12 +02:00
irq-qcom-mpm.c irqchip: Remove redundant dev_err()/dev_err_probe() 2026-07-15 08:40:22 +02:00
irq-rda-intc.c
irq-realtek-rtl.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
irq-renesas-intc-irqpin.c irqchip/renesas-intc-irqpin: Convert to DEFINE_SIMPLE_DEV_PM_OPS() 2025-07-18 16:46:09 +02:00
irq-renesas-irqc.c irqchip/renesas-irqc: Fix generic interrupt chip leak on remove 2026-07-15 09:10:46 +02:00
irq-renesas-rza1.c irqchip/renesas-rza1: Use for_each_of_imap_item iterator 2026-01-15 12:03:27 +01:00
irq-renesas-rzg2l.c irqchip/renesas-rzg2l: Fix loss of interrupt 2026-08-19 21:40:13 +02:00
irq-renesas-rzt2h.c irqchip: Remove redundant dev_err()/dev_err_probe() 2026-07-15 08:40:22 +02:00
irq-renesas-rzv2h.c irqchip: Remove redundant dev_err()/dev_err_probe() 2026-07-15 08:40:22 +02:00
irq-riscv-aplic-direct.c irqchip/riscv-aplic: Preserve APLIC states across suspend/resume 2025-12-16 19:08:43 +01:00
irq-riscv-aplic-main.c irqchip/riscv-aplic: Restrict genpd notifier to device tree only 2026-03-31 10:11:29 +02:00
irq-riscv-aplic-main.h irqchip/riscv-aplic: Preserve APLIC states across suspend/resume 2025-12-16 19:08:43 +01: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/irq-riscv-imsic-early: Fix fwnode leak on state setup failure 2026-06-30 18:49:48 +02:00
irq-riscv-imsic-platform.c irqchip/riscv-imsic: Revert "Remove redundant irq_data lookups" 2026-01-13 09:51:46 +01:00
irq-riscv-imsic-state.c irqchip/riscv-imsic: Add nr_guest_files in per-HART local config 2026-05-26 09:05:10 +05:30
irq-riscv-imsic-state.h Revert "irqchip/riscv-imsic: Embed the vector array in lpriv" 2026-01-09 16:10:05 +01:00
irq-riscv-intc.c ACPI: irq: Move RISC-V interrupt controllers autodep to ACPI IRQ code 2026-07-09 15:30:18 +02:00
irq-riscv-rpmi-sysmsi.c irqchip/riscv-rpmi-sysmsi: Fix mailbox channel leak in rpmi_sysmsi_probe() 2026-03-17 11:16:15 +01:00
irq-sa11x0.c syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01:00
irq-sg2042-msi.c irqchip/sg2042-msi: Set irq type according to DT configuration 2025-09-04 14:52:48 +02:00
irq-sifive-plic.c Miscellaneous irqchip driver fixes: 2026-03-01 10:58:16 -08:00
irq-sl28cpld.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
irq-sni-exiu.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-sp7021-intc.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-st.c irqchip: Explicitly include correct DT includes 2023-08-21 17:49:11 +01:00
irq-starfive-jhb100-intc.c irqchip/starfive: Fix error check for devm_platform_ioremap_resource() 2026-05-06 09:13:12 +02:00
irq-stm32-exti.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
irq-stm32mp-exti.c irqchip/stm32mp-exti: Fix the unit of the hwspinlock timeout 2026-09-04 16:19:04 +02:00
irq-sun4i.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-sun6i-r.c syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01:00
irq-sunxi-nmi.c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
irq-tb10x.c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
irq-tegra.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ti-sci-inta.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-ti-sci-intr.c irqchip/ti-sci-intr: Allow parsing interrupt-types per-line 2026-01-26 16:40:04 +01:00
irq-ts4800.c irqchip/ts4800: Fix missing chained handler cleanup on remove 2026-06-30 18:49:48 +02:00
irq-uniphier-aidet.c irqchip: Switch to of_fwnode_handle() 2025-05-16 21:06:07 +02:00
irq-versatile-fpga.c ARM: remove the last few uses of do_bad_IRQ() 2026-06-10 10:38:21 +02:00
irq-vf610-mscm-ir.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-vic.c syscore: Pass context data to callbacks 2025-11-14 10:01:52 +01:00
irq-vt8500.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-wpcm450-aic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-xilinx-intc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
irq-xtensa-mx.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-xtensa-pic.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irq-zevio.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00
irqchip.c irqchip: Pass platform device to platform drivers 2025-10-16 18:17:27 +02:00
Kconfig irqchip/irq-imgpdc: Remove unused driver 2026-07-06 23:22:56 +02:00
Makefile irqchip/irq-imgpdc: Remove unused driver 2026-07-06 23:22:56 +02:00
qcom-irq-combiner.c irqchip/qcom-irq-combiner: Rename driver structure 2025-10-17 15:18:18 +02:00
qcom-pdc.c irqchip/qcom-pdc: Fix kernel doc for qcom_pdc_gic_secondary_set_type() 2026-07-10 09:14:01 +02:00
spear-shirq.c irqchip: Switch to irq_domain_create_*() 2025-05-16 21:06:09 +02:00