Hi All. This patch aims to add GICv3 support to the New VGIC. It adds support for the GICv3 distributor, redistributor, sysreg and ITS interfaces. This will allow Xen to emulate level-triggered interrupts with GICVb3 and will make the NEW_VGIC more complete and usable.
The bulk of the code is taken from the Linux Kernel v6.0 and adapted to the existing Xen codebase. For the NEW_VGIC config the !GIC_V3 dependency is removed. For the HAS_ITS config the deprecated flag is removed and NEW_VGIC dependency is added. Original non-ported changes are: - Moving the GICv3 distributor base to fix the new_vgic's intid calculation. - Moving the get/put irq to a wider scope to properly integrate the ITS. Mykyta Poturai (4): arm/gicv3: Move guest dist base arm/vgic: Move get/put irq to a wider scope arm/new vgic: Add GICv3 support for NEW VGIC arm/new vgic: Add ITS support to NEW_VGIC xen/arch/arm/Kconfig | 5 +- xen/arch/arm/domain_build.c | 23 +- xen/arch/arm/gic-v3-its.c | 28 + xen/arch/arm/gic-v3-lpi.c | 11 + xen/arch/arm/gic-v3.c | 9 + xen/arch/arm/include/asm/gic_v3_defs.h | 13 +- xen/arch/arm/include/asm/gic_v3_its.h | 82 + xen/arch/arm/include/asm/new_vgic.h | 96 +- xen/arch/arm/include/asm/vgic.h | 6 + xen/arch/arm/vgic/Makefile | 3 + xen/arch/arm/vgic/vgic-init.c | 19 +- xen/arch/arm/vgic/vgic-its.c | 1945 ++++++++++++++++++++++++ xen/arch/arm/vgic/vgic-mmio-v3.c | 1027 +++++++++++++ xen/arch/arm/vgic/vgic-mmio.c | 24 + xen/arch/arm/vgic/vgic-mmio.h | 21 + xen/arch/arm/vgic/vgic-v3.c | 383 +++++ xen/arch/arm/vgic/vgic.c | 60 +- xen/arch/arm/vgic/vgic.h | 51 +- xen/include/public/arch-arm.h | 2 +- 19 files changed, 3774 insertions(+), 34 deletions(-) create mode 100644 xen/arch/arm/vgic/vgic-its.c create mode 100644 xen/arch/arm/vgic/vgic-mmio-v3.c create mode 100644 xen/arch/arm/vgic/vgic-v3.c -- 2.34.1