At the moment the guest physical address space is limited to 40b due to KVM limitations. [1] bumps this limitation and allows to create a VM with up to 52b GPA address space.
With this series, QEMU creates a virt VM with the max IPA range reported by the host kernel or 40b by default. This choice can be overriden by using the -machine kvm-type=<bits> option with bits within [40, 52]. If <bits> are not supported by the host, the legacy 40b value is used. It is an RFC as [1] is not upstream. This is not material for QEMU 3.0 due to the kernel dependency. Also the EDK2 FW has a fixed limit at 40b PA. Note at the moment there is no device or RAM laid out after 1TB (40b) in virt machine model address space. This will be addressed in a separate series. Best Regards Eric kernel dependency: [1] [PATCH v2 00/17] kvm: arm64: Dynamic & 52bit IPA support https://lkml.org/lkml/2018/3/27/437 For testing, use my kernel branch: https://github.com/eauger/linux/tree/4.16.0-rc3-Suzuki-52b-IPA-v2 This QEMU series can be found at: https://github.com/eauger/qemu/tree/v2.12.0-ipa-rfc Tests: - On Cavium Gigabyte, a 48b VM was created. - Migration tests were performed between kernel supporting the feature and destination kernel not suporting it Eric Auger (6): linux-headers: Partial update for KVM/ARM KVM_ARM_GET_MAX_VM_PHYS_SHIFT hw/boards: Add a MachineState parameter to kvm_type callback kvm: add kvm_get_max_vm_phys_shift hw/arm/virt: Add virt-3.0 machine type hw/arm/virt: support kvm_type property hw/arm/virt: handle max_vm_phys_shift conflicts on migration accel/kvm/kvm-all.c | 9 +++- accel/stubs/kvm-stub.c | 5 +++ hw/arm/virt.c | 102 +++++++++++++++++++++++++++++++++++++++--- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/spapr.c | 2 +- include/hw/arm/virt.h | 3 ++ include/hw/boards.h | 2 +- include/sysemu/kvm.h | 1 + linux-headers/asm-arm/kvm.h | 15 ------- linux-headers/asm-arm64/kvm.h | 6 --- linux-headers/linux/kvm.h | 6 +++ 12 files changed, 124 insertions(+), 31 deletions(-) -- 2.5.5