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