diff options
author | Eric Auger | 2019-03-04 11:13:34 +0100 |
---|---|---|
committer | Peter Maydell | 2019-03-05 16:55:09 +0100 |
commit | a27382e2106c12a9761ca0954b4c0fba0e650682 (patch) | |
tree | d4aa1f6c6341c54d23d1908e897f868b84bd116b | |
parent | hw/boards: Add a MachineState parameter to kvm_type callback (diff) | |
download | qemu-a27382e2106c12a9761ca0954b4c0fba0e650682.tar.gz qemu-a27382e2106c12a9761ca0954b4c0fba0e650682.tar.xz qemu-a27382e2106c12a9761ca0954b4c0fba0e650682.zip |
kvm: add kvm_arm_get_max_vm_ipa_size
Add the kvm_arm_get_max_vm_ipa_size() helper that returns the
number of bits in the IPA address space supported by KVM.
This capability needs to be known to create the VM with a
specific IPA max size (kvm_type passed along KVM_CREATE_VM ioctl.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-id: 20190304101339.25970-6-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | target/arm/kvm.c | 10 | ||||
-rw-r--r-- | target/arm/kvm_arm.h | 13 |
2 files changed, 23 insertions, 0 deletions
diff --git a/target/arm/kvm.c b/target/arm/kvm.c index e00ccf9c98..79a79f0190 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -18,6 +18,7 @@ #include "qemu/error-report.h" #include "sysemu/sysemu.h" #include "sysemu/kvm.h" +#include "sysemu/kvm_int.h" #include "kvm_arm.h" #include "cpu.h" #include "trace.h" @@ -162,6 +163,15 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) env->features = arm_host_cpu_features.features; } +int kvm_arm_get_max_vm_ipa_size(MachineState *ms) +{ + KVMState *s = KVM_STATE(ms->accelerator); + int ret; + + ret = kvm_check_extension(s, KVM_CAP_ARM_VM_IPA_SIZE); + return ret > 0 ? ret : 40; +} + int kvm_arch_init(MachineState *ms, KVMState *s) { /* For ARM interrupt delivery is always asynchronous, diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 6393455b1d..2a07333c61 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -208,6 +208,14 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf); void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu); /** + * kvm_arm_get_max_vm_ipa_size - Returns the number of bits in the + * IPA address space supported by KVM + * + * @ms: Machine state handle + */ +int kvm_arm_get_max_vm_ipa_size(MachineState *ms); + +/** * kvm_arm_sync_mpstate_to_kvm * @cpu: ARMCPU * @@ -239,6 +247,11 @@ static inline void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) cpu->host_cpu_probe_failed = true; } +static inline int kvm_arm_get_max_vm_ipa_size(MachineState *ms) +{ + return -ENOENT; +} + static inline int kvm_arm_vgic_probe(void) { return 0; |