linux-stable/drivers/irqchip
Oliver Upton ec4308ecfc irqchip/gic-v3-its: Do not assume vPE tables are preallocated
The GIC/ITS code is designed to ensure to pick up any preallocated LPI
tables on the redistributors, as enabling LPIs is a one-way switch. There
is no such restriction for vLPIs, and for GICv4.1 it is expected to
allocate a new vPE table at boot.

This works as intended when initializing an ITS, however when setting up a
redistributor in cpu_init_lpis() the early return for preallocated RD
tables skips straight past the GICv4 setup. This all comes to a head when
trying to kexec() into a new kernel, as the new kernel silently fails to
set up GICv4, leading to a complete loss of SGIs and LPIs for KVM VMs.

Slap a band-aid on the problem by ensuring its_cpu_init_lpis() always
initializes GICv4 on the way out, even if the other RD tables were
preallocated.

Fixes: 6479450f72 ("irqchip/gic-v4: Fix occasional VLPI drop")
Reported-by: George Cherian <gcherian@marvell.com>
Co-developed-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240219185809.286724-2-oliver.upton@linux.dev
2024-02-21 21:11:20 +01:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c
irq-al-fic.c
irq-alpine-msi.c
irq-apple-aic.c
irq-armada-370-xp.c
irq-aspeed-i2c-ic.c
irq-aspeed-scu-ic.c
irq-aspeed-vic.c
irq-ath79-cpu.c
irq-ath79-misc.c
irq-atmel-aic-common.c
irq-atmel-aic-common.h
irq-atmel-aic.c
irq-atmel-aic5.c
irq-bcm2835.c
irq-bcm2836.c
irq-bcm6345-l1.c
irq-bcm7038-l1.c
irq-bcm7120-l2.c
irq-brcmstb-l2.c irqchip/irq-brcmstb-l2: Add write memory barrier before exit 2024-02-13 09:33:31 +01:00
irq-clps711x.c
irq-crossbar.c
irq-csky-apb-intc.c
irq-csky-mpintc.c
irq-davinci-cp-intc.c
irq-digicolor.c
irq-dw-apb-ictl.c
irq-ftintc010.c
irq-gic-common.c
irq-gic-common.h
irq-gic-pm.c
irq-gic-realview.c
irq-gic-v2m.c
irq-gic-v3-its-fsl-mc-msi.c
irq-gic-v3-its-pci-msi.c
irq-gic-v3-its-platform-msi.c
irq-gic-v3-its.c irqchip/gic-v3-its: Do not assume vPE tables are preallocated 2024-02-21 21:11:20 +01:00
irq-gic-v3-mbi.c
irq-gic-v3.c
irq-gic-v4.c sched.h: move pid helpers to pid.h 2023-12-20 19:26:31 -05:00
irq-gic.c
irq-goldfish-pic.c
irq-hip04.c
irq-i8259.c
irq-idt3243x.c
irq-imgpdc.c
irq-imx-gpcv2.c
irq-imx-intmux.c
irq-imx-irqsteer.c
irq-imx-mu-msi.c
irq-ingenic-tcu.c
irq-ingenic.c
irq-ixp4xx.c
irq-jcore-aic.c
irq-keystone.c
irq-loongarch-cpu.c
irq-loongson-eiointc.c irqchip/loongson-eiointc: Use correct struct type in eiointc_domain_alloc() 2024-02-13 10:26:15 +01:00
irq-loongson-htpic.c
irq-loongson-htvec.c
irq-loongson-liointc.c
irq-loongson-pch-lpc.c
irq-loongson-pch-msi.c
irq-loongson-pch-pic.c
irq-lpc32xx.c
irq-ls-extirq.c
irq-ls-scfg-msi.c
irq-ls1x.c
irq-madera.c
irq-mbigen.c irqchip/mbigen: Don't use bus_get_dev_root() to find the parent 2024-02-21 18:40:00 +01:00
irq-mchp-eic.c
irq-meson-gpio.c
irq-mips-cpu.c
irq-mips-gic.c
irq-mmp.c
irq-mscc-ocelot.c
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
irq-mvebu-sei.c
irq-mxs.c
irq-nvic.c
irq-omap-intc.c
irq-ompic.c
irq-or1k-pic.c
irq-orion.c
irq-owl-sirq.c
irq-partition-percpu.c
irq-pic32-evic.c
irq-pruss-intc.c
irq-qcom-mpm.c irqchip/qcom-mpm: Fix IS_ERR() vs NULL check in qcom_mpm_init() 2024-02-13 10:26:15 +01:00
irq-rda-intc.c
irq-realtek-rtl.c
irq-renesas-intc-irqpin.c
irq-renesas-irqc.c
irq-renesas-rza1.c
irq-renesas-rzg2l.c irqchip/renesas-rzg2l: Add support for suspend to RAM 2023-12-12 15:40:41 +01:00
irq-riscv-intc.c
irq-sa11x0.c
irq-sifive-plic.c irqchip/sifive-plic: Enable interrupt if needed before EOI 2024-02-19 15:05:18 +01:00
irq-sl28cpld.c
irq-sni-exiu.c
irq-sp7021-intc.c
irq-st.c
irq-stm32-exti.c
irq-sun4i.c
irq-sun6i-r.c
irq-sunxi-nmi.c
irq-tb10x.c
irq-tegra.c
irq-ti-sci-inta.c
irq-ti-sci-intr.c
irq-ts4800.c
irq-uniphier-aidet.c
irq-versatile-fpga.c
irq-vf610-mscm-ir.c
irq-vic.c
irq-vt8500.c
irq-wpcm450-aic.c
irq-xilinx-intc.c
irq-xtensa-mx.c
irq-xtensa-pic.c irqchip/irq-xtensa-pic: Clean up 2023-12-12 15:45:39 +01:00
irq-zevio.c
irqchip.c
Kconfig
Makefile
qcom-irq-combiner.c
qcom-pdc.c
spear-shirq.c