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?