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

Reply via email to