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. Changes from [v2]: * rebased on top of master; * added a couple of simple test cases. Notes / to do items: * I've skipped [kvmonly] because it was not obvious how to forward-port it, and things generally seemed to work fine even without it. I have some ideas on how to integrate the logic in the current version of the code if it turns out to be necessary after all; * I've also skipped most of the changes to docs/formatdomain.rst, namely the ones that replaced "QEMU" or "QEMU/KVM" in :since: blocks. I'm not yet sure how to best deal with the situation, but adding "and HVF" everywhere is almost certainly not it; * docs/macos.html.in needs to be converted to ReStructuredText before merging. 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/441350810 [kvmonly] https://github.com/roolebo/libvirt/commit/1752ccbfe53bf4f89f3f45e4ef96b7da7a4cf87b [v2] https://listman.redhat.com/archives/libvir-list/2018-November/msg00802.html Andrea Bolognani (4): fixup! qemu: Fix HVF architecture check tests: Add HVF support to testutilsqemu tests: Add HVF test cases fixup! NEWS: Mention Apple Silicon support for HVF Roman Bolshakov (13): 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 virQEMUCapsTypeIsAccelerated qemu: Introduce virQEMUCapsHaveAccel qemu: Introduce virQEMUCapsAccelStr qemu: Make error message accel-agnostic 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 | 9 + docs/docs.html.in | 3 + docs/drvqemu.rst | 48 +++- docs/formatdomain.rst | 22 +- docs/index.html.in | 4 +- docs/macos.html.in | 229 ++++++++++++++++++ docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 1 + src/conf/domain_conf.h | 1 + src/qemu/qemu_capabilities.c | 107 +++++++- src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 4 + src/qemu/qemu_process.c | 2 +- .../hvf-aarch64-virt-headless.args | 48 ++++ .../hvf-aarch64-virt-headless.xml | 45 ++++ .../hvf-x86_64-q35-headless.args | 47 ++++ .../hvf-x86_64-q35-headless.xml | 44 ++++ tests/qemuxml2argvtest.c | 18 ++ .../hvf-aarch64-virt-headless.xml | 94 +++++++ .../hvf-x86_64-q35-headless.xml | 97 ++++++++ tests/qemuxml2xmltest.c | 18 ++ tests/testutilsqemu.c | 40 +++ 22 files changed, 857 insertions(+), 26 deletions(-) create mode 100644 docs/macos.html.in 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.xml create mode 100644 tests/qemuxml2xmloutdata/hvf-aarch64-virt-headless.xml create mode 100644 tests/qemuxml2xmloutdata/hvf-x86_64-q35-headless.xml -- 2.31.1