bcachefs/drivers/irqchip
Marc Zyngier 773c05f417 irqchip/gic-v3: Work around insecure GIC integrations
It appears that the relatively popular RK3399 SoC has been put together
using a large amount of illicit substances, as experiments reveal that its
integration of GIC500 exposes the *secure* programming interface to
non-secure.

This has some pretty bad effects on the way priorities are handled, and
results in a dead machine if booting with pseudo-NMI enabled
(irqchip.gicv3_pseudo_nmi=1) if the kernel contains 18fdb6348c ("arm64:
irqchip/gic-v3: Select priorities at boot time"), which relies on the
priorities being programmed using the NS view.

Let's restore some sanity by going one step further and disable security
altogether in this case. This is not any worse, and puts us in a mode where
priorities actually make some sense.

Huge thanks to Mark Kettenis who initially identified this issue on
OpenBSD, and to Chen-Yu Tsai who reported the problem in Linux.

Fixes: 18fdb6348c ("arm64: irqchip/gic-v3: Select priorities at boot time")
Reported-by: Mark Kettenis <mark.kettenis@xs4all.nl>
Reported-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Chen-Yu Tsai <wens@csie.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241213141037.3995049-1-maz@kernel.org
2024-12-13 18:15:29 +01:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c
irq-al-fic.c
irq-alpine-msi.c
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-aic5.c irqchip/atmel-aic5: Add support for sam9x7 aic 2024-10-02 15:36:47 +02:00
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-bcm2835.c
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
irq-bcm7038-l1.c
irq-bcm7120-l2.c
irq-brcmstb-l2.c
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
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
irq-gic-common.h
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
irq-gic-v3-its.c irqchip/gicv3-its: Add workaround for hip09 ITS erratum 162100801 2024-11-26 20:06:05 +01:00
irq-gic-v3-mbi.c
irq-gic-v3.c irqchip/gic-v3: Work around insecure GIC integrations 2024-12-13 18:15:29 +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
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
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: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +01:00
irq-lan966x-oic.c
irq-loongarch-avec.c irqchip/loongarch-avec: Add AVEC irqchip support 2024-08-23 20:40:27 +02: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-ls1x.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-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
irq-mst-intc.c
irq-mtk-cirq.c
irq-mtk-sysirq.c
irq-mvebu-gicp.c
irq-mvebu-icu.c
irq-mvebu-odmi.c
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
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
irq-stm32-exti.c
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
irq-tb10x.c
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
irq-ti-sci-intr.c
irq-ts4800.c irqchip: Switch back to struct platform_driver::remove() 2024-11-26 20:09:06 +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
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
Kconfig irqchip/stm32mp-exti: CONFIG_STM32MP_EXTI should not default to y when compile-testing 2024-12-03 17:40:30 +01: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