[libvirt] [PATCH] virt-host-validate: improve tests for arm/aarch64

Riku Voipio riku.voipio at linaro.org
Fri Jun 10 12:37:25 UTC 2016


On 3 June 2016 at 15:53, Riku Voipio <riku.voipio at linaro.org> wrote:
> ARM/Aarch64 /proc/cpuinfo has no virtualization related flags.
> Refactor the Qemu/KVM test a bit:
>
> 1) run the "for hardware virtualization" test only on plaforms with known
>    cpuinfo flags (x86, s390)
> 2) test for /dev/kvm also on platforms where no cpu flags are set
>
> Finally Add a more generic error hint message for non-x86 plaforms
> when /dev/kvm is missing.

Ping? Can some please take a look?

> Signed-off-by: Riku Voipio <riku.voipio at linaro.org>
> ---
>  tools/virt-host-validate-qemu.c | 29 ++++++++++++++++++++---------
>  1 file changed, 20 insertions(+), 9 deletions(-)
>
> diff --git a/tools/virt-host-validate-qemu.c b/tools/virt-host-validate-qemu.c
> index 56ec3c7..520c8ed 100644
> --- a/tools/virt-host-validate-qemu.c
> +++ b/tools/virt-host-validate-qemu.c
> @@ -32,8 +32,9 @@ int virHostValidateQEMU(void)
>      virBitmapPtr flags;
>      int ret = 0;
>      bool hasHwVirt = false;
> -
> -    virHostMsgCheck("QEMU", "%s", _("for hardware virtualization"));
> +    bool hasVirtFlag = false;
> +    char *kvmhint = _("Check that CPU and firmware supports virtualization "
> +                      "and kvm module is loaded");
>
>      if (!(flags = virHostValidateGetCPUFlags()))
>          return -1;
> @@ -41,12 +42,16 @@ int virHostValidateQEMU(void)
>      switch (virArchFromHost()) {
>      case VIR_ARCH_I686:
>      case VIR_ARCH_X86_64:
> +        hasVirtFlag = true;
> +        kvmhint =_("Check that the 'kvm-intel' or 'kvm-amd' modules are "
> +                   "loaded & the BIOS has enabled virtualization");
>          if (virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_SVM) ||
>              virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_VMX))
>              hasHwVirt = true;
>          break;
>      case VIR_ARCH_S390:
>      case VIR_ARCH_S390X:
> +        hasVirtFlag = true;
>          if (virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_SIE))
>              hasHwVirt = true;
>          break;
> @@ -54,21 +59,27 @@ int virHostValidateQEMU(void)
>          hasHwVirt = false;
>      }
>
> -    if (hasHwVirt) {
> -        virHostMsgPass();
> +    if (hasVirtFlag) {
> +        virHostMsgCheck("QEMU", "%s", _("for hardware virtualization"));
> +        if (hasHwVirt)
> +            virHostMsgPass();
> +        else {
> +            virHostMsgFail(VIR_HOST_VALIDATE_FAIL,
> +                           _("Only emulated CPUs are available, performance will be significantly limited"));
> +            ret = -1;
> +        }
> +    }
> +
> +    if (hasHwVirt || !hasVirtFlag) {
>          if (virHostValidateDeviceExists("QEMU", "/dev/kvm",
>                                          VIR_HOST_VALIDATE_FAIL,
> -                                        _("Check that the 'kvm-intel' or 'kvm-amd' modules are "
> -                                          "loaded & the BIOS has enabled virtualization")) < 0)
> +                                        kvmhint) <0)
>              ret = -1;
>          else if (virHostValidateDeviceAccessible("QEMU", "/dev/kvm",
>                                                   VIR_HOST_VALIDATE_FAIL,
>                                                   _("Check /dev/kvm is world writable or you are in "
>                                                     "a group that is allowed to access it")) < 0)
>              ret = -1;
> -    } else {
> -        virHostMsgFail(VIR_HOST_VALIDATE_WARN,
> -                       _("Only emulated CPUs are available, performance will be significantly limited"));
>      }
>
>      virBitmapFree(flags);
> --
> 2.1.4
>




More information about the libvir-list mailing list