[libvirt] [PATCH v2 1/2] tests: Sync tests between qemuxml2argv and qemuxml2xml

Laine Stump laine at laine.org
Fri Feb 24 22:59:33 UTC 2017


+42 for doing this :-)

ACK to the patch, because I don't have the intestinal fortitude to 
connect reconcile single change, but I'm assuming you had some 
methodology to the way that you added/removed things (and I'd like to 
subscribe to your newsletter on the topic).

(Seriously, I tried diffing qemuxml2xmltest.c and qemuxml2argvtest.c, 
and it showed a lot of differences in the region of the test 
invocations. Maybe in the future we could handle this by making both 
.c's reference a common file (not that *I'm* going to do this, or even 
that I expect you to. It would be nice though if there was a single 
place to put new tests that should be in both xml2argv and xml2xml tests).


On 02/23/2017 01:39 PM, Andrea Bolognani wrote:
> In some cases, only one of the two transformations was
> checked; in other cases, the capabilities set differed.
> ---
> Note that the input file for the "pci-bridge" test case
> had to be changed to make it usable for qemuxml2argv.
>
>   .../qemuxml2argvdata/qemuxml2argv-pci-bridge.args  |  90 +++++++++
>   tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.xml |  97 +++-------
>   .../qemuxml2argv-vcpu-placement-static.args        |  20 ++
>   tests/qemuxml2argvtest.c                           |  74 ++++---
>   .../qemuxml2xmlout-boot-floppy-q35.xml             |  32 +++
>   .../qemuxml2xmlout-bootindex-floppy-q35.xml        |  32 +++
>   .../qemuxml2xmlout-intel-iommu-machine.xml         |  26 +++
>   .../qemuxml2xmlout-pci-bridge.xml                  |  98 ++++------
>   .../qemuxml2xmloutdata/qemuxml2xmlout-pci-many.xml | 214 +++++++++++++++++++++
>   ...qemuxml2xmlout-video-device-pciaddr-default.xml |  51 +++++
>   tests/qemuxml2xmltest.c                            | 154 +++++++++++----
>   11 files changed, 697 insertions(+), 191 deletions(-)
>   create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.args
>   create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-vcpu-placement-static.args
>   create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-floppy-q35.xml
>   create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-bootindex-floppy-q35.xml
>   create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-machine.xml
>   create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-many.xml
>   create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-video-device-pciaddr-default.xml
>
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.args b/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.args
> new file mode 100644
> index 0000000..d1d51b3
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.args
> @@ -0,0 +1,90 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/home/test \
> +USER=test \
> +LOGNAME=test \
> +QEMU_AUDIO_DRV=none \
> +/usr/libexec/qemu-kvm \
> +-name fdr-br \
> +-S \
> +-M pc-1.2 \
> +-m 2048 \
> +-smp 2,sockets=2,cores=1,threads=1 \
> +-uuid 3ec6cbe1-b5a2-4515-b800-31a61855df41 \
> +-nodefaults \
> +-monitor unix:/tmp/lib/domain--1-fdr-br/monitor.sock,server,nowait \
> +-boot c \
> +-device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x3 \
> +-device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.0,addr=0x4 \
> +-usb \
> +-drive file=/var/iso/f18kde.iso,format=raw,if=none,media=cdrom,\
> +id=drive-ide0-1-0,readonly=on \
> +-device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \
> +-device rtl8139,vlan=0,id=net0,mac=52:54:00:f1:95:51,bus=pci.0,addr=0x5 \
> +-net user,vlan=0,name=hostnet0 \
> +-device e1000,vlan=1,id=net1,mac=52:54:00:5c:c6:1a,bus=pci.0,addr=0x7 \
> +-net user,vlan=1,name=hostnet1 \
> +-device e1000,vlan=2,id=net2,mac=52:54:00:39:97:ac,bus=pci.0,addr=0x8 \
> +-net user,vlan=2,name=hostnet2 \
> +-device e1000,vlan=3,id=net3,mac=52:54:00:45:28:cb,bus=pci.0,addr=0x9 \
> +-net user,vlan=3,name=hostnet3 \
> +-device e1000,vlan=4,id=net4,mac=52:54:00:ee:b9:a8,bus=pci.0,addr=0xa \
> +-net user,vlan=4,name=hostnet4 \
> +-device e1000,vlan=5,id=net5,mac=52:54:00:a9:f7:17,bus=pci.0,addr=0xb \
> +-net user,vlan=5,name=hostnet5 \
> +-device e1000,vlan=6,id=net6,mac=52:54:00:df:2b:f3,bus=pci.0,addr=0xc \
> +-net user,vlan=6,name=hostnet6 \
> +-device e1000,vlan=7,id=net7,mac=52:54:00:78:94:b4,bus=pci.0,addr=0xd \
> +-net user,vlan=7,name=hostnet7 \
> +-device e1000,vlan=8,id=net8,mac=52:54:00:6b:9b:06,bus=pci.0,addr=0xe \
> +-net user,vlan=8,name=hostnet8 \
> +-device e1000,vlan=9,id=net9,mac=52:54:00:17:df:bc,bus=pci.0,addr=0xf \
> +-net user,vlan=9,name=hostnet9 \
> +-device rtl8139,vlan=10,id=net10,mac=52:54:00:3b:d0:51,bus=pci.0,addr=0x10 \
> +-net user,vlan=10,name=hostnet10 \
> +-device e1000,vlan=11,id=net11,mac=52:54:00:8d:2d:17,bus=pci.0,addr=0x11 \
> +-net user,vlan=11,name=hostnet11 \
> +-device e1000,vlan=12,id=net12,mac=52:54:00:a7:66:af,bus=pci.0,addr=0x12 \
> +-net user,vlan=12,name=hostnet12 \
> +-device e1000,vlan=13,id=net13,mac=52:54:00:54:ab:d7,bus=pci.0,addr=0x13 \
> +-net user,vlan=13,name=hostnet13 \
> +-device e1000,vlan=14,id=net14,mac=52:54:00:1f:99:90,bus=pci.0,addr=0x14 \
> +-net user,vlan=14,name=hostnet14 \
> +-device e1000,vlan=15,id=net15,mac=52:54:00:c8:43:87,bus=pci.0,addr=0x15 \
> +-net user,vlan=15,name=hostnet15 \
> +-device e1000,vlan=16,id=net16,mac=52:54:00:df:22:b2,bus=pci.0,addr=0x16 \
> +-net user,vlan=16,name=hostnet16 \
> +-device e1000,vlan=17,id=net17,mac=52:54:00:d2:9a:47,bus=pci.0,addr=0x17 \
> +-net user,vlan=17,name=hostnet17 \
> +-device e1000,vlan=18,id=net18,mac=52:54:00:86:05:e2,bus=pci.0,addr=0x18 \
> +-net user,vlan=18,name=hostnet18 \
> +-device e1000,vlan=19,id=net19,mac=52:54:00:8c:1c:c2,bus=pci.0,addr=0x19 \
> +-net user,vlan=19,name=hostnet19 \
> +-device e1000,vlan=20,id=net20,mac=52:54:00:48:58:92,bus=pci.0,addr=0x1a \
> +-net user,vlan=20,name=hostnet20 \
> +-device e1000,vlan=21,id=net21,mac=52:54:00:99:e5:bf,bus=pci.0,addr=0x1b \
> +-net user,vlan=21,name=hostnet21 \
> +-device e1000,vlan=22,id=net22,mac=52:54:00:b1:8c:25,bus=pci.0,addr=0x1c \
> +-net user,vlan=22,name=hostnet22 \
> +-device e1000,vlan=23,id=net23,mac=52:54:00:60:e0:d0,bus=pci.0,addr=0x1d \
> +-net user,vlan=23,name=hostnet23 \
> +-device e1000,vlan=24,id=net24,mac=52:54:00:37:00:6a,bus=pci.0,addr=0x1e \
> +-net user,vlan=24,name=hostnet24 \
> +-device e1000,vlan=25,id=net25,mac=52:54:00:c7:c8:ad,bus=pci.0,addr=0x1f \
> +-net user,vlan=25,name=hostnet25 \
> +-device e1000,vlan=26,id=net26,mac=52:54:00:4e:a7:cf,bus=pci.1,addr=0x1 \
> +-net user,vlan=26,name=hostnet26 \
> +-device e1000,vlan=27,id=net27,mac=52:54:00:00:79:69,bus=pci.1,addr=0x2 \
> +-net user,vlan=27,name=hostnet27 \
> +-device e1000,vlan=28,id=net28,mac=52:54:00:47:00:6f,bus=pci.1,addr=0x3 \
> +-net user,vlan=28,name=hostnet28 \
> +-device e1000,vlan=29,id=net29,mac=52:54:00:2a:8c:8b,bus=pci.1,addr=0x4 \
> +-net user,vlan=29,name=hostnet29 \
> +-device e1000,vlan=30,id=net30,mac=52:54:00:ec:d5:e3,bus=pci.1,addr=0x5 \
> +-net user,vlan=30,name=hostnet30 \
> +-device e1000,vlan=31,id=net31,mac=52:54:00:7e:6e:c8,bus=pci.1,addr=0x6 \
> +-net user,vlan=31,name=hostnet31 \
> +-vnc 127.0.0.1:0 \
> +-k en-us \
> +-vga cirrus \
> +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.xml b/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.xml
> index 683c269..2e8f539 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.xml
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pci-bridge.xml
> @@ -35,164 +35,131 @@
>       <controller type='pci' index='0' model='pci-root'/>
>       <controller type='pci' index='1' model='pci-bridge'/>
>       <controller type='pci' index='2' model='pci-bridge'/>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:f1:95:51'/>
> -      <source network='default'/>
>         <model type='rtl8139'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:5c:c6:1a'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:39:97:ac'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:45:28:cb'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:ee:b9:a8'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:a9:f7:17'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:df:2b:f3'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:78:94:b4'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:6b:9b:06'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:17:df:bc'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:3b:d0:51'/>
> -      <source network='default'/>
> -      <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:8d:2d:17'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:a7:66:af'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:54:ab:d7'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:1f:99:90'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:c8:43:87'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:df:22:b2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:d2:9a:47'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:86:05:e2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:8c:1c:c2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:48:58:92'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:99:e5:bf'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:b1:8c:25'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:60:e0:d0'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:37:00:6a'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:c7:c8:ad'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:4e:a7:cf'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:00:79:69'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:47:00:6f'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:2a:8c:8b'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:ec:d5:e3'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:7e:6e:c8'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>       </interface>
>       <input type='mouse' bus='ps2'/>
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-vcpu-placement-static.args b/tests/qemuxml2argvdata/qemuxml2argv-vcpu-placement-static.args
> new file mode 100644
> index 0000000..387ffd2
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-vcpu-placement-static.args
> @@ -0,0 +1,20 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/home/test \
> +USER=test \
> +LOGNAME=test \
> +QEMU_AUDIO_DRV=none \
> +/usr/bin/qemu-system-x86_64 \
> +-name dummy2 \
> +-S \
> +-M pc-q35-2.3 \
> +-m 128 \
> +-smp 2,maxcpus=6,sockets=6,cores=1,threads=1 \
> +-object iothread,id=iothread1 \
> +-object iothread,id=iothread2 \
> +-uuid 4d92ec27-9ebf-400b-ae91-20c71c647c19 \
> +-nographic \
> +-nodefaults \
> +-monitor unix:/tmp/lib/domain--1-dummy2/monitor.sock,server,nowait \
> +-no-acpi \
> +-boot c
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index f55b04b..1298ac6 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -1393,23 +1393,29 @@ mymain(void)
>               QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG);
>       DO_TEST("usb-controller-default-q35",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_PCI_OHCI,
> -            QEMU_CAPS_PIIX3_USB_UHCI, QEMU_CAPS_NEC_USB_XHCI);
> +            QEMU_CAPS_PCI_OHCI,
> +            QEMU_CAPS_PIIX3_USB_UHCI,
> +            QEMU_CAPS_NEC_USB_XHCI);
>       DO_TEST_FAILURE("usb-controller-default-unavailable-q35",
>                       QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +                    QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>                       QEMU_CAPS_DEVICE_IOH3420,
> -                    QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_PCI_OHCI,
> +                    QEMU_CAPS_PCI_OHCI,
>                       QEMU_CAPS_NEC_USB_XHCI);
>       DO_TEST("usb-controller-explicit-q35",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_PCI_OHCI,
> -            QEMU_CAPS_PIIX3_USB_UHCI, QEMU_CAPS_NEC_USB_XHCI);
> +            QEMU_CAPS_PCI_OHCI,
> +            QEMU_CAPS_PIIX3_USB_UHCI,
> +            QEMU_CAPS_NEC_USB_XHCI);
>       DO_TEST_FAILURE("usb-controller-explicit-unavailable-q35",
>                       QEMU_CAPS_DEVICE_PCI_BRIDGE,
>                       QEMU_CAPS_DEVICE_IOH3420,
> -                    QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_PCI_OHCI,
> +                    QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +                    QEMU_CAPS_PCI_OHCI,
>                       QEMU_CAPS_PIIX3_USB_UHCI);
>       DO_TEST("usb-controller-xhci",
>               QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_PIIX3_USB_UHCI,
> @@ -1572,6 +1578,10 @@ mymain(void)
>               QEMU_CAPS_OBJECT_IOTHREAD,
>               QEMU_CAPS_OBJECT_MEMORY_RAM,
>               QEMU_CAPS_OBJECT_MEMORY_FILE);
> +    DO_TEST("vcpu-placement-static",
> +            QEMU_CAPS_KVM,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_OBJECT_IOTHREAD);
>   
>       DO_TEST("numatune-memory", NONE);
>       DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE);
> @@ -1682,10 +1692,11 @@ mymain(void)
>               QEMU_CAPS_IDE_CD, QEMU_CAPS_BLOCKIO);
>   
>       DO_TEST("video-device-pciaddr-default",
> -            QEMU_CAPS_KVM, QEMU_CAPS_VNC,
> +            QEMU_CAPS_KVM,
> +            QEMU_CAPS_VNC,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> -            QEMU_CAPS_DEVICE_QXL,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE);
> +            QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("video-vga-nodevice", QEMU_CAPS_DEVICE_VGA);
>       DO_TEST("video-vga-device", QEMU_CAPS_DEVICE_VGA,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
> @@ -1785,9 +1796,15 @@ mymain(void)
>       DO_TEST_PARSE_ERROR("pci-slot-invalid", NONE);
>       DO_TEST_PARSE_ERROR("pci-function-invalid", NONE);
>   
> -    DO_TEST("pci-autoadd-addr", QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +    DO_TEST("pci-bridge",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_VNC,
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA);
> +    DO_TEST("pci-autoadd-addr",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_CIRRUS_VGA);
> -    DO_TEST("pci-autoadd-idx", QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +    DO_TEST("pci-autoadd-idx",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_CIRRUS_VGA);
>       DO_TEST("pci-autofill-addr", QEMU_CAPS_DEVICE_CIRRUS_VGA);
>       DO_TEST("pci-many",
> @@ -1796,16 +1813,19 @@ mymain(void)
>       DO_TEST("pci-bridge-many-disks",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE);
>       DO_TEST("pcie-root",
> -            QEMU_CAPS_ICH9_AHCI,
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420);
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST_PARSE_ERROR("q35-dmi-bad-address1",
> @@ -1832,7 +1852,8 @@ mymain(void)
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-usb2-multi",
> @@ -1840,7 +1861,8 @@ mymain(void)
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-usb2-reorder",
> @@ -1848,7 +1870,8 @@ mymain(void)
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       /* verify that devices with pcie capability are assigned to a pcie slot */
> @@ -2020,7 +2043,8 @@ mymain(void)
>               QEMU_CAPS_DEVICE_X3130_UPSTREAM,
>               QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_NEC_USB_XHCI);
>       /* Make sure the user can always override libvirt's default device
>        * placement policy by providing an explicit PCI address */
> @@ -2190,7 +2214,8 @@ mymain(void)
>               QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_PCI_MULTIFUNCTION,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420);
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_VIRTIO_SCSI);
>       DO_TEST("aarch64-virt-2.6-virtio-pci-default",
>               QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB,
>               QEMU_CAPS_DEVICE_VIRTIO_MMIO,
> @@ -2466,12 +2491,15 @@ mymain(void)
>                           QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_USB_HUB);
>   
>       DO_TEST("acpi-table", NONE);
> -    DO_TEST("intel-iommu", QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +    DO_TEST("intel-iommu",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_DEVICE_INTEL_IOMMU);
> -    DO_TEST("intel-iommu-machine", QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_MACHINE_OPT,
> -            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_MACHINE_IOMMU);
> +    DO_TEST("intel-iommu-machine",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_MACHINE_OPT,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_MACHINE_IOMMU);
>   
>       DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
>   
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-floppy-q35.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-floppy-q35.xml
> new file mode 100644
> index 0000000..b94ad85
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-floppy-q35.xml
> @@ -0,0 +1,32 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219100</memory>
> +  <currentMemory unit='KiB'>219100</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc-q35-2.4'>hvm</type>
> +    <boot dev='fd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu</emulator>
> +    <disk type='file' device='floppy'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/tmp/firmware.img'/>
> +      <target dev='fda' bus='fdc'/>
> +      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> +    </disk>
> +    <controller type='sata' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <controller type='fdc' index='0'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-bootindex-floppy-q35.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-bootindex-floppy-q35.xml
> new file mode 100644
> index 0000000..b94ad85
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-bootindex-floppy-q35.xml
> @@ -0,0 +1,32 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219100</memory>
> +  <currentMemory unit='KiB'>219100</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc-q35-2.4'>hvm</type>
> +    <boot dev='fd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu</emulator>
> +    <disk type='file' device='floppy'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/tmp/firmware.img'/>
> +      <target dev='fda' bus='fdc'/>
> +      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> +    </disk>
> +    <controller type='sata' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <controller type='fdc' index='0'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-machine.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-machine.xml
> new file mode 100644
> index 0000000..de921f6
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-machine.xml
> @@ -0,0 +1,26 @@
> +<domain type='qemu'>
> +  <name>QEMUGuest1</name>
> +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>219100</memory>
> +  <currentMemory unit='KiB'>219100</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='q35'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>destroy</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu</emulator>
> +    <controller type='pci' index='0' model='pcie-root'/>
> +    <controller type='sata' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
> +    </controller>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='none'/>
> +    <iommu model='intel'/>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-bridge.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-bridge.xml
> index 61de009..6769bac 100644
> --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-bridge.xml
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-bridge.xml
> @@ -43,195 +43,163 @@
>         <target chassisNr='2'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>       </controller>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:f1:95:51'/>
> -      <source network='default'/>
>         <model type='rtl8139'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:5c:c6:1a'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:39:97:ac'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:45:28:cb'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:ee:b9:a8'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:a9:f7:17'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:df:2b:f3'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:78:94:b4'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:6b:9b:06'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:17:df:bc'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:3b:d0:51'/>
> -      <source network='default'/>
> -      <model type='e1000'/>
> +      <model type='rtl8139'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:8d:2d:17'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:a7:66:af'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:54:ab:d7'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:1f:99:90'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:c8:43:87'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x15' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:df:22:b2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:d2:9a:47'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:86:05:e2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x18' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:8c:1c:c2'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:48:58:92'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1a' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:99:e5:bf'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:b1:8c:25'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1c' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:60:e0:d0'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:37:00:6a'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:c7:c8:ad'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:4e:a7:cf'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:00:79:69'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x02' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:47:00:6f'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x03' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:2a:8c:8b'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x04' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:ec:d5:e3'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x05' function='0x0'/>
>       </interface>
> -    <interface type='network'>
> +    <interface type='user'>
>         <mac address='52:54:00:7e:6e:c8'/>
> -      <source network='default'/>
>         <model type='e1000'/>
>         <address type='pci' domain='0x0000' bus='0x01' slot='0x06' function='0x0'/>
>       </interface>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-many.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-many.xml
> new file mode 100644
> index 0000000..375ff14
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-many.xml
> @@ -0,0 +1,214 @@
> +<domain type='qemu'>
> +  <name>fdr-br</name>
> +  <uuid>3ec6cbe1-b5a2-4515-b800-31a61855df41</uuid>
> +  <memory unit='KiB'>2097152</memory>
> +  <currentMemory unit='KiB'>2097152</currentMemory>
> +  <vcpu placement='static' cpuset='0-1'>2</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc-1.2'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <features>
> +    <acpi/>
> +    <apic/>
> +    <pae/>
> +  </features>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <emulator>/usr/libexec/qemu-kvm</emulator>
> +    <disk type='file' device='cdrom'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/iso/f18kde.iso'/>
> +      <target dev='hdc' bus='ide'/>
> +      <readonly/>
> +      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/test.img'/>
> +      <target dev='vda' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/test1.img'/>
> +      <target dev='vdb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-a-a.img'/>
> +      <target dev='vdaa' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-a-b.img'/>
> +      <target dev='vdab' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-a-c.img'/>
> +      <target dev='vdac' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-a-d.img'/>
> +      <target dev='vdad' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-b-a.img'/>
> +      <target dev='vdba' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-b-b.img'/>
> +      <target dev='vdbb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-b-c.img'/>
> +      <target dev='vdbc' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-b-d.img'/>
> +      <target dev='vdbd' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-c-a.img'/>
> +      <target dev='vdca' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-c-b.img'/>
> +      <target dev='vdcb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-c-c.img'/>
> +      <target dev='vdcc' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-c-d.img'/>
> +      <target dev='vdcd' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-d-a.img'/>
> +      <target dev='vdda' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-d-b.img'/>
> +      <target dev='vddb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-d-c.img'/>
> +      <target dev='vddc' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-d-d.img'/>
> +      <target dev='vddd' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x15' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-e-a.img'/>
> +      <target dev='vdea' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-e-b.img'/>
> +      <target dev='vdeb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-e-c.img'/>
> +      <target dev='vdec' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x18' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-e-d.img'/>
> +      <target dev='vded' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-f-a.img'/>
> +      <target dev='vdfa' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1a' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-f-b.img'/>
> +      <target dev='vdfb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-f-c.img'/>
> +      <target dev='vdfc' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1c' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-f-d.img'/>
> +      <target dev='vdfd' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-g-a.img'/>
> +      <target dev='vdga' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
> +    </disk>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/disk-g-b.img'/>
> +      <target dev='vdgb' bus='virtio'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
> +    </disk>
> +    <controller type='usb' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
> +    </controller>
> +    <controller type='ide' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <video>
> +      <model type='cirrus' vram='16384' heads='1' primary='yes'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +    </video>
> +    <memballoon model='virtio'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
> +    </memballoon>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-video-device-pciaddr-default.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-video-device-pciaddr-default.xml
> new file mode 100644
> index 0000000..9dbeaf3
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-video-device-pciaddr-default.xml
> @@ -0,0 +1,51 @@
> +<domain type='kvm'>
> +  <name>QEMUGuest1</name>
> +  <uuid>cdbebdfa-1d6d-65c3-be0f-fd74b978a773</uuid>
> +  <memory unit='KiB'>1048576</memory>
> +  <currentMemory unit='KiB'>1048576</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='pc-0.15'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <emulator>/usr/bin/qemu</emulator>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='qcow2' cache='none'/>
> +      <source file='/var/lib/libvirt/images/QEMUGuest1'/>
> +      <target dev='hda' bus='ide'/>
> +      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> +    </disk>
> +    <controller type='usb' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
> +    </controller>
> +    <controller type='ide' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
> +      <listen type='address' address='127.0.0.1'/>
> +    </graphics>
> +    <video>
> +      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> +    </video>
> +    <video>
> +      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
> +    </video>
> +    <video>
> +      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
> +    </video>
> +    <memballoon model='virtio'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +    </memballoon>
> +  </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index 0702f58..225f999 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -371,6 +371,17 @@ mymain(void)
>       DO_TEST("boot-cdrom", NONE);
>       DO_TEST("boot-network", NONE);
>       DO_TEST("boot-floppy", NONE);
> +    DO_TEST("boot-floppy-q35",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_ICH9_AHCI);
> +    DO_TEST("bootindex-floppy-q35",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_BOOT_MENU,
> +            QEMU_CAPS_BOOTINDEX);
>       DO_TEST("boot-multi", NONE);
>       DO_TEST("boot-menu-enable-with-timeout", NONE);
>       DO_TEST("boot-menu-disable", NONE);
> @@ -566,7 +577,9 @@ mymain(void)
>       DO_TEST("cputune-iothreadsched-zeropriority", NONE);
>       DO_TEST("cputune-numatune", NONE);
>       DO_TEST("vcpu-placement-static",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE);
> +            QEMU_CAPS_KVM,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_OBJECT_IOTHREAD);
>   
>       DO_TEST("smp", NONE);
>       DO_TEST("iothreads", NONE);
> @@ -593,14 +606,18 @@ mymain(void)
>       DO_TEST("usb-piix3-controller",
>               QEMU_CAPS_PIIX3_USB_UHCI);
>       DO_TEST("usb-controller-default-q35",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_PCI_OHCI, QEMU_CAPS_PIIX3_USB_UHCI,
> +            QEMU_CAPS_PCI_OHCI,
> +            QEMU_CAPS_PIIX3_USB_UHCI,
>               QEMU_CAPS_NEC_USB_XHCI);
>       DO_TEST("usb-controller-explicit-q35",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_PCI_OHCI, QEMU_CAPS_PIIX3_USB_UHCI,
> +            QEMU_CAPS_PCI_OHCI,
> +            QEMU_CAPS_PIIX3_USB_UHCI,
>               QEMU_CAPS_NEC_USB_XHCI);
>       DO_TEST("ppc64-usb-controller",
>               QEMU_CAPS_PCI_OHCI);
> @@ -669,45 +686,63 @@ mymain(void)
>       DO_TEST("metadata-duplicate", NONE);
>   
>       DO_TEST("pci-bridge",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE);
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_VNC,
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA);
> +    DO_TEST("pci-many",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA);
>       DO_TEST("pci-bridge-many-disks",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE);
>       DO_TEST("pci-autoadd-addr",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE);
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA);
>       DO_TEST("pci-autoadd-idx",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE);
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA);
>       DO_TEST("pci-autofill-addr", NONE);
>   
>       DO_TEST("q35",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION,
> -            QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-usb2",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
>               QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-usb2-multi",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION,
> -            QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-usb2-reorder",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_PCI_MULTIFUNCTION,
> -            QEMU_CAPS_ICH9_USB_EHCI1, QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("q35-pcie",
>               QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
>               QEMU_CAPS_DEVICE_VIRTIO_RNG,
>               QEMU_CAPS_OBJECT_RNG_RANDOM,
> +            QEMU_CAPS_NETDEV,
>               QEMU_CAPS_DEVICE_VIRTIO_NET,
>               QEMU_CAPS_DEVICE_VIRTIO_GPU,
>               QEMU_CAPS_VIRTIO_GPU_VIRGL,
> @@ -731,6 +766,7 @@ mymain(void)
>       DO_TEST("q35-virtio-pci",
>               QEMU_CAPS_DEVICE_VIRTIO_RNG,
>               QEMU_CAPS_OBJECT_RNG_RANDOM,
> +            QEMU_CAPS_NETDEV,
>               QEMU_CAPS_DEVICE_VIRTIO_NET,
>               QEMU_CAPS_DEVICE_VIRTIO_GPU,
>               QEMU_CAPS_VIRTIO_GPU_VIRGL,
> @@ -820,6 +856,11 @@ mymain(void)
>               QEMU_CAPS_NEC_USB_XHCI,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
>       DO_TEST("q35-virt-manager-basic",
> +            QEMU_CAPS_KVM,
> +            QEMU_CAPS_RTC,
> +            QEMU_CAPS_NO_KVM_PIT,
> +            QEMU_CAPS_ICH9_DISABLE_S3,
> +            QEMU_CAPS_ICH9_DISABLE_S4,
>               QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
>               QEMU_CAPS_DEVICE_VIRTIO_RNG,
>               QEMU_CAPS_OBJECT_RNG_RANDOM,
> @@ -842,40 +883,64 @@ mymain(void)
>               QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_NEC_USB_XHCI,
>               QEMU_CAPS_DEVICE_ICH9_INTEL_HDA,
> -            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_SPICE,
> +            QEMU_CAPS_CHARDEV_SPICEVMC,
> +            QEMU_CAPS_DEVICE_QXL,
> +            QEMU_CAPS_HDA_DUPLEX,
> +            QEMU_CAPS_USB_REDIR);
>       DO_TEST("pcie-root",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_ICH9_AHCI,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("pcie-root-port",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_ICH9_AHCI,
>               QEMU_CAPS_PCI_MULTIFUNCTION,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("pcie-switch-upstream-port",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> +            QEMU_CAPS_ICH9_AHCI,
>               QEMU_CAPS_PCI_MULTIFUNCTION,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("pcie-switch-downstream-port",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> +            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
> +            QEMU_CAPS_ICH9_AHCI,
>               QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("pci-expander-bus",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PXB);
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PXB);
>       DO_TEST("pcie-expander-bus",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> -            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM, QEMU_CAPS_DEVICE_PXB_PCIE);
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> +            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
> +            QEMU_CAPS_DEVICE_PXB_PCIE);
>       DO_TEST("autoindex",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> -            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM, QEMU_CAPS_ICH9_AHCI,
> -            QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_IOH3420,
> +            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
> +            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_PCI_MULTIFUNCTION,
> +            QEMU_CAPS_ICH9_USB_EHCI1,
>               QEMU_CAPS_NEC_USB_XHCI);
>       /* Make sure the user can always override libvirt's default device
>        * placement policy by providing an explicit PCI address */
> @@ -944,9 +1009,11 @@ mymain(void)
>       DO_TEST("pcihole64-gib", NONE);
>       DO_TEST("pcihole64-none", NONE);
>       DO_TEST("pcihole64-q35",
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_IOH3420,
> -            QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_ICH9_AHCI,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
>               QEMU_CAPS_DEVICE_QXL,
>               QEMU_CAPS_Q35_PCI_HOLE64_SIZE);
>   
> @@ -1049,6 +1116,12 @@ mymain(void)
>   
>       DO_TEST("acpi-table", NONE);
>   
> +    DO_TEST("video-device-pciaddr-default",
> +            QEMU_CAPS_KVM,
> +            QEMU_CAPS_VNC,
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
> +            QEMU_CAPS_DEVICE_QXL);
>       DO_TEST("video-qxl-heads", NONE);
>       DO_TEST("video-qxl-noheads", NONE);
>       DO_TEST("video-virtio-gpu-secondary", NONE);
> @@ -1056,7 +1129,12 @@ mymain(void)
>       DO_TEST("intel-iommu",
>               QEMU_CAPS_DEVICE_PCI_BRIDGE,
>               QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> -            QEMU_CAPS_DEVICE_IOH3420);
> +            QEMU_CAPS_DEVICE_INTEL_IOMMU);
> +    DO_TEST("intel-iommu-machine",
> +            QEMU_CAPS_DEVICE_PCI_BRIDGE,
> +            QEMU_CAPS_MACHINE_OPT,
> +            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
> +            QEMU_CAPS_MACHINE_IOMMU);
>   
>       qemuTestDriverFree(&driver);
>   





More information about the libvir-list mailing list