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