On Fri, Dec 06, 2019 at 04:34:32PM -0500, Wainer dos Santos Moschetta wrote: > Currently kvm_available() checks for the presence of kvm module > and, if target and host arches don't mismatch. This patch adds > an 3rd checking: if QEMU binary was compiled with kvm > support. > > Signed-off-by: Wainer dos Santos Moschetta <waine...@redhat.com> > Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > python/qemu/accel.py | 27 +++++++++++++++++++++------ > 1 file changed, 21 insertions(+), 6 deletions(-) > > diff --git a/python/qemu/accel.py b/python/qemu/accel.py > index 746b7e68f5..9fecffb44b 100644 > --- a/python/qemu/accel.py > +++ b/python/qemu/accel.py > @@ -46,9 +46,24 @@ def list_accel(qemu_bin): > # Skip the first line which is the header. > return [l.strip() for l in lines[1:] if l] > > -def kvm_available(target_arch=None): > - host_arch = os.uname()[4] > - if target_arch and target_arch != host_arch: > - if target_arch != ADDITIONAL_ARCHES.get(host_arch): > - return False > - return os.access("/dev/kvm", os.R_OK | os.W_OK) > +def kvm_available(target_arch=None, qemu_bin=None): > + """ > + Check if KVM is available using the following heuristic: > + - Kernel module is present in the host; > + - Target and host arches don't mismatch; > + - KVM is enabled in the QEMU binary. > + > + @param target_arch (str): target architecture > + @param qemu_bin (str): path to the QEMU binary > + @return True if kvm is available, otherwise False. > + """ > + if not os.access("/dev/kvm", os.R_OK | os.W_OK): > + return False > + if target_arch: > + host_arch = os.uname()[4] > + if target_arch != host_arch: > + if target_arch != ADDITIONAL_ARCHES.get(host_arch): > + return False > + if qemu_bin and "kvm" not in list_accel(qemu_bin): > + return False > + return True > -- > 2.21.0 >
Reviewed-by: Cleber Rosa <cr...@redhat.com> Tested-by: Cleber Rosa <cr...@redhat.com>
signature.asc
Description: PGP signature