When the kernel reports valid iova ranges as non-contiguous, memory should be allocated to Guest in such a way that reserved regions(holes) are not visible by Guest.
This series retrieves the valid iova ranges based on the new proposed VFIO interface for kernel [1]. It then populates the first 1GB ram as a non-pluggable dimm and rest as a pc-dimm if the valid iova ranges are non-contiguous. Patch #3 of this series is loosely based on an earlier attempt by Kwangwoo Lee to add hotplug/pc-dimm support to arm64[2] RFC v1[3] --> RFCv2 -Based on new VFIO kernel interface -Part of Mem modelled as pc-dimm -Rebased to qemu 2.12.0 [1] https://lkml.org/lkml/2018/4/18/293 [2] https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg04600.html [3] https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg02412.html Shameer Kolothum (6): hw/vfio: Retrieve valid iova ranges from kernel hw/arm/virt: Enable dynamic generation of guest RAM memory regions hw/arm/virt: Add pc-dimm mem hotplug framework hw/arm: Changes required to accommodate non-contiguous DT mem nodes hw/arm: ACPI SRAT changes to accommodate non-contiguous mem hw/arm: Populate non-contiguous memory regions default-configs/aarch64-softmmu.mak | 1 + hw/arm/boot.c | 91 ++++++--- hw/arm/virt-acpi-build.c | 24 ++- hw/arm/virt.c | 367 +++++++++++++++++++++++++++++++++++- hw/vfio/common.c | 108 ++++++++++- include/hw/arm/arm.h | 12 ++ include/hw/arm/virt.h | 3 + include/hw/vfio/vfio-common.h | 7 + linux-headers/linux/vfio.h | 23 +++ 9 files changed, 589 insertions(+), 47 deletions(-) -- 2.7.4