TL;DR: We've historically made selection of the specific virtio frontend device based on qemu capabilities but didn't record the choice. Migrations break if your qemu deployment differs. For more in-depth analysis see 16/20. This series conists of: -- refactor of removing detected qemu capabilities via config or the QMEU namespace -- fix to capability detection if host has no qemu -- addition of testing covering various possibilities for the virtio video devices which show specifics -- addition of XML infra for the new property holding the data -- refactors of the virtio selection code -- selecting the model in post parse callbacks -- fixing of validation code -- fixing of commandline generator Peter Krempa (20): qemu: capabilities: Apply 'capability_filters' configration option on all capabilities qemu: capabilities: Export 'virQEMUCapsNewCopy' outside of 'qemu_capspriv' qemu: Allow reuse of 'qemuProcessStartUpdateCustomCaps' qemu: validate: Validate VM config with qemuCaps influenced by <qemu:capabilities> qemu: postparse: Process VM config with qemuCaps influenced by <qemu:capabilities> virQEMUCapsCacheLookupDefault: Fix error message when no emulators are installed qemuxmlconfdata: un-symlink 'video-virtio-vga-gpu-gl' output qemuxmlconftest: Add 'video-virtio-vga' invocation with QEMU_CAPS_DEVICE_VIRTIO_VGA disabled qemuxmlconftest: Add test cases for configs asking for 'virtio-gpu-gl' or 'virtio-vga-gl' without the capability qemuxmlconftest: Add invocation of 'video-virtio-vga-gpu-gl' with missing caps and VIR_DOMAIN_DEF_PARSE_ABI_UPDATE qemustatusxml2xml: Add test case capturing virtio video device virDomainVideoDefFormat: Use 'virXMLFormatElement' instead of custom formatter conf: Add fields for recording actually-selected virtio video device qemuxmlconftest: Add test case for specifying 'virtio-gpu' where 'virtio-vga' would be picked qemuDeviceVideoGetModel: Directly return picked model qemu: postparse: Fill in selected virtio video frondend device in the XML qemuValidateDomainDeviceDefVideo: Fix checks of virtio video devices qemuDeviceVideoGetModel: Remove logic for selecting 'virtio' devices qemuDeviceVideoGetModel: Simplify by relying on checks from 'qemuValidateDomainDeviceDefVideo' qemu: Remove 'qemuDomainSupportsVideoVga' docs/formatdomain.rst | 8 + src/conf/domain_conf.c | 114 +++-- src/conf/domain_conf.h | 15 + src/conf/schemas/domaincommon.rng | 18 +- src/libvirt_private.syms | 1 + src/qemu/qemu_capabilities.c | 26 +- src/qemu/qemu_capabilities.h | 5 +- src/qemu/qemu_capspriv.h | 5 +- src/qemu/qemu_command.c | 163 +++--- src/qemu/qemu_domain.c | 96 +++- src/qemu/qemu_domain.h | 9 +- src/qemu/qemu_driver.c | 23 +- src/qemu/qemu_postparse.c | 108 +++- src/qemu/qemu_process.c | 55 +-- src/qemu/qemu_validate.c | 110 +++-- tests/qemucapsprobe.c | 3 +- .../virtio-vga-upgrade-in.xml | 466 ++++++++++++++++++ .../virtio-vga-upgrade-missing-in.xml | 464 +++++++++++++++++ .../virtio-vga-upgrade-missing-out.xml | 457 +++++++++++++++++ .../virtio-vga-upgrade-out.xml | 459 +++++++++++++++++ tests/qemuxmlactivetest.c | 6 + .../aarch64-video-default.aarch64-latest.xml | 2 +- ...64-video-virtio-gpu-pci.aarch64-latest.xml | 2 +- ...fault-models.aarch64-latest.abi-update.xml | 2 +- ...h64-virt-default-models.aarch64-latest.xml | 2 +- .../aarch64-virt-graphics.aarch64-latest.xml | 2 +- ...ault-video-type-aarch64.aarch64-latest.xml | 2 +- ...eo-type-loongarch64.loongarch64-latest.xml | 2 +- ...ault-video-type-riscv64.riscv64-latest.xml | 2 +- .../default-video-type-s390x.s390x-latest.xml | 2 +- ...t-models.loongarch64-latest.abi-update.xml | 2 +- ...virt-default-models.loongarch64-latest.xml | 2 +- ...rch64-virt-graphics.loongarch64-latest.xml | 2 +- .../q35-pcie-autoadd.x86_64-latest.xml | 2 +- .../q35-pcie.x86_64-latest.xml | 2 +- ...fault-models.riscv64-latest.abi-update.xml | 2 +- ...v64-virt-default-models.riscv64-latest.xml | 2 +- .../riscv64-virt-graphics.riscv64-latest.xml | 2 +- ...default-models.s390x-latest.abi-update.xml | 2 +- .../s390x-ccw-default-models.s390x-latest.xml | 2 +- .../s390x-ccw-graphics.s390x-latest.xml | 2 +- ...vhost-user-gpu-secondary.x86_64-latest.xml | 4 +- .../vhost-user-vga.x86_64-latest.xml | 2 +- .../video-virtio-blob-off.x86_64-latest.xml | 4 +- .../video-virtio-blob-on.x86_64-latest.xml | 4 +- .../video-virtio-edid-none.x86_64-latest.xml | 2 +- .../video-virtio-edid-off.x86_64-latest.xml | 2 +- .../video-virtio-edid-on.x86_64-latest.xml | 2 +- ...video-virtio-gpu-ccw-auto.s390x-latest.xml | 2 +- .../video-virtio-gpu-ccw.s390x-latest.xml | 4 +- .../video-virtio-gpu-device.x86_64-latest.xml | 2 +- .../video-virtio-gpu-sdl-gl.x86_64-latest.xml | 2 +- ...deo-virtio-gpu-secondary.x86_64-latest.xml | 4 +- ...ideo-virtio-gpu-spice-gl.x86_64-latest.xml | 2 +- .../video-virtio-gpu-virgl.x86_64-latest.xml | 2 +- ...io-vga-device-downgrade.x86_64-latest.args | 37 ++ ...tio-vga-device-downgrade.x86_64-latest.xml | 44 ++ .../video-virtio-vga-device-downgrade.xml | 33 ++ ..._VIRTIO_GPU_GL_PCI-disabled-ABI_UPDATE.err | 1 + ....QEMU_CAPS_VIRTIO_GPU_GL_PCI-disabled.args | 35 ++ ...t.QEMU_CAPS_VIRTIO_GPU_GL_PCI-disabled.xml | 46 ++ ...APS_VIRTIO_VGA_GL-disabled-ABI_UPDATE.args | 35 ++ ...CAPS_VIRTIO_VGA_GL-disabled-ABI_UPDATE.xml | 46 ++ ...test.QEMU_CAPS_VIRTIO_VGA_GL-disabled.args | 35 ++ ...atest.QEMU_CAPS_VIRTIO_VGA_GL-disabled.xml | 46 ++ .../video-virtio-vga-gpu-gl.x86_64-latest.xml | 47 +- ....QEMU_CAPS_DEVICE_VIRTIO_VGA-disabled.args | 37 ++ ...t.QEMU_CAPS_DEVICE_VIRTIO_VGA-disabled.xml | 44 ++ .../video-virtio-vga.x86_64-latest.xml | 2 +- ...virtio-options-video-ats.x86_64-latest.xml | 4 +- ...rtio-options-video-iommu.x86_64-latest.xml | 4 +- ...tio-options-video-packed.x86_64-latest.xml | 4 +- tests/qemuxmlconfdata/virtio-options.xml | 2 +- tests/qemuxmlconftest.c | 29 ++ tests/testutilsqemu.c | 3 +- 75 files changed, 2908 insertions(+), 315 deletions(-) create mode 100644 tests/qemustatusxml2xmldata/virtio-vga-upgrade-in.xml create mode 100644 tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-in.xml create mode 100644 tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-out.xml create mode 100644 tests/qemustatusxml2xmldata/virtio-vga-upgrade-out.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-device-downgrade.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-device-downgrade.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-device-downgrade.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_GPU_GL_PCI-disabled-ABI_UPDATE.err create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_GPU_GL_PCI-disabled.args create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_GPU_GL_PCI-disabled.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_VGA_GL-disabled-ABI_UPDATE.args create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_VGA_GL-disabled-ABI_UPDATE.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_VGA_GL-disabled.args create mode 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.QEMU_CAPS_VIRTIO_VGA_GL-disabled.xml mode change 120000 => 100644 tests/qemuxmlconfdata/video-virtio-vga-gpu-gl.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/video-virtio-vga.x86_64-latest.QEMU_CAPS_DEVICE_VIRTIO_VGA-disabled.args create mode 100644 tests/qemuxmlconfdata/video-virtio-vga.x86_64-latest.QEMU_CAPS_DEVICE_VIRTIO_VGA-disabled.xml -- 2.54.0