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. Signed-off-by: Riku Voipio <riku.voipio@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list