linux-stable/drivers/irqchip
Marc Zyngier 86244ae707 irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update
commit af9acbfc2c upstream.

When updating the affinity of a VPE, the VMOVP command is currently skipped
if the two CPUs are part of the same VPE affinity.

But this is wrong, as the doorbell corresponding to this VPE is still
delivered on the 'old' CPU, which screws up the balancing.  Furthermore,
offlining that 'old' CPU results in doorbell interrupts generated for this
VPE being discarded.

The harsh reality is that VMOVP cannot be elided when a set_affinity()
request occurs. It needs to be obeyed, and if an optimisation is to be
made, it is at the point where the affinity change request is made (such as
in KVM).

Drop the VMOVP elision altogether, and only use the vpe_table_mask
to try and stay within the same ITS affinity group if at all possible.

Fixes: dd3f050a21 (irqchip/gic-v4.1: Implement the v4.1 flavour of VMOVP)
Reported-by: Kunkun Jiang <jiangkunkun@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240213101206.2137483-4-maz@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-02-23 08:55:09 +01:00
..
Kconfig genirq: GENERIC_IRQ_IPI depends on SMP 2022-08-17 14:23:01 +02:00
Makefile ARM: platform support for Apple M1 2021-04-26 12:30:36 -07:00
alphascale_asm9260-icoll.h
exynos-combiner.c Merge branch irq/generic_handle_domain_irq-core into irq/irqchip-next 2021-06-11 14:32:12 +01:00
irq-al-fic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-alpine-msi.c irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains 2023-03-10 09:39:14 +01:00
irq-apple-aic.c irqchip/apple-aic: Fix irq_disable from within irq handlers 2021-08-20 14:32:33 +01:00
irq-armada-370-xp.c irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x 2022-06-09 10:23:26 +02:00
irq-aspeed-i2c-ic.c irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value 2022-06-09 10:22:54 +02:00
irq-aspeed-scu-ic.c irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value 2022-06-09 10:22:54 +02:00
irq-aspeed-vic.c irq: Fix typos in comments 2021-03-22 04:23:14 +01:00
irq-ath79-cpu.c
irq-ath79-misc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ativic32.c
irq-atmel-aic-common.c
irq-atmel-aic-common.h
irq-atmel-aic.c
irq-atmel-aic5.c
irq-bcm2835.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-bcm2836.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-bcm6345-l1.c irq-bcm6345-l1: Do not assume a fixed block to cpu mapping 2023-08-03 10:22:44 +02:00
irq-bcm7038-l1.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-bcm7120-l2.c irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts 2023-03-10 09:39:18 +01:00
irq-brcmstb-l2.c irqchip/irq-brcmstb-l2: Add write memory barrier before exit 2024-02-23 08:55:09 +01:00
irq-clps711x.c
irq-crossbar.c
irq-csky-apb-intc.c irq: Fix typos in comments 2021-03-22 04:23:14 +01:00
irq-csky-mpintc.c
irq-davinci-aintc.c
irq-davinci-cp-intc.c
irq-digicolor.c
irq-dw-apb-ictl.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ftintc010.c
irq-gic-common.c irqchip/gic: Correctly validate OF quirk descriptors 2023-06-21 15:59:14 +02:00
irq-gic-common.h irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues 2023-06-21 15:59:13 +02:00
irq-gic-pm.c irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe() 2022-12-31 13:14:03 +01:00
irq-gic-realview.c irqchip/gic/realview: Fix refcount leak in realview_gic_of_init 2022-06-22 14:22:02 +02:00
irq-gic-v2m.c irqchip/gic-v2m: Switch to bitmap_zalloc() 2021-07-26 18:01:44 +01:00
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: Fix GICv4.1 VPE affinity update 2024-02-23 08:55:09 +01:00
irq-gic-v3-mbi.c irqchip/gic-v3: Switch to bitmap_zalloc() 2021-07-26 18:04:01 +01:00
irq-gic-v3.c irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues 2023-06-21 15:59:13 +02:00
irq-gic-v4.c irqchip/gic-v4.1: Disable vSGI upon (GIC CPUIF < v4.1) detection 2021-04-22 15:55:21 +01:00
irq-gic.c irqchip/gic, gic-v3: Prevent GSI to SGI translations 2022-04-13 20:59:28 +02:00
irq-goldfish-pic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-hip04.c irqchip/hisi: Use the correct HiSilicon copyright 2021-04-07 13:25:52 +01:00
irq-i8259.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-idt3243x.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-imgpdc.c Merge branch irq/generic_handle_domain_irq-core into irq/irqchip-next 2021-06-11 14:32:12 +01:00
irq-imx-gpcv2.c irqchip/irq-imx-gpcv2: Remove unnecessary oom message 2021-06-11 14:19:47 +01:00
irq-imx-intmux.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-imx-irqsteer.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ingenic-tcu.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ingenic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ixp4xx.c
irq-jcore-aic.c irqchip/jcore-aic: Fix missing allocation of IRQ descriptors 2023-07-23 13:46:45 +02:00
irq-keystone.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-loongson-htpic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-loongson-htvec.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-loongson-liointc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-loongson-pch-msi.c irqchip/loongson-pch-msi: Use bitmap_zalloc() to allocate bitmap 2021-02-09 10:41:40 +00:00
irq-loongson-pch-pic.c irqchip/loongson-pch-pic: Improve edge triggered interrupt support 2021-08-12 07:57:23 +01:00
irq-lpc32xx.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ls-extirq.c irqchip/ls-extirq: add IRQCHIP_SKIP_SET_WAKE to the irqchip flags 2021-01-29 11:06:38 +00:00
irq-ls-scfg-msi.c irqchip/ls-scfg-msi: Switch to devm_bitmap_zalloc() 2021-07-26 18:04:10 +01:00
irq-ls1x.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-madera.c
irq-mbigen.c irqchip/mbigen: Repair non-kernel-doc notation 2021-09-22 14:32:26 +01:00
irq-meson-gpio.c irq: Fix typos in comments 2021-03-22 04:23:14 +01:00
irq-mips-cpu.c irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry 2021-07-09 10:18:58 +01:00
irq-mips-gic.c irqchip/mips-gic: Don't touch vl_map if a local interrupt is not routable 2023-06-05 09:21:23 +02:00
irq-mmp.c
irq-mscc-ocelot.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-mst-intc.c irqchip/irq-mst: Support polarity configuration 2021-04-07 13:26:00 +01:00
irq-mtk-cirq.c irq: Fix typos in comments 2021-03-22 04:23:14 +01:00
irq-mtk-sysirq.c irqchip/mtk-sysirq: Skip setting irq-wake 2021-08-12 08:15:15 +01:00
irq-mvebu-gicp.c irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe 2023-03-10 09:39:14 +01:00
irq-mvebu-icu.c irqchip: Remove redundant error printing 2021-05-16 13:07:18 +01:00
irq-mvebu-odmi.c irqchip/mvebu-odmi: Switch to bitmap_zalloc() 2021-07-26 18:04:11 +01:00
irq-mvebu-pic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-mvebu-sei.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-mxs.c irq: Fix typos in comments 2021-03-22 04:23:14 +01:00
irq-nvic.c irqchip/nvic: Release nvic_base upon failure 2022-04-08 14:23:56 +02:00
irq-omap-intc.c
irq-ompic.c
irq-or1k-pic.c irqchip: or1k-pic: Undefine mask_ack for level triggered hardware 2022-07-21 21:24:40 +02:00
irq-orion.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-owl-sirq.c
irq-partition-percpu.c irqchip/partitions: Switch to bitmap_zalloc() 2021-07-26 18:01:27 +01:00
irq-pic32-evic.c irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry 2021-07-09 10:18:58 +01:00
irq-pruss-intc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-rda-intc.c
irq-realtek-rtl.c irqchip/realtek-rtl: Fix refcount leak in map_interrupts 2022-06-22 14:22:02 +02:00
irq-renesas-h8s.c
irq-renesas-h8300h.c
irq-renesas-intc-irqpin.c
irq-renesas-irqc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-renesas-rza1.c irqchip/renesas-rza1: Use semicolons instead of commas 2021-09-22 14:37:59 +01:00
irq-riscv-intc.c irqchip/riscv-intc: Mark all INTC nodes as initialized 2023-11-08 17:26:45 +01:00
irq-sa11x0.c
irq-sifive-plic.c irqchip/sifive-plic: Add missing thead,c900-plic match string 2022-02-23 12:03:17 +01:00
irq-sl28cpld.c
irq-sni-exiu.c irqchip/exiu: Fix acknowledgment of edge triggered interrupts 2022-06-09 10:22:54 +02:00
irq-st.c
irq-stm32-exti.c irqchip/stm32-exti: add missing DT IRQ flag translation 2023-11-08 17:26:45 +01:00
irq-sun4i.c irqchip/sun4i: Remove unnecessary oom message 2021-06-11 14:19:51 +01:00
irq-sun6i-r.c irqchip/sun6i-r: Add wakeup support 2021-01-21 20:21:49 +00:00
irq-sunxi-nmi.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-tb10x.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-tegra.c irqchip/tegra: Fix overflow implicit truncation warnings 2022-08-25 11:40:32 +02:00
irq-ti-sci-inta.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-ti-sci-intr.c irqchip/ti-sci: Fix refcount leak in ti_sci_intr_irq_domain_probe 2023-03-10 09:39:14 +01:00
irq-ts4800.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-uniphier-aidet.c
irq-versatile-fpga.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-vf610-mscm-ir.c
irq-vic.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-vt8500.c
irq-wpcm450-aic.c irqchip/wpcm450: Fix memory leak in wpcm450_aic_of_init() 2022-12-31 13:14:03 +01:00
irq-xilinx-intc.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
irq-xtensa-mx.c irqchip: irq-xtensa-mx: fix initial IRQ affinity 2022-06-09 10:23:26 +02:00
irq-xtensa-pic.c
irq-zevio.c
irqchip.c irqchip: Fix refcount leak in platform_irqchip_probe 2023-03-10 09:39:14 +01:00
qcom-irq-combiner.c irqchip: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +01:00
qcom-pdc.c irqchip/qcom-pdc: Fix broken locking 2022-04-08 14:23:55 +02:00
spear-shirq.c