On 3 June 2016 at 15:53, Riku Voipio <riku.voipio@xxxxxxxxxx> 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@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