Browse Source

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>
tags/v4.0.0-rc0
Eric Auger 9 months ago
parent
commit
a27382e210
2 changed files with 23 additions and 0 deletions
  1. +10
    -0
      target/arm/kvm.c
  2. +13
    -0
      target/arm/kvm_arm.h

+ 10
- 0
target/arm/kvm.c View File

@@ -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,

+ 13
- 0
target/arm/kvm_arm.h View File

@@ -207,6 +207,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;

Loading…
Cancel
Save