On Fri, Oct 25, 2024 at 05:03:54PM -0400, Tamir Duberstein wrote: > @@ -124,6 +125,29 @@ class LinuxSourceTreeOperationsQemu(LinuxSourceTreeOperations): > '-no-reboot', > '-nographic', > '-serial', self._serial] + self._extra_qemu_params > + accelerators = { > + line.strip() > + for line in subprocess.check_output([qemu_binary, "-accel", "help"], text=True).splitlines() > + if line and line.islower() > + } > + if 'kvm' in accelerators: > + try: > + with open('/dev/kvm', 'rb+'): > + qemu_command.extend(['-accel', 'kvm']) > + except OSError as e: > + print(e) > + elif 'hvf' in accelerators: > + try: > + for line in subprocess.check_output(['sysctl', 'kern.hv_support'], text=True).splitlines(): > + if not line: > + continue > + key, value = line.split(':') > + if key == 'kern.hv_support' and bool(value): > + qemu_command.extend(['-accel', 'hvf']) > + break > + except subprocess.CalledProcessError as e: > + print(e) > + QEMU supports falling back if one accelerator is not available, if you specify multiple like -accel kvm:tcg. Couldn't you rely on that rather than re-implementing the availability checks here?
Attachment:
signature.asc
Description: PGP signature