kernel_samsung_a53x/drivers/irqchip
Marc Zyngier ed3f47340e irqchip/gic-v3: Force propagation of the active state with a read-back
commit 464cb98f1c07298c4c10e714ae0c36338d18d316 upstream.

Christoffer reports that on some implementations, writing to
GICR_ISACTIVER0 (and similar GICD registers) can race badly with a guest
issuing a deactivation of that interrupt via the system register interface.

There are multiple reasons to this:

 - this uses an early write-acknoledgement memory type (nGnRE), meaning
   that the write may only have made it as far as some interconnect
   by the time the store is considered "done"

 - the GIC itself is allowed to buffer the write until it decides to
   take it into account (as long as it is in finite time)

The effects are that the activation may not have taken effect by the time
the kernel enters the guest, forcing an immediate exit, or that a guest
deactivation occurs before the interrupt is active, doing nothing.

In order to guarantee that the write to the ISACTIVER register has taken
effect, read back from it, forcing the interconnect to propagate the write,
and the GIC to process the write before returning the read.

Reported-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Christoffer Dall <christoffer.dall@arm.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241106084418.3794612-1-maz@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-30 02:33:26 +01:00
..
alphascale_asm9260-icoll.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
exynos-combiner.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-al-fic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-alpine-msi.c irqchip/alpine-msi: Fix off-by-one in allocation error path 2024-11-19 12:26:54 +01:00
irq-armada-370-xp.c Revert "irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1" 2024-11-24 00:23:43 +01:00
irq-aspeed-i2c-ic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-aspeed-scu-ic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-aspeed-vic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ath79-cpu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ath79-misc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ativic32.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-atmel-aic-common.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-atmel-aic-common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-atmel-aic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-atmel-aic5.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-bcm2835.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-bcm2836.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-bcm6345-l1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-bcm7038-l1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-bcm7120-l2.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-brcmstb-l2.c irqchip/irq-brcmstb-l2: Add write memory barrier before exit 2024-11-18 12:13:32 +01:00
irq-clps711x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-crossbar.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-csky-apb-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-csky-mpintc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-davinci-aintc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-davinci-cp-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-digicolor.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-dw-apb-ictl.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-eznps.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ftintc010.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-common.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-pm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-realview.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v2m.c Revert "irqchip/gic-v2m: Fix refcount leak in gicv2m_of_init()" 2024-11-24 00:23:46 +01:00
irq-gic-v3-its-fsl-mc-msi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v3-its-pci-msi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v3-its-platform-msi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v3-its.c Revert "irqchip/gic-v3-its: Fix VSYNC referencing an unmapped VPE on GIC v4.1" 2024-11-24 00:22:53 +01:00
irq-gic-v3-mbi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v3-vh.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic-v3.c irqchip/gic-v3: Force propagation of the active state with a read-back 2024-11-30 02:33:26 +01:00
irq-gic-v4.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-gic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-goldfish-pic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-hip04.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-i8259.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-imgpdc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-imx-gpcv2.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-imx-intmux.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-imx-irqsteer.c irqchip/imx-irqsteer: Handle runtime power management correctly 2024-11-23 23:20:19 +01:00
irq-ingenic-tcu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ingenic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ixp4xx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-jcore-aic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-keystone.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-loongson-htpic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-loongson-htvec.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-loongson-liointc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-loongson-pch-msi.c irqchip/loongson-pch-msi: Fix off-by-one on allocation error path 2024-11-19 12:26:54 +01:00
irq-loongson-pch-pic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-lpc32xx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ls-extirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ls-scfg-msi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ls1x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-madera.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mbigen.c irqchip/mbigen: Fix mbigen node address layout 2024-11-23 23:20:21 +01:00
irq-meson-gpio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mips-cpu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mips-gic.c irqchip/mips-gic: Don't touch vl_map if a local interrupt is not routable 2024-11-18 22:25:34 +01:00
irq-mmp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mscc-ocelot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mst-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mtk-cirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mtk-sysirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mvebu-gicp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mvebu-icu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mvebu-odmi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mvebu-pic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mvebu-sei.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-mxs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-nvic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-omap-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ompic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-or1k-pic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-orion.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-owl-sirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-partition-percpu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-pic32-evic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-pruss-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-rda-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-renesas-h8s.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-renesas-h8300h.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-renesas-intc-irqpin.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-renesas-irqc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-renesas-rza1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-riscv-intc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sa11x0.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sifive-plic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sirfsoc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sl28cpld.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sni-exiu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-st.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-stm32-exti.c irqchip/stm32-exti: add missing DT IRQ flag translation 2024-11-18 10:58:46 +01:00
irq-sun4i.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-sunxi-nmi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-tango.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-tb10x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-tegra.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ti-sci-inta.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ti-sci-intr.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-ts4800.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-uniphier-aidet.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-versatile-fpga.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-vf610-mscm-ir.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-vic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-vt8500.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-xilinx-intc.c irqchip/xilinx: Fix shift out of bounds 2024-11-23 23:20:29 +01:00
irq-xtensa-mx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-xtensa-pic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq-zevio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irqchip.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig arm64: Disable GENERIC_IRQ_EFFECTIVE_AFF_MASK 2024-11-19 17:54:22 +01:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qcom-irq-combiner.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qcom-pdc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spear-shirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00