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/1752ccbfe53bf4f89f3f45e4ef96b7d...
[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