Hey,
I tested this on an intel macbook, virsh capabilities shows 'hvf' for
the x86_64 qemu binary, I started a f35 guest, -accel hvf is present
on the command line, and the VM is a lot faster than without hvf.
Feel free to add my Tested-by to the series:
Tested-by: Christophe Fergeau <cfergeau@redhat.com>
Christophe
пн, 17 янв. 2022 г. в 11:56, Andrea Bolognani <abologna@redhat.com>:
>
> In order to hopefully address [libvirt#147] at long last, I've picked
> up Roman's patches from 2018 and attempted to forward-port them.
>
> More specifically, I've used the [roolebo/hvf-domain] branch as a
> starting point, since it seems to contain a few improvements over
> [v2] and was just easier to pick up.
>
> The code is mostly his own, so I've retained the existing authorship
> information, but I've dropped Reviewed-by tags for commits that have
> been modified in non-trivial ways. I've applied very minimal style
> tweaks along the way, but overall I've tried to modify the existing
> patches as little as possible.
>
> I've added a few changes of my own, which I've marked as "fixup!"
> when I felt that they should be squashed into the previous patch
> rather than existing as separate commits.
>
> The new test cases, such as they are, pass, and no regressions to KVM
> support appear to have been introduced in the process. I don't
> currently have access to a machine running macOS, so I can't verify
> that it's actually possible to start a hardware-accelerated VM by
> myself, but a user has confirmed on the GitLab issue that the new
> feature works.
>
> Changes from [v5]:
>
> * rebased on top of master, dealing with a couple of
> straightforward merge conflicts in the process;
> * moved NEWS entry to the 8.1.0 section.
>
> Changes from [v4]:
>
> * fixed an issue that prevented machine types from being probed
> correctly, effectively making the entire thing non functional;
> * only report HVF support as available when the guest architecture
> and the host architecture match.
>
> Changes from [v3]:
>
> * reintroduced the patch that was missing in the initial version
> of the forward-port;
> * converted the documentation to reStructuredText and trimmed it
> significantly;
> * reworked virQEMUCapsAccelStr() based on Dan's suggestions;
> * reworked macOS support in the test suite based on Dan's
> suggestions;
> * fixed a few minor issues found while doing the above.
>
> Changes from [v2]:
>
> * rebased on top of master;
> * added a couple of simple test cases.
>
> Useful links:
>
> * GitLab: [abologna/hvf]
> * CI: [pipeline]
>
> [libvirt#147] https://gitlab.com/libvirt/libvirt/-/issues/147
> [roolebo/hvf-domain] https://github.com/roolebo/libvirt/tree/hvf-domain
> [abologna/hvf] https://gitlab.com/abologna/libvirt/-/commits/hvf
> [pipeline] https://gitlab.com/abologna/libvirt/-/pipelines/449465562
> [v5] https://listman.redhat.com/archives/libvir-list/2022-January/msg00411.html
> [v4] https://listman.redhat.com/archives/libvir-list/2022-January/msg00280.html
> [v3] https://listman.redhat.com/archives/libvir-list/2022-January/msg00131.html
> [v2] https://listman.redhat.com/archives/libvir-list/2018-November/msg00802.html
>
> Andrea Bolognani (7):
> qemu: Only probe KVM on Linux
> fixup! qemu: Fix / improve virQEMUCapsProbeHVF()
> tests: Introduce testQemuHostOS
> tests: Add macOS support to testutilsqemu
> tests: Add macOS support to qemuxml2*test
> tests: Add HVF test cases
> fixup! NEWS: Mention Apple Silicon support for HVF
>
> Roman Bolshakov (13):
> qemu: Add KVM CPUs into cache only if KVM is present
> conf: Add hvf domain type
> qemu: Define hvf capability
> qemu: Query hvf capability on macOS
> qemu: Expose hvf domain type if hvf is supported
> qemu: Introduce virQEMUCapsAccelStr
> qemu: Introduce virQEMUCapsTypeIsAccelerated
> qemu: Introduce virQEMUCapsHaveAccel
> qemu: Correct CPU capabilities probing for hvf
> docs: Add hvf on QEMU driver page
> docs: Note hvf support for domain elements
> docs: Add support page for libvirt on macOS
> news: Mention hvf domain type
>
> NEWS.rst | 5 +
> docs/docs.html.in | 3 +
> docs/drvqemu.rst | 48 +++++-
> docs/formatdomain.rst | 22 +--
> docs/index.html.in | 4 +-
> docs/macos.rst | 44 ++++++
> docs/meson.build | 1 +
> docs/schemas/domaincommon.rng | 1 +
> src/conf/domain_conf.c | 1 +
> src/conf/domain_conf.h | 1 +
> src/qemu/qemu_capabilities.c | 145 +++++++++++++++--
> src/qemu/qemu_capabilities.h | 1 +
> src/qemu/qemu_command.c | 4 +
> src/qemu/qemu_process.c | 10 +-
> .../hvf-aarch64-virt-headless.args | 48 ++++++
> .../hvf-aarch64-virt-headless.xml | 45 ++++++
> .../hvf-x86_64-q35-headless.args | 47 ++++++
> .../hvf-x86_64-q35-headless.x86_64-latest.err | 1 +
> .../hvf-x86_64-q35-headless.xml | 44 ++++++
> tests/qemuxml2argvtest.c | 43 +++++-
> .../hvf-aarch64-virt-headless.xml | 94 +++++++++++
> .../hvf-x86_64-q35-headless.xml | 97 ++++++++++++
> tests/qemuxml2xmltest.c | 43 +++++-
> tests/testutilsqemu.c | 146 ++++++++++++++----
> tests/testutilsqemu.h | 10 ++
> 25 files changed, 844 insertions(+), 64 deletions(-)
> create mode 100644 docs/macos.rst
> create mode 100644 tests/qemuxml2argvdata/hvf-aarch64-virt-headless.args
> create mode 100644 tests/qemuxml2argvdata/hvf-aarch64-virt-headless.xml
> create mode 100644 tests/qemuxml2argvdata/hvf-x86_64-q35-headless.args
> create mode 100644 tests/qemuxml2argvdata/hvf-x86_64-q35-headless.x86_64-latest.err
> create mode 100644 tests/qemuxml2argvdata/hvf-x86_64-q35-headless.xml
> create mode 100644 tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.xml
> create mode 100644 tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.xml
>
> --
> 2.34.1
>
>