On Mon, Mar 28, 2016 at 02:45:18PM -0400, John Ferlan wrote:
On 03/21/2016 07:55 AM, Bjoern Walk wrote:
> Since kernel version 4.5, s390 has the 'sie' flag to declare its
> hardware virtualization support. Let's make virt-host-validate aware so
> this check is passed correctly.
>
> Signed-off-by: Bjoern Walk <bwalk(a)linux.vnet.ibm.com>
> Reviewed-by: Boris Fiuczynski <fiuczy(a)linux.vnet.ibm.com>
> ---
> tools/virt-host-validate-qemu.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
I've never seen the output of /proc/cpuinfo on an S390, but looking at
the source code I found it does seem to print with the "features" for a
cpuinfo on an s390 machine (as opposed the "flags" for a vmx/svm machine).
The virHostValidateHasCPUFlag doesn't really distinguish "flags" or
"features" field being specified as a label (although I imagine that
could have internationalization impact if we tried to limit that more).
Anyway, before I push this - I wanted to see if there were any "other"
thoughts regarding letting this be a bit more generic. My one concern is
some field name some day has "sie" added (e.g. "easier" or
"transient"
would match).
One change that may help with that would be to check "sie " instead of
"sie" (similarly "svm" could be "svm " and "vmx"
could be "vmx "). The
source code prints the output as "..."%s ", int_hwcap_str[i]..."
Yes this is a good point, but also its a pre-existing problem with the
virHostValidateHasCPUFlag method, so not a reason to block this patch.
It can be fixed separately as desired.
> diff --git a/tools/virt-host-validate-qemu.c
b/tools/virt-host-validate-qemu.c
> index a9f6c1e..01fb24b 100644
> --- a/tools/virt-host-validate-qemu.c
> +++ b/tools/virt-host-validate-qemu.c
> @@ -31,7 +31,8 @@ int virHostValidateQEMU(void)
>
> virHostMsgCheck("QEMU", "%s", ("for hardware
virtualization"));
> if (virHostValidateHasCPUFlag("svm") ||
> - virHostValidateHasCPUFlag("vmx")) {
> + virHostValidateHasCPUFlag("vmx") ||
> + virHostValidateHasCPUFlag("sie")) {
> virHostMsgPass();
> if (virHostValidateDeviceExists("QEMU", "/dev/kvm",
> VIR_HOST_VALIDATE_FAIL,
>
What we should do here though is check the host architecture before
checking CPU flags.
eg you'll want to make this code do something like this
bool hasHWVirt = false;
switch (virArchFromHost()) {
case VIR_ARCH_I686:
case VIR_ARCH_X86_64:
if (virHostValidateHasCPUFlag("svm") ||
virHostValidateHasCPUFlag("vmx"))
hasHWVirt = true;
break;
case VIR_ARCH_S390:
case VIR_ARCH_S390X:
if (virHostValidateHasCPUFlag("sie"))
hasHWVirt = true;
}
if (hasHWVirt) {
....do the /dev/kvm check...
}
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|