mbox series

[v1,0/6] xen/arm: Add Virtio-PCI for dom0less on ARM

Message ID 20240924162359.1390487-1-edgar.iglesias@gmail.com (mailing list archive)
Headers show
Series xen/arm: Add Virtio-PCI for dom0less on ARM | expand

Message

Edgar E. Iglesias Sept. 24, 2024, 4:23 p.m. UTC
From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

This series adds support for Virtio-PCI for dom0less on ARM.

Three parts:
1. Decrease size of second RAM bank to free up space in <40bit address range.
2. Add generation of virtio-pci FDT nodes for domU.
3. Add a background ECAM region always responding 0xFFFFFFFF (nothing attached).

Decreasing the size of the second RAM bank is probably a bit controversial
since it breaks backwards compatibility for guests with huge amounts of RAM.
There are other options we could consider but the problem we've got is that
we're running out of address-space under <40bits. There're some fragmented
holes under <32bit but nothing between 32 - 40bits and there are ARM systems
out there that only have 40-bit physical address space (Cortex-A53 on the
Xilinx ZynqMP to name one).

For virtio-pci the holes <32-bit are not large enough to fit the ECAM range
nor a 4G area to map pretechable-memory BARs.

Another option is to leave the second bank unmodified and default virtio-pci
to >40bit addresses. Users that create guests with less RAM than the maximum
can use the fdt bindings to relocate virtio-pci down to <40bit range if they
need to.

I've published some instructions on how to try this including the work in
progress QEMU side of the ARM PVH PCI support:
https://github.com/edgarigl/docs/blob/master/xen/pvh/virtio-pci-dom0less.md

Cheers,
Edgar

Edgar E. Iglesias (5):
  xen/arm: Decrease size of the 2nd ram bank
  xen/arm: Reserve resources for virtio-pci
  xen/arm: io: Add support for mmio background regions
  xen/arm: io: Add a read-const writes-ignored mmio handler
  xen/arm: dom0less: Add a background PCI ECAM mmio region

Stewart Hildebrand (1):
  xen/arm: create dom0less virtio-pci DT node

 docs/misc/arm/device-tree/booting.txt |  21 +++
 xen/arch/arm/dom0less-build.c         | 248 ++++++++++++++++++++++++++
 xen/arch/arm/include/asm/kernel.h     |  15 ++
 xen/arch/arm/include/asm/mmio.h       |  13 +-
 xen/arch/arm/io.c                     |  39 +++-
 xen/include/public/arch-arm.h         |  21 ++-
 6 files changed, 348 insertions(+), 9 deletions(-)