linux-stable/drivers/irqchip
Zenghui Yu 18e7fae372 irqchip/gic-v3-its: Use the exact ITSList for VMOVP
[ Upstream commit 8424312516 ]

On a system without Single VMOVP support (say GITS_TYPER.VMOVP == 0),
we will map vPEs only on ITSs that will actually control interrupts
for the given VM.  And when moving a vPE, the VMOVP command will be
issued only for those ITSs.

But when issuing VMOVPs we seemed fail to present the exact ITSList
to ITSs who are actually included in the synchronization operation.
The its_list_map we're currently using includes all ITSs in the system,
even though some of them don't have the corresponding vPE mapping at all.

Introduce get_its_list() to get the per-VM its_list_map, to indicate
which ITSs have vPE mappings for the given VM, and use this map as
the expected ITSList when building VMOVP. This is hopefully a performance
gain not to do some synchronization with those unsuspecting ITSs.
And initialize the whole command descriptor to zero at beginning, since
the seq_num and its_list should be RES0 when GITS_TYPER.VMOVP == 1.

Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/1571802386-2680-1-git-send-email-yuzenghui@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-11-10 11:27:31 +01:00
..
alphascale_asm9260-icoll.h
exynos-combiner.c
irq-alpine-msi.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
irq-armada-370-xp.c irqchip updates for 4.14 2017-08-31 20:12:51 +02:00
irq-aspeed-i2c-ic.c irqchip/aspeed-i2c-ic: Fix return value check in aspeed_i2c_ic_of_init() 2017-10-19 11:22:43 +01:00
irq-aspeed-vic.c irqchip/aspeed-vic: Add AST2500 compatible string 2017-06-22 14:13:39 +01:00
irq-ath79-cpu.c
irq-ath79-misc.c Revert "MIPS: perf: ath79: Fix perfcount IRQ assignment" 2019-06-11 12:20:53 +02:00
irq-ativic32.c irqchip: Andestech Internal Vector Interrupt Controller driver 2018-02-22 10:44:36 +08:00
irq-atmel-aic-common.c irqchip/atmel-aic: Remove root argument from ->fixup() prototype 2017-07-04 11:10:37 +01:00
irq-atmel-aic-common.h irqchip/atmel-aic: Remove root argument from ->fixup() prototype 2017-07-04 11:10:37 +01:00
irq-atmel-aic.c irqchip/atmel-aic: Remove root argument from ->fixup() prototype 2017-07-04 11:10:37 +01:00
irq-atmel-aic5.c irqchip/atmel-aic: Remove root argument from ->fixup() prototype 2017-07-04 11:10:37 +01:00
irq-bcm2835.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-bcm2836.c irqchip/irq-bcm2836: Add support for DT interrupt polarity 2018-01-04 11:12:39 +00:00
irq-bcm6345-l1.c irqchip/bcm-6345-l1: Report that effective affinity is a single target 2017-08-18 10:54:41 +02:00
irq-bcm7038-l1.c irqchip/bcm7038-l1: Hide cpu offline callback when building for !SMP 2018-08-13 09:02:54 +01:00
irq-bcm7120-l2.c irqchip/bcm: Remove hashed address printing 2018-02-16 14:22:16 +00:00
irq-brcmstb-l2.c irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code 2019-03-23 20:10:01 +01:00
irq-clps711x.c
irq-crossbar.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-digicolor.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-dw-apb-ictl.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-eznps.c
irq-ftintc010.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq-gic-common.c irqchip/gic: Take lock when updating irq type 2018-03-29 11:47:50 +01:00
irq-gic-common.h irqchip/gic: Make quirks matching conditional on init return value 2017-10-19 11:22:38 +01:00
irq-gic-pm.c
irq-gic-realview.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq-gic-v2m.c irqchip/gic-v2m: Fix SPI release on error path 2018-06-22 14:22:00 +02:00
irq-gic-v3-its-fsl-mc-msi.c irqchip/gic-v3-its: Move minimum LPI requirements to individual busses 2018-07-16 14:22:19 +01:00
irq-gic-v3-its-pci-msi.c irqchip/gic-v3-its: Reduce minimum LPI allocation to 1 for PCI devices 2018-07-27 10:01:24 +01:00
irq-gic-v3-its-platform-msi.c irqchip/gic-v3-its: Move minimum LPI requirements to individual busses 2018-07-16 14:22:19 +01:00
irq-gic-v3-its.c irqchip/gic-v3-its: Use the exact ITSList for VMOVP 2019-11-10 11:27:31 +01:00
irq-gic-v3-mbi.c irqchip/gic-v3-mbi: Fix uninitialized mbi_lock 2019-03-05 17:58:48 +01:00
irq-gic-v3.c irqchip/gic-v3: Allow interrupt to be configured as wake-up sources 2018-08-20 09:54:44 +01:00
irq-gic-v4.c irqchip/gic-v4: Clear IRQ_DISABLE_UNLAZY again if mapping fails 2017-11-10 09:50:36 +00:00
irq-gic.c irqchip/gic: Update supports_deactivate static key to modern api 2018-03-28 15:24:15 +01:00
irq-goldfish-pic.c irqchip/irq-goldfish-pic: Add Goldfish PIC driver 2018-01-04 11:14:04 +00:00
irq-hip04.c irqchip/hip04: Report that effective affinity is a single target 2017-08-18 10:54:42 +02:00
irq-i8259.c irqchip/i8259: Set I/O port resource types correctly 2017-12-18 23:07:46 -06:00
irq-imgpdc.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
irq-imx-gpcv2.c irqchip/irq-imx-gpcv2: Forward irq type to parent 2019-08-25 10:47:53 +02:00
irq-ingenic.c irqchip/ingenic: Add support for the JZ4725B SoC 2018-07-19 16:12:27 +01:00
irq-jcore-aic.c
irq-keystone.c
irq-lpc32xx.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ls-scfg-msi.c irqchip/ls-scfg-msi: Fix MSI affinity handling 2018-06-22 14:22:00 +02:00
irq-mbigen.c irqchip/mbigen: Don't clear eventid when freeing an MSI 2019-04-20 09:15:59 +02:00
irq-meson-gpio.c irqchip/meson-gpio: Add support for Meson-G12A SoC 2019-07-26 09:14:06 +02:00
irq-mips-cpu.c MIPS: Unify checks for sibling CPUs 2017-08-30 00:57:27 +02:00
irq-mips-gic.c irqchip/mips-gic: Use the correct local interrupt map registers 2019-07-03 13:14:46 +02:00
irq-mmp.c irqchip/mmp: Only touch the PJ4 IRQ & FIQ bits on enable/disable 2019-03-13 14:02:35 -07:00
irq-mscc-ocelot.c irqchip: Add a driver for the Microsemi Ocelot controller 2018-03-22 15:52:27 +00:00
irq-mtk-cirq.c irqchip: Add Mediatek mtk-cirq driver 2017-04-07 10:52:22 +01:00
irq-mtk-sysirq.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-mvebu-gicp.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
irq-mvebu-icu.c irqchip/mvebu-gicp: Use level-triggered MSIs between ICU and GICP 2018-05-13 15:59:00 +02:00
irq-mvebu-odmi.c
irq-mvebu-pic.c
irq-mxs.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-nvic.c
irq-omap-intc.c irqchip/irq-omap-intc: Do not statically initialize variables 2017-10-16 21:05:14 +02:00
irq-ompic.c irqchip/ompic: fix return value check in ompic_of_init() 2018-01-04 11:13:22 +00:00
irq-or1k-pic.c irqchip/or1k-pic: Fix interrupt acknowledgement 2017-06-30 15:33:11 +01:00
irq-orion.c
irq-partition-percpu.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
irq-pic32-evic.c
irq-renesas-h8s.c h8300: irqchip: fix warning 2018-08-22 19:14:19 +09:00
irq-renesas-h8300h.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq-renesas-intc-irqpin.c irqchip/renesas-intc-irqpin: Use wakeup_path i.s.o. explicit clock handling 2018-03-14 11:11:15 +00:00
irq-renesas-irqc.c irqchip/renesas-irqc: Use wakeup_path i.s.o. explicit clock handling 2018-03-14 11:11:21 +00:00
irq-s3c24xx.c irqchip/s3c24xx: Remove unneeded comparison of unsigned long to 0 2018-08-13 16:20:17 +01:00
irq-sa11x0.c
irq-sifive-plic.c irqchip: add a SiFive PLIC driver 2018-08-13 08:31:32 -07:00
irq-sirfsoc.c
irq-sni-exiu.c irqchip/exiu: Fix return value check in exiu_init() 2017-11-14 11:27:22 +01:00
irq-st.c
irq-stm32-exti.c irqchip/stm32: Don't clear rising/falling config registers at init 2019-04-20 09:15:58 +02:00
irq-sun4i.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-sunxi-nmi.c irqchip/sunxi-nmi: Support sun6i-a31-r-intc compatible 2017-06-22 14:08:17 +01:00
irq-tango.c irqchip/tango: Set irq handler and data in one go 2018-08-20 09:54:44 +01:00
irq-tb10x.c
irq-tegra.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-ts4800.c
irq-uniphier-aidet.c irqchip: Add UniPhier AIDET irqchip driver 2017-08-23 10:08:44 +01:00
irq-versatile-fpga.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq-vf610-mscm-ir.c
irq-vic.c
irq-vt8500.c
irq-xilinx-intc.c irqchip: Convert to using %pOF instead of full_name 2017-08-23 10:09:28 +01:00
irq-xtensa-mx.c xtensa: drop variant IRQ support 2018-08-20 12:28:05 -07:00
irq-xtensa-pic.c xtensa: drop variant IRQ support 2018-08-20 12:28:05 -07:00
irq-zevio.c
irqchip.c
Kconfig RISC-V Updates for the 4.19 Merge Window 2018-08-19 09:56:38 -07:00
Makefile irqchip: add a SiFive PLIC driver 2018-08-13 08:31:32 -07:00
qcom-irq-combiner.c irqchip/qcom: Fix check for spurious interrupts 2018-05-02 15:56:10 +02:00
qcom-pdc.c irqchip/pdc: Setup all edge interrupts as rising edge at GIC 2018-11-13 11:08:34 -08:00
spear-shirq.c