From: Peter Krempa <[email protected]>

Add example of two running configs with distinct recorded capabilities
(presence of QEMU_CAPS_DEVICE_VIRTIO_VGA at startup) which will
demonstrate the recording of the picked actual device type on the
commandline.

Signed-off-by: Peter Krempa <[email protected]>
---
 .../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 +
 5 files changed, 1852 insertions(+)
 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

diff --git a/tests/qemustatusxml2xmldata/virtio-vga-upgrade-in.xml 
b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-in.xml
new file mode 100644
index 0000000000..8e526c4cc3
--- /dev/null
+++ b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-in.xml
@@ -0,0 +1,466 @@
+<!--
+WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
+OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
+  virsh edit virtio-vga-test
+or other application using the libvirt API.
+-->
+
+<domstatus state='running' reason='booted' pid='1348839'>
+  <monitor path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test/monitor.sock' 
type='unix'/>
+  <namespaces>
+    <mount/>
+  </namespaces>
+  <vcpus>
+    <vcpu id='0' pid='1348848'/>
+    <vcpu id='1' pid='1348850'/>
+  </vcpus>
+  <qemuCaps>
+    <flag name='kvm'/>
+    <flag name='sdl'/>
+    <flag name='spice'/>
+    <flag name='hda-duplex'/>
+    <flag name='ccid-emulated'/>
+    <flag name='ccid-passthru'/>
+    <flag name='piix3-usb-uhci'/>
+    <flag name='piix4-usb-uhci'/>
+    <flag name='usb-ehci'/>
+    <flag name='ich9-usb-ehci1'/>
+    <flag name='pci-ohci'/>
+    <flag name='usb-redir'/>
+    <flag name='usb-hub'/>
+    <flag name='ich9-ahci'/>
+    <flag name='scsi-disk.channel'/>
+    <flag name='scsi-block'/>
+    <flag name='hda-micro'/>
+    <flag name='nec-usb-xhci'/>
+    <flag name='lsi'/>
+    <flag name='virtio-scsi-pci'/>
+    <flag name='usb-redir.filter'/>
+    <flag name='seccomp-sandbox'/>
+    <flag name='vnc'/>
+    <flag name='qxl'/>
+    <flag name='VGA'/>
+    <flag name='cirrus-vga'/>
+    <flag name='vmware-svga'/>
+    <flag name='usb-serial'/>
+    <flag name='virtio-rng'/>
+    <flag name='rng-random'/>
+    <flag name='rng-egd'/>
+    <flag name='megasas'/>
+    <flag name='tpm-passthrough'/>
+    <flag name='tpm-tis'/>
+    <flag name='pci-bridge'/>
+    <flag name='vfio-pci'/>
+    <flag name='dmi-to-pci-bridge'/>
+    <flag name='usb-storage'/>
+    <flag name='virtio-mmio'/>
+    <flag name='ich9-intel-hda'/>
+    <flag name='kvm-pit-lost-tick-policy'/>
+    <flag name='pvpanic'/>
+    <flag name='usb-kbd'/>
+    <flag name='usb-audio'/>
+    <flag name='rtc-reset-reinjection'/>
+    <flag name='VGA.vgamem_mb'/>
+    <flag name='vmware-svga.vgamem_mb'/>
+    <flag name='qxl.vgamem_mb'/>
+    <flag name='pc-dimm'/>
+    <flag name='machine-vmport-opt'/>
+    <flag name='pci-serial'/>
+    <flag name='ioh3420'/>
+    <flag name='x3130-upstream'/>
+    <flag name='xio3130-downstream'/>
+    <flag name='rtl8139'/>
+    <flag name='e1000'/>
+    <flag name='virtio-net'/>
+    <flag name='virtio-gpu'/>
+    <flag name='virtio-keyboard'/>
+    <flag name='virtio-mouse'/>
+    <flag name='virtio-tablet'/>
+    <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
+    <flag name='mptsas1068'/>
+    <flag name='spice-gl'/>
+    <flag name='qxl.vram64_size_mb'/>
+    <flag name='pxb'/>
+    <flag name='pxb-pcie'/>
+    <flag name='intel-iommu'/>
+    <flag name='virtio-vga'/>
+    <flag name='ivshmem-plain'/>
+    <flag name='ivshmem-doorbell'/>
+    <flag name='vhost-scsi'/>
+    <flag name='query-cpu-model-expansion'/>
+    <flag name='spice-rendernode'/>
+    <flag name='nvdimm'/>
+    <flag name='pcie-root-port'/>
+    <flag name='query-cpu-definitions'/>
+    <flag name='qemu-xhci'/>
+    <flag name='intel-iommu.intremap'/>
+    <flag name='intel-iommu.caching-mode'/>
+    <flag name='intel-iommu.eim'/>
+    <flag name='intel-iommu.device-iotlb'/>
+    <flag name='vmcoreinfo'/>
+    <flag name='isa-serial'/>
+    <flag name='pcie-pci-bridge'/>
+    <flag name='nbd-tls'/>
+    <flag name='tpm-crb'/>
+    <flag name='pr-manager-helper'/>
+    <flag name='screendump_device'/>
+    <flag name='hda-output'/>
+    <flag name='vmgenid'/>
+    <flag name='vhost-vsock'/>
+    <flag name='tpm-emulator'/>
+    <flag name='mch'/>
+    <flag name='mch.extended-tseg-mbytes'/>
+    <flag name='egl-headless'/>
+    <flag name='memory-backend-memfd'/>
+    <flag name='memory-backend-memfd.hugetlb'/>
+    <flag name='egl-headless.rendernode'/>
+    <flag name='nvdimm.unarmed'/>
+    <flag name='virtio-pci-non-transitional'/>
+    <flag name='x86-max-cpu'/>
+    <flag name='cpu-unavailable-features'/>
+    <flag name='canonical-cpu-features'/>
+    <flag name='bochs-display'/>
+    <flag name='migration-file-drop-cache'/>
+    <flag name='dbus-vmstate'/>
+    <flag name='vhost-user-gpu'/>
+    <flag name='vhost-user-vga'/>
+    <flag name='query-cpu-model-baseline'/>
+    <flag name='query-cpu-model-comparison'/>
+    <flag name='ramfb'/>
+    <flag name='drive-nvme'/>
+    <flag name='smp-dies'/>
+    <flag name='i8042'/>
+    <flag name='rng-builtin'/>
+    <flag name='vhost-user-fs'/>
+    <flag name='fsdev.multidevs'/>
+    <flag name='pcie-root-port.hotplug'/>
+    <flag name='aio.io_uring'/>
+    <flag name='tcg'/>
+    <flag name='pvscsi'/>
+    <flag name='cpu.migratable'/>
+    <flag name='intel-iommu.aw-bits'/>
+    <flag name='numa.hmat'/>
+    <flag name='usb-host.hostdevice'/>
+    <flag name='virtio-balloon.free-page-reporting'/>
+    <flag name='netdev.vhost-vdpa'/>
+    <flag name='dc390'/>
+    <flag name='am53c974'/>
+    <flag name='virtio-pmem-pci'/>
+    <flag name='vhost-user-fs.bootindex'/>
+    <flag name='vhost-user-blk'/>
+    <flag name='cpu-max'/>
+    <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
+    <flag name='vnc-power-control'/>
+    <flag name='rotation-rate'/>
+    <flag name='acpi-index'/>
+    <flag name='input-linux'/>
+    <flag name='virtio-gpu-gl-pci'/>
+    <flag name='virtio-vga-gl'/>
+    <flag name='confidential-guest-support'/>
+    <flag name='set-action'/>
+    <flag name='virtio-blk.queue-size'/>
+    <flag name='virtio-mem-pci'/>
+    <flag name='memory-backend-file.reserve'/>
+    <flag name='piix4.acpi-root-pci-hotplug'/>
+    <flag name='netdev.json'/>
+    <flag name='query-dirty-rate'/>
+    <flag name='rbd-encryption'/>
+    <flag name='sev-guest-kernel-hashes'/>
+    <flag name='sev-inject-launch-secret'/>
+    <flag name='device.json+hotplug'/>
+    <flag name='virtio-mem-pci.prealloc'/>
+    <flag name='calc-dirty-rate'/>
+    <flag name='dirtyrate-param.mode'/>
+    <flag name='blockdev.nbd.tls-hostname'/>
+    <flag name='memory-backend-file.prealloc-threads'/>
+    <flag name='virtio-iommu-pci'/>
+    <flag name='virtio-iommu.boot-bypass'/>
+    <flag name='virtio-net.rss'/>
+    <flag name='chardev.qemu-vdagent'/>
+    <flag name='display-dbus'/>
+    <flag name='iothread.thread-pool-max'/>
+    <flag name='usb-host.guest-resets-all'/>
+    <flag name='migration.blocked-reasons'/>
+    <flag name='query-stats'/>
+    <flag name='query-stats-schemas'/>
+    <flag name='thread-context'/>
+    <flag name='screenshot-format-png'/>
+    <flag name='machine-hpet'/>
+    <flag name='netdev.stream'/>
+    <flag name='virtio-crypto'/>
+    <flag name='cryptodev-backend-lkcf'/>
+    <flag name='pvpanic-pci'/>
+    <flag name='virtio-gpu.blob'/>
+    <flag name='rbd-encryption-layering'/>
+    <flag name='rbd-encryption-luks-any'/>
+    <flag name='qcow2-discard-no-unref'/>
+    <flag name='run-with.async-teardown'/>
+    <flag name='virtio-blk-vhost-vdpa'/>
+    <flag name='virtio-blk.iothread-mapping'/>
+    <flag name='smp-clusters'/>
+    <flag name='virtio-mem-pci.dynamic-memslots'/>
+    <flag name='blockjob.backing-mask-protocol'/>
+    <flag name='display-reload'/>
+    <flag name='usb-mtp'/>
+    <flag name='virtio-sound'/>
+    <flag name='netdev.user'/>
+    <flag name='acpi-erst'/>
+    <flag name='intel-iommu.dma-translation'/>
+    <flag name='machine-i8042-opt'/>
+    <flag name='chardev-reconnect-miliseconds'/>
+    <flag name='netdev-stream-reconnect-miliseconds'/>
+    <flag name='query-cpu-model-expansion.deprecated-props'/>
+    <flag name='migrate-incoming.exit-on-error'/>
+    <flag name='blockdev-set-active'/>
+    <flag name='shim'/>
+    <flag name='virtio-scsi.iothread-mapping'/>
+    <flag name='bus-floppy'/>
+    <flag name='nvme'/>
+    <flag name='nvme-ns'/>
+    <flag name='amd-iommu'/>
+    <flag name='amd-iommu.pci-id'/>
+    <flag name='usb-bot'/>
+    <flag name='qom-list-get'/>
+    <flag name='acpi-generic-initiator'/>
+    <flag name='disk-timed-stats'/>
+    <flag name='query-accelerators'/>
+    <flag name='virtio-iommu.aw-bits'/>
+    <flag name='scsi-block.migrate-pr'/>
+    <flag name='iommufd'/>
+    <flag name='uefi-vars'/>
+    <flag name='query-block-flat'/>
+    <flag name='amd-iommu.xtsup'/>
+    <flag name='blockdev-mirror.target-is-zero'/>
+  </qemuCaps>
+  <devices>
+    <device alias='input0'/>
+    <device alias='pci.7'/>
+    <device alias='pci.13'/>
+    <device alias='pci.4'/>
+    <device alias='pci.1'/>
+    <device alias='pci.10'/>
+    <device alias='video0'/>
+    <device alias='serial0'/>
+    <device alias='balloon0'/>
+    <device alias='pci.9'/>
+    <device alias='pci.12'/>
+    <device alias='pci.6'/>
+    <device alias='usb'/>
+    <device alias='pci.3'/>
+    <device alias='pci.8'/>
+    <device alias='pci.14'/>
+    <device alias='pci.5'/>
+    <device alias='pci.11'/>
+    <device alias='pci.2'/>
+    <device alias='channel0'/>
+    <device alias='virtio-serial0'/>
+    <device alias='rng0'/>
+  </devices>
+  <libDir path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test'/>
+  <channelTargetDir path='/run/libvirt/qemu/channel/2-virtio-vga-test'/>
+  <memoryBackingDir path='/var/lib/libvirt/qemu/ram/2-virtio-vga-test'/>
+  <cpu mode='host-passthrough' check='none' migratable='on'/>
+  <chardevStdioLogd/>
+  <rememberOwner/>
+  <nodename index='0'/>
+  <fdset index='0'/>
+  <blockjobs active='no'/>
+  <agentTimeout>-2</agentTimeout>
+  <domain type='kvm' id='2'>
+    <name>virtio-vga-test</name>
+    <uuid>9ccb5ed0-fda4-4760-a38c-83e5f9eba7cf</uuid>
+    <metadata>
+      <libosinfo:libosinfo 
xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0";>
+        <libosinfo:os id="http://fedoraproject.org/fedora/43"/>
+      </libosinfo:libosinfo>
+    </metadata>
+    <memory unit='KiB'>4194304</memory>
+    <currentMemory unit='KiB'>4194304</currentMemory>
+    <vcpu placement='static'>2</vcpu>
+    <resource>
+      <partition>/machine</partition>
+    </resource>
+    <os>
+      <type arch='x86_64' machine='pc-q35-11.0'>hvm</type>
+      <boot dev='hd'/>
+    </os>
+    <features>
+      <acpi/>
+      <apic/>
+      <vmport state='off'/>
+    </features>
+    <cpu mode='host-passthrough' check='none' migratable='on'/>
+    <clock offset='utc'>
+      <timer name='rtc' tickpolicy='catchup'/>
+      <timer name='pit' tickpolicy='delay'/>
+      <timer name='hpet' present='no'/>
+    </clock>
+    <on_poweroff>destroy</on_poweroff>
+    <on_reboot>restart</on_reboot>
+    <on_crash>destroy</on_crash>
+    <pm>
+      <suspend-to-mem enabled='no'/>
+      <suspend-to-disk enabled='no'/>
+    </pm>
+    <devices>
+      <emulator>/usr/bin/qemu-system-x86_64</emulator>
+      <controller type='usb' index='0' model='qemu-xhci' ports='15'>
+        <alias name='usb'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
function='0x0'/>
+      </controller>
+      <controller type='pci' index='0' model='pcie-root'>
+        <alias name='pcie.0'/>
+      </controller>
+      <controller type='pci' index='1' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='1' port='0x10'/>
+        <alias name='pci.1'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='2' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='2' port='0x11'/>
+        <alias name='pci.2'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='3' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='3' port='0x12'/>
+        <alias name='pci.3'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='4' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='4' port='0x13'/>
+        <alias name='pci.4'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='5' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='5' port='0x14'/>
+        <alias name='pci.5'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='6' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='6' port='0x15'/>
+        <alias name='pci.6'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x5'/>
+      </controller>
+      <controller type='pci' index='7' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='7' port='0x16'/>
+        <alias name='pci.7'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x6'/>
+      </controller>
+      <controller type='pci' index='8' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='8' port='0x17'/>
+        <alias name='pci.8'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x7'/>
+      </controller>
+      <controller type='pci' index='9' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='9' port='0x18'/>
+        <alias name='pci.9'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='10' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='10' port='0x19'/>
+        <alias name='pci.10'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='11' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='11' port='0x1a'/>
+        <alias name='pci.11'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='12' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='12' port='0x1b'/>
+        <alias name='pci.12'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='13' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='13' port='0x1c'/>
+        <alias name='pci.13'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='14' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='14' port='0x1d'/>
+        <alias name='pci.14'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x5'/>
+      </controller>
+      <controller type='sata' index='0'>
+        <alias name='ide'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
function='0x2'/>
+      </controller>
+      <controller type='virtio-serial' index='0'>
+        <alias name='virtio-serial0'/>
+        <address type='pci' domain='0x0000' bus='0x02' slot='0x00' 
function='0x0'/>
+      </controller>
+      <serial type='pty'>
+        <source path='/dev/pts/3'/>
+        <target type='isa-serial' port='0'>
+          <model name='isa-serial'/>
+        </target>
+        <alias name='serial0'/>
+      </serial>
+      <console type='pty' tty='/dev/pts/3'>
+        <source path='/dev/pts/3'/>
+        <target type='serial' port='0'/>
+        <alias name='serial0'/>
+      </console>
+      <channel type='unix'>
+        <source mode='bind' 
path='/run/libvirt/qemu/channel/2-virtio-vga-test/org.qemu.guest_agent.0'/>
+        <target type='virtio' name='org.qemu.guest_agent.0' 
state='disconnected'/>
+        <alias name='channel0'/>
+        <address type='virtio-serial' controller='0' bus='0' port='1'/>
+      </channel>
+      <input type='tablet' bus='usb'>
+        <alias name='input0'/>
+        <address type='usb' bus='0' port='1'/>
+      </input>
+      <input type='mouse' bus='ps2'>
+        <alias name='input1'/>
+      </input>
+      <input type='keyboard' bus='ps2'>
+        <alias name='input2'/>
+      </input>
+      <graphics type='vnc' port='5901' autoport='yes' websocketGenerated='no' 
listen='127.0.0.1'>
+        <listen type='address' address='127.0.0.1' fromConfig='1' 
autoGenerated='no'/>
+      </graphics>
+      <audio id='1' type='none'/>
+      <video>
+        <model type='virtio' heads='1' primary='yes'/>
+        <alias name='video0'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x0'/>
+      </video>
+      <watchdog model='itco' action='reset'>
+        <alias name='watchdog0'/>
+      </watchdog>
+      <memballoon model='virtio'>
+        <alias name='balloon0'/>
+        <address type='pci' domain='0x0000' bus='0x03' slot='0x00' 
function='0x0'/>
+      </memballoon>
+      <rng model='virtio'>
+        <backend model='random'>/dev/urandom</backend>
+        <alias name='rng0'/>
+        <address type='pci' domain='0x0000' bus='0x04' slot='0x00' 
function='0x0'/>
+      </rng>
+    </devices>
+    <seclabel type='dynamic' model='selinux' relabel='yes'>
+      <label>unconfined_u:unconfined_r:svirt_t:s0:c369,c928</label>
+      <imagelabel>unconfined_u:object_r:svirt_image_t:s0:c369,c928</imagelabel>
+    </seclabel>
+    <seclabel type='dynamic' model='dac' relabel='yes'>
+      <label>+107:+107</label>
+      <imagelabel>+107:+107</imagelabel>
+    </seclabel>
+  </domain>
+</domstatus>
diff --git a/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-in.xml 
b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-in.xml
new file mode 100644
index 0000000000..c9a7842258
--- /dev/null
+++ b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-in.xml
@@ -0,0 +1,464 @@
+<!--
+WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
+OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
+  virsh edit virtio-vga-test
+or other application using the libvirt API.
+-->
+
+<domstatus state='running' reason='booted' pid='1348839'>
+  <monitor path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test/monitor.sock' 
type='unix'/>
+  <namespaces>
+    <mount/>
+  </namespaces>
+  <vcpus>
+    <vcpu id='0' pid='1348848'/>
+    <vcpu id='1' pid='1348850'/>
+  </vcpus>
+  <qemuCaps>
+    <flag name='kvm'/>
+    <flag name='sdl'/>
+    <flag name='spice'/>
+    <flag name='hda-duplex'/>
+    <flag name='ccid-emulated'/>
+    <flag name='ccid-passthru'/>
+    <flag name='piix3-usb-uhci'/>
+    <flag name='piix4-usb-uhci'/>
+    <flag name='usb-ehci'/>
+    <flag name='ich9-usb-ehci1'/>
+    <flag name='pci-ohci'/>
+    <flag name='usb-redir'/>
+    <flag name='usb-hub'/>
+    <flag name='ich9-ahci'/>
+    <flag name='scsi-disk.channel'/>
+    <flag name='scsi-block'/>
+    <flag name='hda-micro'/>
+    <flag name='nec-usb-xhci'/>
+    <flag name='lsi'/>
+    <flag name='virtio-scsi-pci'/>
+    <flag name='usb-redir.filter'/>
+    <flag name='seccomp-sandbox'/>
+    <flag name='vnc'/>
+    <flag name='qxl'/>
+    <flag name='VGA'/>
+    <flag name='cirrus-vga'/>
+    <flag name='vmware-svga'/>
+    <flag name='usb-serial'/>
+    <flag name='virtio-rng'/>
+    <flag name='rng-random'/>
+    <flag name='rng-egd'/>
+    <flag name='megasas'/>
+    <flag name='tpm-passthrough'/>
+    <flag name='tpm-tis'/>
+    <flag name='pci-bridge'/>
+    <flag name='vfio-pci'/>
+    <flag name='dmi-to-pci-bridge'/>
+    <flag name='usb-storage'/>
+    <flag name='virtio-mmio'/>
+    <flag name='ich9-intel-hda'/>
+    <flag name='kvm-pit-lost-tick-policy'/>
+    <flag name='pvpanic'/>
+    <flag name='usb-kbd'/>
+    <flag name='usb-audio'/>
+    <flag name='rtc-reset-reinjection'/>
+    <flag name='VGA.vgamem_mb'/>
+    <flag name='vmware-svga.vgamem_mb'/>
+    <flag name='qxl.vgamem_mb'/>
+    <flag name='pc-dimm'/>
+    <flag name='machine-vmport-opt'/>
+    <flag name='pci-serial'/>
+    <flag name='ioh3420'/>
+    <flag name='x3130-upstream'/>
+    <flag name='xio3130-downstream'/>
+    <flag name='rtl8139'/>
+    <flag name='e1000'/>
+    <flag name='virtio-net'/>
+    <flag name='virtio-gpu'/>
+    <flag name='virtio-keyboard'/>
+    <flag name='virtio-mouse'/>
+    <flag name='virtio-tablet'/>
+    <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
+    <flag name='mptsas1068'/>
+    <flag name='spice-gl'/>
+    <flag name='qxl.vram64_size_mb'/>
+    <flag name='pxb'/>
+    <flag name='pxb-pcie'/>
+    <flag name='intel-iommu'/>
+    <flag name='ivshmem-plain'/>
+    <flag name='ivshmem-doorbell'/>
+    <flag name='vhost-scsi'/>
+    <flag name='query-cpu-model-expansion'/>
+    <flag name='spice-rendernode'/>
+    <flag name='nvdimm'/>
+    <flag name='pcie-root-port'/>
+    <flag name='query-cpu-definitions'/>
+    <flag name='qemu-xhci'/>
+    <flag name='intel-iommu.intremap'/>
+    <flag name='intel-iommu.caching-mode'/>
+    <flag name='intel-iommu.eim'/>
+    <flag name='intel-iommu.device-iotlb'/>
+    <flag name='vmcoreinfo'/>
+    <flag name='isa-serial'/>
+    <flag name='pcie-pci-bridge'/>
+    <flag name='nbd-tls'/>
+    <flag name='tpm-crb'/>
+    <flag name='pr-manager-helper'/>
+    <flag name='screendump_device'/>
+    <flag name='hda-output'/>
+    <flag name='vmgenid'/>
+    <flag name='vhost-vsock'/>
+    <flag name='tpm-emulator'/>
+    <flag name='mch'/>
+    <flag name='mch.extended-tseg-mbytes'/>
+    <flag name='egl-headless'/>
+    <flag name='memory-backend-memfd'/>
+    <flag name='memory-backend-memfd.hugetlb'/>
+    <flag name='egl-headless.rendernode'/>
+    <flag name='nvdimm.unarmed'/>
+    <flag name='virtio-pci-non-transitional'/>
+    <flag name='x86-max-cpu'/>
+    <flag name='cpu-unavailable-features'/>
+    <flag name='canonical-cpu-features'/>
+    <flag name='bochs-display'/>
+    <flag name='migration-file-drop-cache'/>
+    <flag name='dbus-vmstate'/>
+    <flag name='vhost-user-gpu'/>
+    <flag name='vhost-user-vga'/>
+    <flag name='query-cpu-model-baseline'/>
+    <flag name='query-cpu-model-comparison'/>
+    <flag name='ramfb'/>
+    <flag name='drive-nvme'/>
+    <flag name='smp-dies'/>
+    <flag name='i8042'/>
+    <flag name='rng-builtin'/>
+    <flag name='vhost-user-fs'/>
+    <flag name='fsdev.multidevs'/>
+    <flag name='pcie-root-port.hotplug'/>
+    <flag name='aio.io_uring'/>
+    <flag name='tcg'/>
+    <flag name='pvscsi'/>
+    <flag name='cpu.migratable'/>
+    <flag name='intel-iommu.aw-bits'/>
+    <flag name='numa.hmat'/>
+    <flag name='usb-host.hostdevice'/>
+    <flag name='virtio-balloon.free-page-reporting'/>
+    <flag name='netdev.vhost-vdpa'/>
+    <flag name='dc390'/>
+    <flag name='am53c974'/>
+    <flag name='virtio-pmem-pci'/>
+    <flag name='vhost-user-fs.bootindex'/>
+    <flag name='vhost-user-blk'/>
+    <flag name='cpu-max'/>
+    <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
+    <flag name='vnc-power-control'/>
+    <flag name='rotation-rate'/>
+    <flag name='acpi-index'/>
+    <flag name='input-linux'/>
+    <flag name='virtio-gpu-gl-pci'/>
+    <flag name='confidential-guest-support'/>
+    <flag name='set-action'/>
+    <flag name='virtio-blk.queue-size'/>
+    <flag name='virtio-mem-pci'/>
+    <flag name='memory-backend-file.reserve'/>
+    <flag name='piix4.acpi-root-pci-hotplug'/>
+    <flag name='netdev.json'/>
+    <flag name='query-dirty-rate'/>
+    <flag name='rbd-encryption'/>
+    <flag name='sev-guest-kernel-hashes'/>
+    <flag name='sev-inject-launch-secret'/>
+    <flag name='device.json+hotplug'/>
+    <flag name='virtio-mem-pci.prealloc'/>
+    <flag name='calc-dirty-rate'/>
+    <flag name='dirtyrate-param.mode'/>
+    <flag name='blockdev.nbd.tls-hostname'/>
+    <flag name='memory-backend-file.prealloc-threads'/>
+    <flag name='virtio-iommu-pci'/>
+    <flag name='virtio-iommu.boot-bypass'/>
+    <flag name='virtio-net.rss'/>
+    <flag name='chardev.qemu-vdagent'/>
+    <flag name='display-dbus'/>
+    <flag name='iothread.thread-pool-max'/>
+    <flag name='usb-host.guest-resets-all'/>
+    <flag name='migration.blocked-reasons'/>
+    <flag name='query-stats'/>
+    <flag name='query-stats-schemas'/>
+    <flag name='thread-context'/>
+    <flag name='screenshot-format-png'/>
+    <flag name='machine-hpet'/>
+    <flag name='netdev.stream'/>
+    <flag name='virtio-crypto'/>
+    <flag name='cryptodev-backend-lkcf'/>
+    <flag name='pvpanic-pci'/>
+    <flag name='virtio-gpu.blob'/>
+    <flag name='rbd-encryption-layering'/>
+    <flag name='rbd-encryption-luks-any'/>
+    <flag name='qcow2-discard-no-unref'/>
+    <flag name='run-with.async-teardown'/>
+    <flag name='virtio-blk-vhost-vdpa'/>
+    <flag name='virtio-blk.iothread-mapping'/>
+    <flag name='smp-clusters'/>
+    <flag name='virtio-mem-pci.dynamic-memslots'/>
+    <flag name='blockjob.backing-mask-protocol'/>
+    <flag name='display-reload'/>
+    <flag name='usb-mtp'/>
+    <flag name='virtio-sound'/>
+    <flag name='netdev.user'/>
+    <flag name='acpi-erst'/>
+    <flag name='intel-iommu.dma-translation'/>
+    <flag name='machine-i8042-opt'/>
+    <flag name='chardev-reconnect-miliseconds'/>
+    <flag name='netdev-stream-reconnect-miliseconds'/>
+    <flag name='query-cpu-model-expansion.deprecated-props'/>
+    <flag name='migrate-incoming.exit-on-error'/>
+    <flag name='blockdev-set-active'/>
+    <flag name='shim'/>
+    <flag name='virtio-scsi.iothread-mapping'/>
+    <flag name='bus-floppy'/>
+    <flag name='nvme'/>
+    <flag name='nvme-ns'/>
+    <flag name='amd-iommu'/>
+    <flag name='amd-iommu.pci-id'/>
+    <flag name='usb-bot'/>
+    <flag name='qom-list-get'/>
+    <flag name='acpi-generic-initiator'/>
+    <flag name='disk-timed-stats'/>
+    <flag name='query-accelerators'/>
+    <flag name='virtio-iommu.aw-bits'/>
+    <flag name='scsi-block.migrate-pr'/>
+    <flag name='iommufd'/>
+    <flag name='uefi-vars'/>
+    <flag name='query-block-flat'/>
+    <flag name='amd-iommu.xtsup'/>
+    <flag name='blockdev-mirror.target-is-zero'/>
+  </qemuCaps>
+  <devices>
+    <device alias='input0'/>
+    <device alias='pci.7'/>
+    <device alias='pci.13'/>
+    <device alias='pci.4'/>
+    <device alias='pci.1'/>
+    <device alias='pci.10'/>
+    <device alias='video0'/>
+    <device alias='serial0'/>
+    <device alias='balloon0'/>
+    <device alias='pci.9'/>
+    <device alias='pci.12'/>
+    <device alias='pci.6'/>
+    <device alias='usb'/>
+    <device alias='pci.3'/>
+    <device alias='pci.8'/>
+    <device alias='pci.14'/>
+    <device alias='pci.5'/>
+    <device alias='pci.11'/>
+    <device alias='pci.2'/>
+    <device alias='channel0'/>
+    <device alias='virtio-serial0'/>
+    <device alias='rng0'/>
+  </devices>
+  <libDir path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test'/>
+  <channelTargetDir path='/run/libvirt/qemu/channel/2-virtio-vga-test'/>
+  <memoryBackingDir path='/var/lib/libvirt/qemu/ram/2-virtio-vga-test'/>
+  <cpu mode='host-passthrough' check='none' migratable='on'/>
+  <chardevStdioLogd/>
+  <rememberOwner/>
+  <nodename index='0'/>
+  <fdset index='0'/>
+  <blockjobs active='no'/>
+  <agentTimeout>-2</agentTimeout>
+  <domain type='kvm' id='2'>
+    <name>virtio-vga-test</name>
+    <uuid>9ccb5ed0-fda4-4760-a38c-83e5f9eba7cf</uuid>
+    <metadata>
+      <libosinfo:libosinfo 
xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0";>
+        <libosinfo:os id="http://fedoraproject.org/fedora/43"/>
+      </libosinfo:libosinfo>
+    </metadata>
+    <memory unit='KiB'>4194304</memory>
+    <currentMemory unit='KiB'>4194304</currentMemory>
+    <vcpu placement='static'>2</vcpu>
+    <resource>
+      <partition>/machine</partition>
+    </resource>
+    <os>
+      <type arch='x86_64' machine='pc-q35-11.0'>hvm</type>
+      <boot dev='hd'/>
+    </os>
+    <features>
+      <acpi/>
+      <apic/>
+      <vmport state='off'/>
+    </features>
+    <cpu mode='host-passthrough' check='none' migratable='on'/>
+    <clock offset='utc'>
+      <timer name='rtc' tickpolicy='catchup'/>
+      <timer name='pit' tickpolicy='delay'/>
+      <timer name='hpet' present='no'/>
+    </clock>
+    <on_poweroff>destroy</on_poweroff>
+    <on_reboot>restart</on_reboot>
+    <on_crash>destroy</on_crash>
+    <pm>
+      <suspend-to-mem enabled='no'/>
+      <suspend-to-disk enabled='no'/>
+    </pm>
+    <devices>
+      <emulator>/usr/bin/qemu-system-x86_64</emulator>
+      <controller type='usb' index='0' model='qemu-xhci' ports='15'>
+        <alias name='usb'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
function='0x0'/>
+      </controller>
+      <controller type='pci' index='0' model='pcie-root'>
+        <alias name='pcie.0'/>
+      </controller>
+      <controller type='pci' index='1' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='1' port='0x10'/>
+        <alias name='pci.1'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='2' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='2' port='0x11'/>
+        <alias name='pci.2'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='3' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='3' port='0x12'/>
+        <alias name='pci.3'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='4' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='4' port='0x13'/>
+        <alias name='pci.4'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='5' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='5' port='0x14'/>
+        <alias name='pci.5'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='6' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='6' port='0x15'/>
+        <alias name='pci.6'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x5'/>
+      </controller>
+      <controller type='pci' index='7' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='7' port='0x16'/>
+        <alias name='pci.7'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x6'/>
+      </controller>
+      <controller type='pci' index='8' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='8' port='0x17'/>
+        <alias name='pci.8'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x7'/>
+      </controller>
+      <controller type='pci' index='9' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='9' port='0x18'/>
+        <alias name='pci.9'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='10' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='10' port='0x19'/>
+        <alias name='pci.10'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='11' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='11' port='0x1a'/>
+        <alias name='pci.11'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='12' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='12' port='0x1b'/>
+        <alias name='pci.12'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='13' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='13' port='0x1c'/>
+        <alias name='pci.13'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='14' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='14' port='0x1d'/>
+        <alias name='pci.14'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x5'/>
+      </controller>
+      <controller type='sata' index='0'>
+        <alias name='ide'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
function='0x2'/>
+      </controller>
+      <controller type='virtio-serial' index='0'>
+        <alias name='virtio-serial0'/>
+        <address type='pci' domain='0x0000' bus='0x02' slot='0x00' 
function='0x0'/>
+      </controller>
+      <serial type='pty'>
+        <source path='/dev/pts/3'/>
+        <target type='isa-serial' port='0'>
+          <model name='isa-serial'/>
+        </target>
+        <alias name='serial0'/>
+      </serial>
+      <console type='pty' tty='/dev/pts/3'>
+        <source path='/dev/pts/3'/>
+        <target type='serial' port='0'/>
+        <alias name='serial0'/>
+      </console>
+      <channel type='unix'>
+        <source mode='bind' 
path='/run/libvirt/qemu/channel/2-virtio-vga-test/org.qemu.guest_agent.0'/>
+        <target type='virtio' name='org.qemu.guest_agent.0' 
state='disconnected'/>
+        <alias name='channel0'/>
+        <address type='virtio-serial' controller='0' bus='0' port='1'/>
+      </channel>
+      <input type='tablet' bus='usb'>
+        <alias name='input0'/>
+        <address type='usb' bus='0' port='1'/>
+      </input>
+      <input type='mouse' bus='ps2'>
+        <alias name='input1'/>
+      </input>
+      <input type='keyboard' bus='ps2'>
+        <alias name='input2'/>
+      </input>
+      <graphics type='vnc' port='5901' autoport='yes' websocketGenerated='no' 
listen='127.0.0.1'>
+        <listen type='address' address='127.0.0.1' fromConfig='1' 
autoGenerated='no'/>
+      </graphics>
+      <audio id='1' type='none'/>
+      <video>
+        <model type='virtio' heads='1' primary='yes'/>
+        <alias name='video0'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x0'/>
+      </video>
+      <watchdog model='itco' action='reset'>
+        <alias name='watchdog0'/>
+      </watchdog>
+      <memballoon model='virtio'>
+        <alias name='balloon0'/>
+        <address type='pci' domain='0x0000' bus='0x03' slot='0x00' 
function='0x0'/>
+      </memballoon>
+      <rng model='virtio'>
+        <backend model='random'>/dev/urandom</backend>
+        <alias name='rng0'/>
+        <address type='pci' domain='0x0000' bus='0x04' slot='0x00' 
function='0x0'/>
+      </rng>
+    </devices>
+    <seclabel type='dynamic' model='selinux' relabel='yes'>
+      <label>unconfined_u:unconfined_r:svirt_t:s0:c369,c928</label>
+      <imagelabel>unconfined_u:object_r:svirt_image_t:s0:c369,c928</imagelabel>
+    </seclabel>
+    <seclabel type='dynamic' model='dac' relabel='yes'>
+      <label>+107:+107</label>
+      <imagelabel>+107:+107</imagelabel>
+    </seclabel>
+  </domain>
+</domstatus>
diff --git a/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-out.xml 
b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-out.xml
new file mode 100644
index 0000000000..a2b11ede2a
--- /dev/null
+++ b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-missing-out.xml
@@ -0,0 +1,457 @@
+<domstatus state='running' reason='booted' pid='1348839'>
+  <monitor path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test/monitor.sock' 
type='unix'/>
+  <namespaces>
+    <mount/>
+  </namespaces>
+  <vcpus>
+    <vcpu id='0' pid='1348848'/>
+    <vcpu id='1' pid='1348850'/>
+  </vcpus>
+  <qemuCaps>
+    <flag name='kvm'/>
+    <flag name='sdl'/>
+    <flag name='spice'/>
+    <flag name='hda-duplex'/>
+    <flag name='ccid-emulated'/>
+    <flag name='ccid-passthru'/>
+    <flag name='piix3-usb-uhci'/>
+    <flag name='piix4-usb-uhci'/>
+    <flag name='usb-ehci'/>
+    <flag name='ich9-usb-ehci1'/>
+    <flag name='pci-ohci'/>
+    <flag name='usb-redir'/>
+    <flag name='usb-hub'/>
+    <flag name='ich9-ahci'/>
+    <flag name='scsi-disk.channel'/>
+    <flag name='scsi-block'/>
+    <flag name='hda-micro'/>
+    <flag name='nec-usb-xhci'/>
+    <flag name='lsi'/>
+    <flag name='virtio-scsi-pci'/>
+    <flag name='usb-redir.filter'/>
+    <flag name='seccomp-sandbox'/>
+    <flag name='vnc'/>
+    <flag name='qxl'/>
+    <flag name='VGA'/>
+    <flag name='cirrus-vga'/>
+    <flag name='vmware-svga'/>
+    <flag name='usb-serial'/>
+    <flag name='virtio-rng'/>
+    <flag name='rng-random'/>
+    <flag name='rng-egd'/>
+    <flag name='megasas'/>
+    <flag name='tpm-passthrough'/>
+    <flag name='tpm-tis'/>
+    <flag name='pci-bridge'/>
+    <flag name='vfio-pci'/>
+    <flag name='dmi-to-pci-bridge'/>
+    <flag name='usb-storage'/>
+    <flag name='virtio-mmio'/>
+    <flag name='ich9-intel-hda'/>
+    <flag name='kvm-pit-lost-tick-policy'/>
+    <flag name='pvpanic'/>
+    <flag name='usb-kbd'/>
+    <flag name='usb-audio'/>
+    <flag name='rtc-reset-reinjection'/>
+    <flag name='VGA.vgamem_mb'/>
+    <flag name='vmware-svga.vgamem_mb'/>
+    <flag name='qxl.vgamem_mb'/>
+    <flag name='pc-dimm'/>
+    <flag name='machine-vmport-opt'/>
+    <flag name='pci-serial'/>
+    <flag name='ioh3420'/>
+    <flag name='x3130-upstream'/>
+    <flag name='xio3130-downstream'/>
+    <flag name='rtl8139'/>
+    <flag name='e1000'/>
+    <flag name='virtio-net'/>
+    <flag name='virtio-gpu'/>
+    <flag name='virtio-keyboard'/>
+    <flag name='virtio-mouse'/>
+    <flag name='virtio-tablet'/>
+    <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
+    <flag name='mptsas1068'/>
+    <flag name='spice-gl'/>
+    <flag name='qxl.vram64_size_mb'/>
+    <flag name='pxb'/>
+    <flag name='pxb-pcie'/>
+    <flag name='intel-iommu'/>
+    <flag name='ivshmem-plain'/>
+    <flag name='ivshmem-doorbell'/>
+    <flag name='vhost-scsi'/>
+    <flag name='query-cpu-model-expansion'/>
+    <flag name='spice-rendernode'/>
+    <flag name='nvdimm'/>
+    <flag name='pcie-root-port'/>
+    <flag name='query-cpu-definitions'/>
+    <flag name='qemu-xhci'/>
+    <flag name='intel-iommu.intremap'/>
+    <flag name='intel-iommu.caching-mode'/>
+    <flag name='intel-iommu.eim'/>
+    <flag name='intel-iommu.device-iotlb'/>
+    <flag name='vmcoreinfo'/>
+    <flag name='isa-serial'/>
+    <flag name='pcie-pci-bridge'/>
+    <flag name='nbd-tls'/>
+    <flag name='tpm-crb'/>
+    <flag name='pr-manager-helper'/>
+    <flag name='screendump_device'/>
+    <flag name='hda-output'/>
+    <flag name='vmgenid'/>
+    <flag name='vhost-vsock'/>
+    <flag name='tpm-emulator'/>
+    <flag name='mch'/>
+    <flag name='mch.extended-tseg-mbytes'/>
+    <flag name='egl-headless'/>
+    <flag name='memory-backend-memfd'/>
+    <flag name='memory-backend-memfd.hugetlb'/>
+    <flag name='egl-headless.rendernode'/>
+    <flag name='nvdimm.unarmed'/>
+    <flag name='virtio-pci-non-transitional'/>
+    <flag name='x86-max-cpu'/>
+    <flag name='cpu-unavailable-features'/>
+    <flag name='canonical-cpu-features'/>
+    <flag name='bochs-display'/>
+    <flag name='migration-file-drop-cache'/>
+    <flag name='dbus-vmstate'/>
+    <flag name='vhost-user-gpu'/>
+    <flag name='vhost-user-vga'/>
+    <flag name='query-cpu-model-baseline'/>
+    <flag name='query-cpu-model-comparison'/>
+    <flag name='ramfb'/>
+    <flag name='drive-nvme'/>
+    <flag name='smp-dies'/>
+    <flag name='i8042'/>
+    <flag name='rng-builtin'/>
+    <flag name='vhost-user-fs'/>
+    <flag name='fsdev.multidevs'/>
+    <flag name='pcie-root-port.hotplug'/>
+    <flag name='aio.io_uring'/>
+    <flag name='tcg'/>
+    <flag name='pvscsi'/>
+    <flag name='cpu.migratable'/>
+    <flag name='intel-iommu.aw-bits'/>
+    <flag name='numa.hmat'/>
+    <flag name='usb-host.hostdevice'/>
+    <flag name='virtio-balloon.free-page-reporting'/>
+    <flag name='netdev.vhost-vdpa'/>
+    <flag name='dc390'/>
+    <flag name='am53c974'/>
+    <flag name='virtio-pmem-pci'/>
+    <flag name='vhost-user-fs.bootindex'/>
+    <flag name='vhost-user-blk'/>
+    <flag name='cpu-max'/>
+    <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
+    <flag name='vnc-power-control'/>
+    <flag name='rotation-rate'/>
+    <flag name='acpi-index'/>
+    <flag name='input-linux'/>
+    <flag name='virtio-gpu-gl-pci'/>
+    <flag name='confidential-guest-support'/>
+    <flag name='set-action'/>
+    <flag name='virtio-blk.queue-size'/>
+    <flag name='virtio-mem-pci'/>
+    <flag name='memory-backend-file.reserve'/>
+    <flag name='piix4.acpi-root-pci-hotplug'/>
+    <flag name='netdev.json'/>
+    <flag name='query-dirty-rate'/>
+    <flag name='rbd-encryption'/>
+    <flag name='sev-guest-kernel-hashes'/>
+    <flag name='sev-inject-launch-secret'/>
+    <flag name='device.json+hotplug'/>
+    <flag name='virtio-mem-pci.prealloc'/>
+    <flag name='calc-dirty-rate'/>
+    <flag name='dirtyrate-param.mode'/>
+    <flag name='blockdev.nbd.tls-hostname'/>
+    <flag name='memory-backend-file.prealloc-threads'/>
+    <flag name='virtio-iommu-pci'/>
+    <flag name='virtio-iommu.boot-bypass'/>
+    <flag name='virtio-net.rss'/>
+    <flag name='chardev.qemu-vdagent'/>
+    <flag name='display-dbus'/>
+    <flag name='iothread.thread-pool-max'/>
+    <flag name='usb-host.guest-resets-all'/>
+    <flag name='migration.blocked-reasons'/>
+    <flag name='query-stats'/>
+    <flag name='query-stats-schemas'/>
+    <flag name='thread-context'/>
+    <flag name='screenshot-format-png'/>
+    <flag name='machine-hpet'/>
+    <flag name='netdev.stream'/>
+    <flag name='virtio-crypto'/>
+    <flag name='cryptodev-backend-lkcf'/>
+    <flag name='pvpanic-pci'/>
+    <flag name='virtio-gpu.blob'/>
+    <flag name='rbd-encryption-layering'/>
+    <flag name='rbd-encryption-luks-any'/>
+    <flag name='qcow2-discard-no-unref'/>
+    <flag name='run-with.async-teardown'/>
+    <flag name='virtio-blk-vhost-vdpa'/>
+    <flag name='virtio-blk.iothread-mapping'/>
+    <flag name='smp-clusters'/>
+    <flag name='virtio-mem-pci.dynamic-memslots'/>
+    <flag name='blockjob.backing-mask-protocol'/>
+    <flag name='display-reload'/>
+    <flag name='usb-mtp'/>
+    <flag name='virtio-sound'/>
+    <flag name='netdev.user'/>
+    <flag name='acpi-erst'/>
+    <flag name='intel-iommu.dma-translation'/>
+    <flag name='machine-i8042-opt'/>
+    <flag name='chardev-reconnect-miliseconds'/>
+    <flag name='netdev-stream-reconnect-miliseconds'/>
+    <flag name='query-cpu-model-expansion.deprecated-props'/>
+    <flag name='migrate-incoming.exit-on-error'/>
+    <flag name='blockdev-set-active'/>
+    <flag name='shim'/>
+    <flag name='virtio-scsi.iothread-mapping'/>
+    <flag name='bus-floppy'/>
+    <flag name='nvme'/>
+    <flag name='nvme-ns'/>
+    <flag name='amd-iommu'/>
+    <flag name='amd-iommu.pci-id'/>
+    <flag name='usb-bot'/>
+    <flag name='qom-list-get'/>
+    <flag name='acpi-generic-initiator'/>
+    <flag name='disk-timed-stats'/>
+    <flag name='query-accelerators'/>
+    <flag name='virtio-iommu.aw-bits'/>
+    <flag name='scsi-block.migrate-pr'/>
+    <flag name='iommufd'/>
+    <flag name='uefi-vars'/>
+    <flag name='query-block-flat'/>
+    <flag name='amd-iommu.xtsup'/>
+    <flag name='blockdev-mirror.target-is-zero'/>
+  </qemuCaps>
+  <devices>
+    <device alias='input0'/>
+    <device alias='pci.7'/>
+    <device alias='pci.13'/>
+    <device alias='pci.4'/>
+    <device alias='pci.1'/>
+    <device alias='pci.10'/>
+    <device alias='video0'/>
+    <device alias='serial0'/>
+    <device alias='balloon0'/>
+    <device alias='pci.9'/>
+    <device alias='pci.12'/>
+    <device alias='pci.6'/>
+    <device alias='usb'/>
+    <device alias='pci.3'/>
+    <device alias='pci.8'/>
+    <device alias='pci.14'/>
+    <device alias='pci.5'/>
+    <device alias='pci.11'/>
+    <device alias='pci.2'/>
+    <device alias='channel0'/>
+    <device alias='virtio-serial0'/>
+    <device alias='rng0'/>
+  </devices>
+  <libDir path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test'/>
+  <channelTargetDir path='/run/libvirt/qemu/channel/2-virtio-vga-test'/>
+  <memoryBackingDir path='/var/lib/libvirt/qemu/ram/2-virtio-vga-test'/>
+  <cpu mode='host-passthrough' check='none' migratable='on'/>
+  <chardevStdioLogd/>
+  <rememberOwner/>
+  <nodename index='0'/>
+  <fdset index='0'/>
+  <blockjobs active='no'/>
+  <agentTimeout>-2</agentTimeout>
+  <domain type='kvm' id='2'>
+    <name>virtio-vga-test</name>
+    <uuid>9ccb5ed0-fda4-4760-a38c-83e5f9eba7cf</uuid>
+    <metadata>
+      <libosinfo:libosinfo 
xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0";>
+        <libosinfo:os id="http://fedoraproject.org/fedora/43"/>
+      </libosinfo:libosinfo>
+    </metadata>
+    <memory unit='KiB'>4194304</memory>
+    <currentMemory unit='KiB'>4194304</currentMemory>
+    <vcpu placement='static'>2</vcpu>
+    <resource>
+      <partition>/machine</partition>
+    </resource>
+    <os>
+      <type arch='x86_64' machine='pc-q35-11.0'>hvm</type>
+      <boot dev='hd'/>
+    </os>
+    <features>
+      <acpi/>
+      <apic/>
+      <vmport state='off'/>
+    </features>
+    <cpu mode='host-passthrough' check='none' migratable='on'/>
+    <clock offset='utc'>
+      <timer name='rtc' tickpolicy='catchup'/>
+      <timer name='pit' tickpolicy='delay'/>
+      <timer name='hpet' present='no'/>
+    </clock>
+    <on_poweroff>destroy</on_poweroff>
+    <on_reboot>restart</on_reboot>
+    <on_crash>destroy</on_crash>
+    <pm>
+      <suspend-to-mem enabled='no'/>
+      <suspend-to-disk enabled='no'/>
+    </pm>
+    <devices>
+      <emulator>/usr/bin/qemu-system-x86_64</emulator>
+      <controller type='usb' index='0' model='qemu-xhci' ports='15'>
+        <alias name='usb'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
function='0x0'/>
+      </controller>
+      <controller type='pci' index='0' model='pcie-root'>
+        <alias name='pcie.0'/>
+      </controller>
+      <controller type='pci' index='1' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='1' port='0x10'/>
+        <alias name='pci.1'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='2' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='2' port='0x11'/>
+        <alias name='pci.2'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='3' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='3' port='0x12'/>
+        <alias name='pci.3'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='4' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='4' port='0x13'/>
+        <alias name='pci.4'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='5' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='5' port='0x14'/>
+        <alias name='pci.5'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='6' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='6' port='0x15'/>
+        <alias name='pci.6'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x5'/>
+      </controller>
+      <controller type='pci' index='7' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='7' port='0x16'/>
+        <alias name='pci.7'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x6'/>
+      </controller>
+      <controller type='pci' index='8' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='8' port='0x17'/>
+        <alias name='pci.8'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x7'/>
+      </controller>
+      <controller type='pci' index='9' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='9' port='0x18'/>
+        <alias name='pci.9'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='10' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='10' port='0x19'/>
+        <alias name='pci.10'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='11' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='11' port='0x1a'/>
+        <alias name='pci.11'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='12' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='12' port='0x1b'/>
+        <alias name='pci.12'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='13' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='13' port='0x1c'/>
+        <alias name='pci.13'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='14' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='14' port='0x1d'/>
+        <alias name='pci.14'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x5'/>
+      </controller>
+      <controller type='sata' index='0'>
+        <alias name='ide'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
function='0x2'/>
+      </controller>
+      <controller type='virtio-serial' index='0'>
+        <alias name='virtio-serial0'/>
+        <address type='pci' domain='0x0000' bus='0x02' slot='0x00' 
function='0x0'/>
+      </controller>
+      <serial type='pty'>
+        <source path='/dev/pts/3'/>
+        <target type='isa-serial' port='0'>
+          <model name='isa-serial'/>
+        </target>
+        <alias name='serial0'/>
+      </serial>
+      <console type='pty' tty='/dev/pts/3'>
+        <source path='/dev/pts/3'/>
+        <target type='serial' port='0'/>
+        <alias name='serial0'/>
+      </console>
+      <channel type='unix'>
+        <source mode='bind' 
path='/run/libvirt/qemu/channel/2-virtio-vga-test/org.qemu.guest_agent.0'/>
+        <target type='virtio' name='org.qemu.guest_agent.0' 
state='disconnected'/>
+        <alias name='channel0'/>
+        <address type='virtio-serial' controller='0' bus='0' port='1'/>
+      </channel>
+      <input type='tablet' bus='usb'>
+        <alias name='input0'/>
+        <address type='usb' bus='0' port='1'/>
+      </input>
+      <input type='mouse' bus='ps2'>
+        <alias name='input1'/>
+      </input>
+      <input type='keyboard' bus='ps2'>
+        <alias name='input2'/>
+      </input>
+      <graphics type='vnc' port='5901' autoport='yes' websocketGenerated='no' 
listen='127.0.0.1'>
+        <listen type='address' address='127.0.0.1' fromConfig='1' 
autoGenerated='no'/>
+      </graphics>
+      <audio id='1' type='none'/>
+      <video>
+        <model type='virtio' heads='1' primary='yes'/>
+        <alias name='video0'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x0'/>
+      </video>
+      <watchdog model='itco' action='reset'>
+        <alias name='watchdog0'/>
+      </watchdog>
+      <memballoon model='virtio'>
+        <alias name='balloon0'/>
+        <address type='pci' domain='0x0000' bus='0x03' slot='0x00' 
function='0x0'/>
+      </memballoon>
+      <rng model='virtio'>
+        <backend model='random'>/dev/urandom</backend>
+        <alias name='rng0'/>
+        <address type='pci' domain='0x0000' bus='0x04' slot='0x00' 
function='0x0'/>
+      </rng>
+    </devices>
+    <seclabel type='dynamic' model='selinux' relabel='yes'>
+      <label>unconfined_u:unconfined_r:svirt_t:s0:c369,c928</label>
+      <imagelabel>unconfined_u:object_r:svirt_image_t:s0:c369,c928</imagelabel>
+    </seclabel>
+    <seclabel type='dynamic' model='dac' relabel='yes'>
+      <label>+107:+107</label>
+      <imagelabel>+107:+107</imagelabel>
+    </seclabel>
+  </domain>
+</domstatus>
diff --git a/tests/qemustatusxml2xmldata/virtio-vga-upgrade-out.xml 
b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-out.xml
new file mode 100644
index 0000000000..7f59c46a5c
--- /dev/null
+++ b/tests/qemustatusxml2xmldata/virtio-vga-upgrade-out.xml
@@ -0,0 +1,459 @@
+<domstatus state='running' reason='booted' pid='1348839'>
+  <monitor path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test/monitor.sock' 
type='unix'/>
+  <namespaces>
+    <mount/>
+  </namespaces>
+  <vcpus>
+    <vcpu id='0' pid='1348848'/>
+    <vcpu id='1' pid='1348850'/>
+  </vcpus>
+  <qemuCaps>
+    <flag name='kvm'/>
+    <flag name='sdl'/>
+    <flag name='spice'/>
+    <flag name='hda-duplex'/>
+    <flag name='ccid-emulated'/>
+    <flag name='ccid-passthru'/>
+    <flag name='piix3-usb-uhci'/>
+    <flag name='piix4-usb-uhci'/>
+    <flag name='usb-ehci'/>
+    <flag name='ich9-usb-ehci1'/>
+    <flag name='pci-ohci'/>
+    <flag name='usb-redir'/>
+    <flag name='usb-hub'/>
+    <flag name='ich9-ahci'/>
+    <flag name='scsi-disk.channel'/>
+    <flag name='scsi-block'/>
+    <flag name='hda-micro'/>
+    <flag name='nec-usb-xhci'/>
+    <flag name='lsi'/>
+    <flag name='virtio-scsi-pci'/>
+    <flag name='usb-redir.filter'/>
+    <flag name='seccomp-sandbox'/>
+    <flag name='vnc'/>
+    <flag name='qxl'/>
+    <flag name='VGA'/>
+    <flag name='cirrus-vga'/>
+    <flag name='vmware-svga'/>
+    <flag name='usb-serial'/>
+    <flag name='virtio-rng'/>
+    <flag name='rng-random'/>
+    <flag name='rng-egd'/>
+    <flag name='megasas'/>
+    <flag name='tpm-passthrough'/>
+    <flag name='tpm-tis'/>
+    <flag name='pci-bridge'/>
+    <flag name='vfio-pci'/>
+    <flag name='dmi-to-pci-bridge'/>
+    <flag name='usb-storage'/>
+    <flag name='virtio-mmio'/>
+    <flag name='ich9-intel-hda'/>
+    <flag name='kvm-pit-lost-tick-policy'/>
+    <flag name='pvpanic'/>
+    <flag name='usb-kbd'/>
+    <flag name='usb-audio'/>
+    <flag name='rtc-reset-reinjection'/>
+    <flag name='VGA.vgamem_mb'/>
+    <flag name='vmware-svga.vgamem_mb'/>
+    <flag name='qxl.vgamem_mb'/>
+    <flag name='pc-dimm'/>
+    <flag name='machine-vmport-opt'/>
+    <flag name='pci-serial'/>
+    <flag name='ioh3420'/>
+    <flag name='x3130-upstream'/>
+    <flag name='xio3130-downstream'/>
+    <flag name='rtl8139'/>
+    <flag name='e1000'/>
+    <flag name='virtio-net'/>
+    <flag name='virtio-gpu'/>
+    <flag name='virtio-keyboard'/>
+    <flag name='virtio-mouse'/>
+    <flag name='virtio-tablet'/>
+    <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
+    <flag name='mptsas1068'/>
+    <flag name='spice-gl'/>
+    <flag name='qxl.vram64_size_mb'/>
+    <flag name='pxb'/>
+    <flag name='pxb-pcie'/>
+    <flag name='intel-iommu'/>
+    <flag name='virtio-vga'/>
+    <flag name='ivshmem-plain'/>
+    <flag name='ivshmem-doorbell'/>
+    <flag name='vhost-scsi'/>
+    <flag name='query-cpu-model-expansion'/>
+    <flag name='spice-rendernode'/>
+    <flag name='nvdimm'/>
+    <flag name='pcie-root-port'/>
+    <flag name='query-cpu-definitions'/>
+    <flag name='qemu-xhci'/>
+    <flag name='intel-iommu.intremap'/>
+    <flag name='intel-iommu.caching-mode'/>
+    <flag name='intel-iommu.eim'/>
+    <flag name='intel-iommu.device-iotlb'/>
+    <flag name='vmcoreinfo'/>
+    <flag name='isa-serial'/>
+    <flag name='pcie-pci-bridge'/>
+    <flag name='nbd-tls'/>
+    <flag name='tpm-crb'/>
+    <flag name='pr-manager-helper'/>
+    <flag name='screendump_device'/>
+    <flag name='hda-output'/>
+    <flag name='vmgenid'/>
+    <flag name='vhost-vsock'/>
+    <flag name='tpm-emulator'/>
+    <flag name='mch'/>
+    <flag name='mch.extended-tseg-mbytes'/>
+    <flag name='egl-headless'/>
+    <flag name='memory-backend-memfd'/>
+    <flag name='memory-backend-memfd.hugetlb'/>
+    <flag name='egl-headless.rendernode'/>
+    <flag name='nvdimm.unarmed'/>
+    <flag name='virtio-pci-non-transitional'/>
+    <flag name='x86-max-cpu'/>
+    <flag name='cpu-unavailable-features'/>
+    <flag name='canonical-cpu-features'/>
+    <flag name='bochs-display'/>
+    <flag name='migration-file-drop-cache'/>
+    <flag name='dbus-vmstate'/>
+    <flag name='vhost-user-gpu'/>
+    <flag name='vhost-user-vga'/>
+    <flag name='query-cpu-model-baseline'/>
+    <flag name='query-cpu-model-comparison'/>
+    <flag name='ramfb'/>
+    <flag name='drive-nvme'/>
+    <flag name='smp-dies'/>
+    <flag name='i8042'/>
+    <flag name='rng-builtin'/>
+    <flag name='vhost-user-fs'/>
+    <flag name='fsdev.multidevs'/>
+    <flag name='pcie-root-port.hotplug'/>
+    <flag name='aio.io_uring'/>
+    <flag name='tcg'/>
+    <flag name='pvscsi'/>
+    <flag name='cpu.migratable'/>
+    <flag name='intel-iommu.aw-bits'/>
+    <flag name='numa.hmat'/>
+    <flag name='usb-host.hostdevice'/>
+    <flag name='virtio-balloon.free-page-reporting'/>
+    <flag name='netdev.vhost-vdpa'/>
+    <flag name='dc390'/>
+    <flag name='am53c974'/>
+    <flag name='virtio-pmem-pci'/>
+    <flag name='vhost-user-fs.bootindex'/>
+    <flag name='vhost-user-blk'/>
+    <flag name='cpu-max'/>
+    <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
+    <flag name='vnc-power-control'/>
+    <flag name='rotation-rate'/>
+    <flag name='acpi-index'/>
+    <flag name='input-linux'/>
+    <flag name='virtio-gpu-gl-pci'/>
+    <flag name='virtio-vga-gl'/>
+    <flag name='confidential-guest-support'/>
+    <flag name='set-action'/>
+    <flag name='virtio-blk.queue-size'/>
+    <flag name='virtio-mem-pci'/>
+    <flag name='memory-backend-file.reserve'/>
+    <flag name='piix4.acpi-root-pci-hotplug'/>
+    <flag name='netdev.json'/>
+    <flag name='query-dirty-rate'/>
+    <flag name='rbd-encryption'/>
+    <flag name='sev-guest-kernel-hashes'/>
+    <flag name='sev-inject-launch-secret'/>
+    <flag name='device.json+hotplug'/>
+    <flag name='virtio-mem-pci.prealloc'/>
+    <flag name='calc-dirty-rate'/>
+    <flag name='dirtyrate-param.mode'/>
+    <flag name='blockdev.nbd.tls-hostname'/>
+    <flag name='memory-backend-file.prealloc-threads'/>
+    <flag name='virtio-iommu-pci'/>
+    <flag name='virtio-iommu.boot-bypass'/>
+    <flag name='virtio-net.rss'/>
+    <flag name='chardev.qemu-vdagent'/>
+    <flag name='display-dbus'/>
+    <flag name='iothread.thread-pool-max'/>
+    <flag name='usb-host.guest-resets-all'/>
+    <flag name='migration.blocked-reasons'/>
+    <flag name='query-stats'/>
+    <flag name='query-stats-schemas'/>
+    <flag name='thread-context'/>
+    <flag name='screenshot-format-png'/>
+    <flag name='machine-hpet'/>
+    <flag name='netdev.stream'/>
+    <flag name='virtio-crypto'/>
+    <flag name='cryptodev-backend-lkcf'/>
+    <flag name='pvpanic-pci'/>
+    <flag name='virtio-gpu.blob'/>
+    <flag name='rbd-encryption-layering'/>
+    <flag name='rbd-encryption-luks-any'/>
+    <flag name='qcow2-discard-no-unref'/>
+    <flag name='run-with.async-teardown'/>
+    <flag name='virtio-blk-vhost-vdpa'/>
+    <flag name='virtio-blk.iothread-mapping'/>
+    <flag name='smp-clusters'/>
+    <flag name='virtio-mem-pci.dynamic-memslots'/>
+    <flag name='blockjob.backing-mask-protocol'/>
+    <flag name='display-reload'/>
+    <flag name='usb-mtp'/>
+    <flag name='virtio-sound'/>
+    <flag name='netdev.user'/>
+    <flag name='acpi-erst'/>
+    <flag name='intel-iommu.dma-translation'/>
+    <flag name='machine-i8042-opt'/>
+    <flag name='chardev-reconnect-miliseconds'/>
+    <flag name='netdev-stream-reconnect-miliseconds'/>
+    <flag name='query-cpu-model-expansion.deprecated-props'/>
+    <flag name='migrate-incoming.exit-on-error'/>
+    <flag name='blockdev-set-active'/>
+    <flag name='shim'/>
+    <flag name='virtio-scsi.iothread-mapping'/>
+    <flag name='bus-floppy'/>
+    <flag name='nvme'/>
+    <flag name='nvme-ns'/>
+    <flag name='amd-iommu'/>
+    <flag name='amd-iommu.pci-id'/>
+    <flag name='usb-bot'/>
+    <flag name='qom-list-get'/>
+    <flag name='acpi-generic-initiator'/>
+    <flag name='disk-timed-stats'/>
+    <flag name='query-accelerators'/>
+    <flag name='virtio-iommu.aw-bits'/>
+    <flag name='scsi-block.migrate-pr'/>
+    <flag name='iommufd'/>
+    <flag name='uefi-vars'/>
+    <flag name='query-block-flat'/>
+    <flag name='amd-iommu.xtsup'/>
+    <flag name='blockdev-mirror.target-is-zero'/>
+  </qemuCaps>
+  <devices>
+    <device alias='input0'/>
+    <device alias='pci.7'/>
+    <device alias='pci.13'/>
+    <device alias='pci.4'/>
+    <device alias='pci.1'/>
+    <device alias='pci.10'/>
+    <device alias='video0'/>
+    <device alias='serial0'/>
+    <device alias='balloon0'/>
+    <device alias='pci.9'/>
+    <device alias='pci.12'/>
+    <device alias='pci.6'/>
+    <device alias='usb'/>
+    <device alias='pci.3'/>
+    <device alias='pci.8'/>
+    <device alias='pci.14'/>
+    <device alias='pci.5'/>
+    <device alias='pci.11'/>
+    <device alias='pci.2'/>
+    <device alias='channel0'/>
+    <device alias='virtio-serial0'/>
+    <device alias='rng0'/>
+  </devices>
+  <libDir path='/var/lib/libvirt/qemu/domain-2-virtio-vga-test'/>
+  <channelTargetDir path='/run/libvirt/qemu/channel/2-virtio-vga-test'/>
+  <memoryBackingDir path='/var/lib/libvirt/qemu/ram/2-virtio-vga-test'/>
+  <cpu mode='host-passthrough' check='none' migratable='on'/>
+  <chardevStdioLogd/>
+  <rememberOwner/>
+  <nodename index='0'/>
+  <fdset index='0'/>
+  <blockjobs active='no'/>
+  <agentTimeout>-2</agentTimeout>
+  <domain type='kvm' id='2'>
+    <name>virtio-vga-test</name>
+    <uuid>9ccb5ed0-fda4-4760-a38c-83e5f9eba7cf</uuid>
+    <metadata>
+      <libosinfo:libosinfo 
xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0";>
+        <libosinfo:os id="http://fedoraproject.org/fedora/43"/>
+      </libosinfo:libosinfo>
+    </metadata>
+    <memory unit='KiB'>4194304</memory>
+    <currentMemory unit='KiB'>4194304</currentMemory>
+    <vcpu placement='static'>2</vcpu>
+    <resource>
+      <partition>/machine</partition>
+    </resource>
+    <os>
+      <type arch='x86_64' machine='pc-q35-11.0'>hvm</type>
+      <boot dev='hd'/>
+    </os>
+    <features>
+      <acpi/>
+      <apic/>
+      <vmport state='off'/>
+    </features>
+    <cpu mode='host-passthrough' check='none' migratable='on'/>
+    <clock offset='utc'>
+      <timer name='rtc' tickpolicy='catchup'/>
+      <timer name='pit' tickpolicy='delay'/>
+      <timer name='hpet' present='no'/>
+    </clock>
+    <on_poweroff>destroy</on_poweroff>
+    <on_reboot>restart</on_reboot>
+    <on_crash>destroy</on_crash>
+    <pm>
+      <suspend-to-mem enabled='no'/>
+      <suspend-to-disk enabled='no'/>
+    </pm>
+    <devices>
+      <emulator>/usr/bin/qemu-system-x86_64</emulator>
+      <controller type='usb' index='0' model='qemu-xhci' ports='15'>
+        <alias name='usb'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 
function='0x0'/>
+      </controller>
+      <controller type='pci' index='0' model='pcie-root'>
+        <alias name='pcie.0'/>
+      </controller>
+      <controller type='pci' index='1' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='1' port='0x10'/>
+        <alias name='pci.1'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='2' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='2' port='0x11'/>
+        <alias name='pci.2'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='3' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='3' port='0x12'/>
+        <alias name='pci.3'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='4' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='4' port='0x13'/>
+        <alias name='pci.4'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='5' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='5' port='0x14'/>
+        <alias name='pci.5'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='6' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='6' port='0x15'/>
+        <alias name='pci.6'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x5'/>
+      </controller>
+      <controller type='pci' index='7' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='7' port='0x16'/>
+        <alias name='pci.7'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x6'/>
+      </controller>
+      <controller type='pci' index='8' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='8' port='0x17'/>
+        <alias name='pci.8'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x7'/>
+      </controller>
+      <controller type='pci' index='9' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='9' port='0x18'/>
+        <alias name='pci.9'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0' multifunction='on'/>
+      </controller>
+      <controller type='pci' index='10' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='10' port='0x19'/>
+        <alias name='pci.10'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x1'/>
+      </controller>
+      <controller type='pci' index='11' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='11' port='0x1a'/>
+        <alias name='pci.11'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x2'/>
+      </controller>
+      <controller type='pci' index='12' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='12' port='0x1b'/>
+        <alias name='pci.12'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x3'/>
+      </controller>
+      <controller type='pci' index='13' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='13' port='0x1c'/>
+        <alias name='pci.13'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x4'/>
+      </controller>
+      <controller type='pci' index='14' model='pcie-root-port'>
+        <model name='pcie-root-port'/>
+        <target chassis='14' port='0x1d'/>
+        <alias name='pci.14'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x5'/>
+      </controller>
+      <controller type='sata' index='0'>
+        <alias name='ide'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' 
function='0x2'/>
+      </controller>
+      <controller type='virtio-serial' index='0'>
+        <alias name='virtio-serial0'/>
+        <address type='pci' domain='0x0000' bus='0x02' slot='0x00' 
function='0x0'/>
+      </controller>
+      <serial type='pty'>
+        <source path='/dev/pts/3'/>
+        <target type='isa-serial' port='0'>
+          <model name='isa-serial'/>
+        </target>
+        <alias name='serial0'/>
+      </serial>
+      <console type='pty' tty='/dev/pts/3'>
+        <source path='/dev/pts/3'/>
+        <target type='serial' port='0'/>
+        <alias name='serial0'/>
+      </console>
+      <channel type='unix'>
+        <source mode='bind' 
path='/run/libvirt/qemu/channel/2-virtio-vga-test/org.qemu.guest_agent.0'/>
+        <target type='virtio' name='org.qemu.guest_agent.0' 
state='disconnected'/>
+        <alias name='channel0'/>
+        <address type='virtio-serial' controller='0' bus='0' port='1'/>
+      </channel>
+      <input type='tablet' bus='usb'>
+        <alias name='input0'/>
+        <address type='usb' bus='0' port='1'/>
+      </input>
+      <input type='mouse' bus='ps2'>
+        <alias name='input1'/>
+      </input>
+      <input type='keyboard' bus='ps2'>
+        <alias name='input2'/>
+      </input>
+      <graphics type='vnc' port='5901' autoport='yes' websocketGenerated='no' 
listen='127.0.0.1'>
+        <listen type='address' address='127.0.0.1' fromConfig='1' 
autoGenerated='no'/>
+      </graphics>
+      <audio id='1' type='none'/>
+      <video>
+        <model type='virtio' heads='1' primary='yes'/>
+        <alias name='video0'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x0'/>
+      </video>
+      <watchdog model='itco' action='reset'>
+        <alias name='watchdog0'/>
+      </watchdog>
+      <memballoon model='virtio'>
+        <alias name='balloon0'/>
+        <address type='pci' domain='0x0000' bus='0x03' slot='0x00' 
function='0x0'/>
+      </memballoon>
+      <rng model='virtio'>
+        <backend model='random'>/dev/urandom</backend>
+        <alias name='rng0'/>
+        <address type='pci' domain='0x0000' bus='0x04' slot='0x00' 
function='0x0'/>
+      </rng>
+    </devices>
+    <seclabel type='dynamic' model='selinux' relabel='yes'>
+      <label>unconfined_u:unconfined_r:svirt_t:s0:c369,c928</label>
+      <imagelabel>unconfined_u:object_r:svirt_image_t:s0:c369,c928</imagelabel>
+    </seclabel>
+    <seclabel type='dynamic' model='dac' relabel='yes'>
+      <label>+107:+107</label>
+      <imagelabel>+107:+107</imagelabel>
+    </seclabel>
+  </domain>
+</domstatus>
diff --git a/tests/qemuxmlactivetest.c b/tests/qemuxmlactivetest.c
index 44e66a4a29..c3609e9459 100644
--- a/tests/qemuxmlactivetest.c
+++ b/tests/qemuxmlactivetest.c
@@ -278,6 +278,12 @@ mymain(void)

     DO_TEST_STATUS("qcow2-data-file");

+    /* These test cases capture situation where the 'device' attribute of a
+     * virtio video device is missing and thus needs to be inferred from the
+     * available capabilities when an upgraded libvirt is started */
+    DO_TEST_STATUS("virtio-vga-upgrade");
+    DO_TEST_STATUS("virtio-vga-upgrade-missing");
+
  cleanup:
     qemuTestDriverFree(&driver);

-- 
2.54.0


Reply via email to