mbox series

[Xen-devel,0/7] ARM: vGICv3: clean up optional DT properties

Message ID 20180124143517.18469-1-andre.przywara@linaro.org
Headers show
Series ARM: vGICv3: clean up optional DT properties | expand

Message

Andre Przywara Jan. 24, 2018, 2:35 p.m. UTC
The GICv3 devicetree binding describes two optional properties
(redistributor-stride and #redistributor-regions), which are meant to work
around implementations which deviate from the architecture. By the nature
of those they are only needed if the values are different from what the
architecture describes (1 region with a stride of 128K for GICv3 and 256K
for GICv4).
While we need to fully parse and obey these properties for the hypervisor
GIC driver, the visibility for guests should be very limited:
* DomUs get to see an emulated interrupt controller and a constructed
  memory map, so don't need those properties at all.
* Dom0 gets to see an emulated interrupt controller, but has to live with
  the host's memory map. That means we have to propagate multiple regions,
  but can (and should) use the architected stride.

In the moment those properties get more attention in the code than they
actually deserve: so far there seems to be only one platform using those,
and ACPI actually doesn't have any provisions at all to describe those
systems.
This patch series cleans up the handling of these properties, underlining
the workaround feature and helping to reduce a dependency between the GIC
and the VGIC (which was the actual driver of this series).
Patch 1 removes the redundant properties from DomU's device tree.
Patch 2-4 clean up the handling of the regions property, using it only
for Dom0, when needed.
Patch 5-7 rework the handling of the stride parameter, by simplifying
it for the host GICv3 driver, and removing it at all from the VGIC.

Cheers,
Andre

Andre Przywara (7):
  tools: ARM: vGICv3: avoid inserting optional DT properties
  ARM: vGICv3: drop GUEST_GICV3_RDIST_REGIONS symbol
  ARM: GICv3: emit optional DT property only when necessary
  ARM: GICv3: use hardware GICv3 redistributor regions for Dom0
  ARM: GICv3: simplify GICv3 redistributor stride handling
  ARM: vGICv3: always use architected redist stride
  ARM: vGICv3: remove rdist_stride from VGIC structure

 tools/libxl/libxl_arm.c           |  8 ------
 xen/arch/arm/gic-v3.c             | 54 +++++++++++++++++++--------------------
 xen/arch/arm/vgic-v3.c            | 45 +++++++++++++-------------------
 xen/include/asm-arm/domain.h      |  1 -
 xen/include/asm-arm/gic_v3_defs.h |  5 ++++
 xen/include/asm-arm/vgic.h        |  1 -
 xen/include/public/arch-arm.h     |  3 ---
 7 files changed, 49 insertions(+), 68 deletions(-)