v2 of: https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/DFODX... diff to v1: - Validate dependencies across hv-* enlightenment (per QEMU docs), - Drop introduction of hv-time, since it's already present (as a timer), I've kept mode='host-model' in domain XML and <defaults/> in domcaps XML, since no one objected, yet. Michal Prívozník (29): docs: Fix QEMU version wrt hypervclock src: Drop needless typecast to virDomainTimerNameType conf: Introduce virDomainDefHasTimer() qemuxmlconfdata: Adjust hv-stimer related tests qemu_validate: Reflect dependencies of hv-synic qemu_validate: Reflect dependencies of hv-stimer qemu_validate: Reflect dependencies of hv-tlbflush qemu_validate: Reflect dependencies of hv-ipi qemu_validate: Reflect dependencies of hv-evmcs qemu_validate: Reflect dependencies of hv-tlbflush-direct NEWS: Document Hyper-V enlightenment validation virxml: Introduce virXPathTristateSwitch() virxml: Introduce virXPathTristateBool() qemu: Use virXPathTristateBool() domain_conf: Move format of hyperv features into a function domain_conf: Use virXMLFormatElement() to format hyperv features qemu_caps: Prefer VIR_DOMAIN_CAPS_ENUM_IS_SET() qemu_command: Move hyperv cmd line generation into a function qemu_command: Prefer virBufferAddLit() in qemuBuildCpuHypervCommandLine() libxl: Simplify setting HyperV features conf: More hyperv related members into a single struct docs: Drop remark on now unsupported version of QEMU conf: Report default hyperv values in domain capabilities qemu_capabilities: Format and parse new hyperv domcaps members qemu_capabilities: Fetch new hyperv domcaps qemu_caps: Introduce virQEMUCapsGetHypervCapabilities() conf: Introduce hyperv host-model mode qemu_process: Populate hyperv features for host-model NEWS: Document new host-model hyperv mode NEWS.rst | 11 + docs/formatdomain.rst | 8 +- docs/formatdomaincaps.rst | 9 +- src/conf/domain_capabilities.c | 61 ++++- src/conf/domain_capabilities.h | 11 + src/conf/domain_conf.c | 235 ++++++++++-------- src/conf/domain_conf.h | 20 +- src/conf/schemas/domaincaps.rng | 29 +++ src/conf/schemas/domaincommon.rng | 3 + src/conf/virconftypes.h | 2 + src/libvirt_private.syms | 5 + src/libxl/libxl_conf.c | 70 +++--- src/libxl/xen_common.c | 2 +- src/lxc/lxc_cgroup.c | 2 +- src/lxc/lxc_controller.c | 2 +- src/qemu/qemu_capabilities.c | 107 +++++++- src/qemu/qemu_capabilities.h | 3 + src/qemu/qemu_command.c | 162 ++++++------ src/qemu/qemu_domain.c | 16 +- src/qemu/qemu_process.c | 80 +++++- src/qemu/qemu_validate.c | 74 +++++- src/util/virxml.c | 68 +++++ src/util/virxml.h | 10 + .../qemu_10.0.0-q35.x86_64+amdsev.xml | 7 + .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml | 7 + .../qemu_10.0.0-tcg.x86_64+amdsev.xml | 7 + .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml | 7 + .../qemu_10.0.0.x86_64+amdsev.xml | 7 + tests/domaincapsdata/qemu_10.0.0.x86_64.xml | 7 + .../qemu_10.1.0-q35.x86_64+inteltdx.xml | 7 + .../domaincapsdata/qemu_10.1.0-q35.x86_64.xml | 7 + .../qemu_10.1.0-tcg.x86_64+inteltdx.xml | 7 + .../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml | 7 + .../qemu_10.1.0.x86_64+inteltdx.xml | 7 + tests/domaincapsdata/qemu_10.1.0.x86_64.xml | 7 + .../domaincapsdata/qemu_10.2.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_10.2.0.x86_64.xml | 7 + .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 7 + .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 7 + .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 7 + .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 7 + .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 7 + .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 7 + tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 7 + .../qemu_9.2.0-q35.x86_64+amdsev.xml | 7 + .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 7 + .../qemu_9.2.0-tcg.x86_64+amdsev.xml | 7 + .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 7 + .../qemu_9.2.0.x86_64+amdsev.xml | 7 + tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 7 + .../caps_10.0.0_x86_64+amdsev.xml | 5 + .../caps_10.0.0_x86_64.xml | 5 + .../caps_10.1.0_x86_64+inteltdx.xml | 5 + .../caps_10.1.0_x86_64.xml | 5 + .../caps_10.2.0_x86_64.xml | 5 + .../caps_8.0.0_x86_64.xml | 5 + .../caps_8.1.0_x86_64.xml | 5 + .../caps_8.2.0_x86_64.xml | 5 + .../caps_9.0.0_x86_64.xml | 5 + .../caps_9.1.0_x86_64.xml | 5 + .../caps_9.2.0_x86_64+amdsev.xml | 5 + .../caps_9.2.0_x86_64.xml | 5 + .../hyperv-host-model.x86_64-latest.args | 32 +++ .../hyperv-host-model.x86_64-latest.xml | 33 +++ tests/qemuxmlconfdata/hyperv-host-model.xml | 27 ++ .../hyperv-passthrough.x86_64-latest.xml | 3 +- .../hyperv-stimer-direct.x86_64-latest.args | 2 +- .../hyperv-stimer-direct.x86_64-latest.xml | 4 +- .../qemuxmlconfdata/hyperv-stimer-direct.xml | 4 +- .../qemuxmlconfdata/hyperv.x86_64-latest.args | 2 +- .../qemuxmlconfdata/hyperv.x86_64-latest.xml | 4 +- tests/qemuxmlconfdata/hyperv.xml | 4 +- tests/qemuxmlconftest.c | 1 + 82 files changed, 1151 insertions(+), 267 deletions(-) create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.xml -- 2.49.1