xemu/include/hw/intc
Peter Maydell 3851af4585 hw/intc/arm_gicv3_its: Implement VMOVP
Implement the GICv4 VMOVP command, which updates an entry in the vPE
table to change its rdbase field. This command is unique in the ITS
command set because its effects must be propagated to all the other
ITSes connected to the same GIC as the ITS which executes the VMOVP
command.

The GICv4 spec allows two implementation choices for handling the
propagation to other ITSes:
 * If GITS_TYPER.VMOVP is 1, the guest only needs to issue the command
   on one ITS, and the implementation handles the propagation to
   all ITSes
 * If GITS_TYPER.VMOVP is 0, the guest must issue the command on
   every ITS, and arrange for the ITSes to synchronize the updates
   with each other by setting ITSList and Sequence Number fields
   in the command packets

We choose the GITS_TYPER.VMOVP = 1 approach, and synchronously
execute the update on every ITS.

For GICv4.1 this command has extra fields in the command packet and
additional behaviour.  We define the 4.1-only fields with the FIELD
macro, but only implement the GICv4.0 version of the command.

Note that we don't update the reported GITS_TYPER value here;
we'll do that later in a commit which updates all the reported
feature bit and ID register values for GICv4.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220408141550.1271295-17-peter.maydell@linaro.org
[PMM: Moved gicv3_foreach_its() to arm_gicv3_its_common.h,
 for consistency with gicv3_add_its()]
2022-04-22 14:43:24 +01:00
..
allwinner-a10-pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
arm_gic_common.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
arm_gic.h Use DECLARE_*CHECKER* when possible (--force mode) 2020-09-09 09:27:11 -04:00
arm_gicv3_common.h hw/intc/arm_gicv3: Keep pointers to every connected ITS 2022-04-22 09:24:44 +01:00
arm_gicv3_its_common.h hw/intc/arm_gicv3_its: Implement VMOVP 2022-04-22 14:43:24 +01:00
arm_gicv3.h Use DECLARE_*CHECKER* when possible (--force mode) 2020-09-09 09:27:11 -04:00
armv7m_nvic.h arm: Move system PPB container handling to armv7m 2021-09-01 11:08:18 +01:00
aspeed_vic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2835_ic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2836_control.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
exynos4210_combiner.h hw/arm/exynos4210: Put combiners into state struct 2022-04-21 11:37:04 +01:00
exynos4210_gic.h hw/arm/exynos4210: Put external GIC into state struct 2022-04-21 11:37:04 +01:00
goldfish_pic.h hw/m68k: Fix typo in SPDX tag 2021-11-09 10:11:27 +01:00
heathrow_pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
i8259.h hw: replace hw/i386/pc.h with a header just for the i8259 2019-12-17 19:33:49 +01:00
imx_avic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
imx_gpcv2.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
intc.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
loongson_liointc.h hw/intc: Rework Loongson LIOINTC 2021-01-04 23:24:44 +01:00
m68k_irqc.h hw/m68k: Fix typo in SPDX tag 2021-11-09 10:11:27 +01:00
mips_gic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
ppc-uic.h hw/ppc: Remove unused ppcuic_init() 2021-01-19 10:20:29 +11:00
realview_gic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
riscv_aclint.h hw/intc: Upgrade the SiFive CLINT implementation to RISC-V ACLINT 2021-09-21 07:56:49 +10:00
riscv_aplic.h hw/intc: Add RISC-V AIA APLIC device emulation 2022-02-16 12:24:19 +10:00
riscv_imsic.h hw/intc: Add RISC-V AIA IMSIC device emulation 2022-03-03 13:14:50 +10:00
rx_icu.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
sifive_plic.h hw/intc: sifive_plic: Convert the PLIC to use RISC-V CPU GPIO lines 2021-09-21 07:56:49 +10:00
xlnx-pmu-iomod-intc.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
xlnx-zynqmp-ipi.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00