mbox series

[XEN,0/4] arm: Add GICv3 support to the New VGIC

Message ID cover.1698225630.git.mykyta_poturai@epam.com (mailing list archive)
Headers show
Series arm: Add GICv3 support to the New VGIC | expand

Message

Mykyta Poturai Oct. 25, 2023, 10:12 a.m. UTC
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