linux-stable/drivers/irqchip
Marc Zyngier c579caef7c irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation
[ Upstream commit 926846a703 ]

We normally rely on the irq_to_cpuid_[un]lock() primitives to make
sure nothing will change col->idx while performing a LPI invalidation.

However, these primitives do not cover VPE doorbells, and we have
some open-coded locking for that. Unfortunately, this locking is
pretty bogus.

Instead, extend the above primitives to cover VPE doorbells and
convert the whole thing to it.

Fixes: f3a059219b ("irqchip/gic-v4.1: Ensure mutual exclusion between vPE affinity change and RD access")
Reported-by: Kunkun Jiang <jiangkunkun@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: Zenghui Yu <yuzenghui@huawei.com>
Cc: wanghaibin.wang@huawei.com
Tested-by: Kunkun Jiang <jiangkunkun@huawei.com>
Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
Link: https://lore.kernel.org/r/20230617073242.3199746-1-maz@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-08-03 10:22:45 +02: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 irqchip/ativic32: Constify irq_domain_ops 2020-07-27 08:55:02 +01:00
irq-atmel-aic-common.c
irq-atmel-aic-common.h
irq-atmel-aic.c
irq-atmel-aic5.c irqchip/atmel-aic5: Add support for sam9x60 rtt fixup 2020-06-27 11:55:45 +01:00
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: Set IRQ_LEVEL for level triggered interrupts 2023-03-10 09:39:18 +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 bus: fsl-mc: Add ACPI support for fsl-mc 2020-07-28 15:51:32 +01:00
irq-gic-v3-its-pci-msi.c irqchip/gic-v3-its: Flag device allocation as proxied if behind a PCI bridge 2020-12-11 14:47:50 +00:00
irq-gic-v3-its-platform-msi.c
irq-gic-v3-its.c irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation 2023-08-03 10:22:45 +02: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 irqchip: Add Actions Semi Owl SIRQ controller 2020-09-25 16:57:33 +01:00
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 irqchip/renesas-intc-irqpin: Merge irlm_bit and needs_irlm 2020-11-01 11:59:22 +00:00
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: Fix a typo in a pr_warn() 2020-06-21 15:15:41 +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 irqchip/irq-sl28cpld: Convert comma to semicolon 2020-12-18 17:43:47 +00:00
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: Bulk conversion to generic_handle_domain_irq() 2021-06-10 13:09:19 +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