[libvirt] [PATCH v3 22/26] qemu: Use PHBs when extending the guest PCI topology

Laine Stump laine at laine.org
Tue Jun 27 16:05:18 UTC 2017


On 06/23/2017 11:03 AM, Andrea Bolognani wrote:
> When looking for slots suitable for a PCI device, libvirt
> might need to add an extra PCI controller: for pSeries guests,
> we want that extra controller to be a PHB (pci-root) rather
> than a PCI bridge.
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>

Reviewed-by: Laine Stump <laine at laine.org>

(pretty simple change once I saw that most of the diffs were just due to
an indentation change)

> ---
>  src/conf/domain_addr.c                             | 56 +++++++++--------
>  src/conf/domain_addr.h                             |  2 +
>  src/qemu/qemu_domain_address.c                     |  4 ++
>  .../qemuxml2argv-pseries-hostdevs-2.args           |  8 +--
>  .../qemuxml2argv-pseries-hostdevs-3.args           |  8 +--
>  .../qemuxml2argv-pseries-many-buses-1.args         |  4 +-
>  .../qemuxml2argv-pseries-many-devices.args         | 66 ++++++++++----------
>  tests/qemuxml2argvtest.c                           |  4 --
>  .../qemuxml2xmlout-pseries-hostdevs-2.xml          |  9 ++-
>  .../qemuxml2xmlout-pseries-hostdevs-3.xml          | 16 +++--
>  .../qemuxml2xmlout-pseries-many-buses-1.xml        |  7 +--
>  .../qemuxml2xmlout-pseries-many-devices.xml        | 71 +++++++++++-----------
>  tests/qemuxml2xmltest.c                            |  4 --
>  13 files changed, 129 insertions(+), 130 deletions(-)
> 
> diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
> index 86b1367..b9e9145 100644
> --- a/src/conf/domain_addr.c
> +++ b/src/conf/domain_addr.c
> @@ -383,33 +383,39 @@ virDomainPCIAddressSetGrow(virDomainPCIAddressSetPtr addrs,
>       */
>  
>      if (flags & VIR_PCI_CONNECT_TYPE_PCI_DEVICE) {
> -        model = VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE;
> +        if (addrs->multipleRootsSupported) {
> +            /* Use a pci-root controller to expand the guest's PCI
> +             * topology if it supports having more than one */
> +            model = VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT;
> +        } else {
> +            model = VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE;
>  
> -        /* if there aren't yet any buses that will accept a
> -         * pci-bridge, and the caller is asking for one, we'll need to
> -         * add a dmi-to-pci-bridge first.
> -         */
> -        needDMIToPCIBridge = true;
> -        for (i = 0; i < addrs->nbuses; i++) {
> -            if (addrs->buses[i].flags & VIR_PCI_CONNECT_TYPE_PCI_BRIDGE) {
> -                needDMIToPCIBridge = false;
> -                break;
> -            }
> -        }
> -        if (needDMIToPCIBridge && add == 1) {
> -            /* We need to add a single pci-bridge to provide the bus
> -             * our legacy PCI device will be plugged into; however, we
> -             * have also determined that there isn't yet any proper
> -             * place to connect that pci-bridge we're about to add (on
> -             * a system with pcie-root, that "proper place" would be a
> -             * dmi-to-pci-bridge". So, to give the pci-bridge a place
> -             * to connect, we increase the count of buses to add,
> -             * while also incrementing the bus number in the address
> -             * for the device (since the pci-bridge will now be at an
> -             * index 1 higher than the caller had anticipated).
> +            /* if there aren't yet any buses that will accept a
> +             * pci-bridge, and the caller is asking for one, we'll need to
> +             * add a dmi-to-pci-bridge first.
>               */
> -            add++;
> -            addr->bus++;
> +            needDMIToPCIBridge = true;
> +            for (i = 0; i < addrs->nbuses; i++) {
> +                if (addrs->buses[i].flags & VIR_PCI_CONNECT_TYPE_PCI_BRIDGE) {
> +                    needDMIToPCIBridge = false;
> +                    break;
> +                }
> +            }
> +            if (needDMIToPCIBridge && add == 1) {
> +                /* We need to add a single pci-bridge to provide the bus
> +                 * our legacy PCI device will be plugged into; however, we
> +                 * have also determined that there isn't yet any proper
> +                 * place to connect that pci-bridge we're about to add (on
> +                 * a system with pcie-root, that "proper place" would be a
> +                 * dmi-to-pci-bridge". So, to give the pci-bridge a place
> +                 * to connect, we increase the count of buses to add,
> +                 * while also incrementing the bus number in the address
> +                 * for the device (since the pci-bridge will now be at an
> +                 * index 1 higher than the caller had anticipated).
> +                 */
> +                add++;
> +                addr->bus++;
> +            }
>          }
>      } else if (flags & VIR_PCI_CONNECT_TYPE_PCI_BRIDGE &&
>                 addrs->buses[0].model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) {
> diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h
> index c98a228..9cd1b29 100644
> --- a/src/conf/domain_addr.h
> +++ b/src/conf/domain_addr.h
> @@ -108,6 +108,8 @@ struct _virDomainPCIAddressSet {
>      size_t nbuses;
>      bool dryRun;          /* on a dry run, new buses are auto-added
>                               and addresses aren't saved in device infos */
> +    /* If true, the guest can have multiple pci-root controllers */
> +    bool multipleRootsSupported;
>  };
>  typedef struct _virDomainPCIAddressSet virDomainPCIAddressSet;
>  typedef virDomainPCIAddressSet *virDomainPCIAddressSetPtr;
> diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
> index 082cb72..50e41a4 100644
> --- a/src/qemu/qemu_domain_address.c
> +++ b/src/qemu/qemu_domain_address.c
> @@ -1061,6 +1061,10 @@ qemuDomainPCIAddressSetCreate(virDomainDefPtr def,
>  
>      addrs->dryRun = dryRun;
>  
> +    /* pSeries domains support multiple pci-root controllers */
> +    if (qemuDomainIsPSeries(def))
> +        addrs->multipleRootsSupported = true;
> +
>      for (i = 0; i < def->ncontrollers; i++) {
>          virDomainControllerDefPtr cont = def->controllers[i];
>          size_t idx = cont->idx;
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.args
> index c43e15d..83d4306 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.args
> @@ -18,7 +18,7 @@ QEMU_AUDIO_DRV=none \
>  server,nowait \
>  -mon chardev=charmonitor,id=monitor,mode=readline \
>  -boot c \
> --device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x1 \
> --device virtio-scsi-pci,id=scsi0,bus=pci.1,addr=0x1 \
> --device vfio-pci,host=0001:01:00.0,id=hostdev0,bus=pci.1,addr=0x2 \
> --device vfio-pci,host=0005:90:01.0,id=hostdev1,bus=pci.0,addr=0x2
> +-device spapr-pci-host-bridge,index=1,id=pci.1 \
> +-device virtio-scsi-pci,id=scsi0,bus=pci.1.0,addr=0x1 \
> +-device vfio-pci,host=0001:01:00.0,id=hostdev0,bus=pci.1.0,addr=0x2 \
> +-device vfio-pci,host=0005:90:01.0,id=hostdev1,bus=pci.0,addr=0x1
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.args
> index 99df2e7..eda6cc7 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.args
> @@ -18,7 +18,7 @@ QEMU_AUDIO_DRV=none \
>  server,nowait \
>  -mon chardev=charmonitor,id=monitor,mode=readline \
>  -boot c \
> --device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x1 \
> --device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.0,addr=0x2 \
> --device vfio-pci,host=0001:01:00.0,id=hostdev0,bus=pci.2,addr=0x1 \
> --device vfio-pci,host=0001:01:00.1,id=hostdev1,bus=pci.0,addr=0x3
> +-device spapr-pci-host-bridge,index=1,id=pci.1 \
> +-device spapr-pci-host-bridge,index=2,id=pci.2 \
> +-device vfio-pci,host=0001:01:00.0,id=hostdev0,bus=pci.2.0,addr=0x1 \
> +-device vfio-pci,host=0001:01:00.1,id=hostdev1,bus=pci.0,addr=0x1
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.args
> index bf78fc1..eb5ccbd 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.args
> @@ -18,5 +18,5 @@ QEMU_AUDIO_DRV=none \
>  server,nowait \
>  -mon chardev=charmonitor,id=monitor,mode=readline \
>  -boot c \
> --device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x1 \
> --device virtio-scsi-pci,id=scsi0,bus=pci.1,addr=0x1
> +-device spapr-pci-host-bridge,index=1,id=pci.1 \
> +-device virtio-scsi-pci,id=scsi0,bus=pci.1.0,addr=0x1
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.args
> index 1db4533..f20bc52 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.args
> @@ -18,36 +18,36 @@ QEMU_AUDIO_DRV=none \
>  server,nowait \
>  -mon chardev=charmonitor,id=monitor,mode=readline \
>  -boot c \
> --device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x1 \
> --device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x2 \
> --device virtio-scsi-pci,id=scsi1,bus=pci.0,addr=0x3 \
> --device virtio-scsi-pci,id=scsi2,bus=pci.0,addr=0x4 \
> --device virtio-scsi-pci,id=scsi3,bus=pci.0,addr=0x5 \
> --device virtio-scsi-pci,id=scsi4,bus=pci.0,addr=0x6 \
> --device virtio-scsi-pci,id=scsi5,bus=pci.0,addr=0x7 \
> --device virtio-scsi-pci,id=scsi6,bus=pci.0,addr=0x8 \
> --device virtio-scsi-pci,id=scsi7,bus=pci.0,addr=0x9 \
> --device virtio-scsi-pci,id=scsi8,bus=pci.0,addr=0xa \
> --device virtio-scsi-pci,id=scsi9,bus=pci.0,addr=0xb \
> --device virtio-scsi-pci,id=scsi10,bus=pci.0,addr=0xc \
> --device virtio-scsi-pci,id=scsi11,bus=pci.0,addr=0xd \
> --device virtio-scsi-pci,id=scsi12,bus=pci.0,addr=0xe \
> --device virtio-scsi-pci,id=scsi13,bus=pci.0,addr=0xf \
> --device virtio-scsi-pci,id=scsi14,bus=pci.0,addr=0x10 \
> --device virtio-scsi-pci,id=scsi15,bus=pci.0,addr=0x11 \
> --device virtio-scsi-pci,id=scsi16,bus=pci.0,addr=0x12 \
> --device virtio-scsi-pci,id=scsi17,bus=pci.0,addr=0x13 \
> --device virtio-scsi-pci,id=scsi18,bus=pci.0,addr=0x14 \
> --device virtio-scsi-pci,id=scsi19,bus=pci.0,addr=0x15 \
> --device virtio-scsi-pci,id=scsi20,bus=pci.0,addr=0x16 \
> --device virtio-scsi-pci,id=scsi21,bus=pci.0,addr=0x17 \
> --device virtio-scsi-pci,id=scsi22,bus=pci.0,addr=0x18 \
> --device virtio-scsi-pci,id=scsi23,bus=pci.0,addr=0x19 \
> --device virtio-scsi-pci,id=scsi24,bus=pci.0,addr=0x1a \
> --device virtio-scsi-pci,id=scsi25,bus=pci.0,addr=0x1b \
> --device virtio-scsi-pci,id=scsi26,bus=pci.0,addr=0x1c \
> --device virtio-scsi-pci,id=scsi27,bus=pci.0,addr=0x1d \
> --device virtio-scsi-pci,id=scsi28,bus=pci.0,addr=0x1e \
> --device virtio-scsi-pci,id=scsi29,bus=pci.0,addr=0x1f \
> --device virtio-scsi-pci,id=scsi30,bus=pci.1,addr=0x1 \
> --device virtio-scsi-pci,id=scsi31,bus=pci.1,addr=0x2
> +-device spapr-pci-host-bridge,index=1,id=pci.1 \
> +-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x1 \
> +-device virtio-scsi-pci,id=scsi1,bus=pci.0,addr=0x2 \
> +-device virtio-scsi-pci,id=scsi2,bus=pci.0,addr=0x3 \
> +-device virtio-scsi-pci,id=scsi3,bus=pci.0,addr=0x4 \
> +-device virtio-scsi-pci,id=scsi4,bus=pci.0,addr=0x5 \
> +-device virtio-scsi-pci,id=scsi5,bus=pci.0,addr=0x6 \
> +-device virtio-scsi-pci,id=scsi6,bus=pci.0,addr=0x7 \
> +-device virtio-scsi-pci,id=scsi7,bus=pci.0,addr=0x8 \
> +-device virtio-scsi-pci,id=scsi8,bus=pci.0,addr=0x9 \
> +-device virtio-scsi-pci,id=scsi9,bus=pci.0,addr=0xa \
> +-device virtio-scsi-pci,id=scsi10,bus=pci.0,addr=0xb \
> +-device virtio-scsi-pci,id=scsi11,bus=pci.0,addr=0xc \
> +-device virtio-scsi-pci,id=scsi12,bus=pci.0,addr=0xd \
> +-device virtio-scsi-pci,id=scsi13,bus=pci.0,addr=0xe \
> +-device virtio-scsi-pci,id=scsi14,bus=pci.0,addr=0xf \
> +-device virtio-scsi-pci,id=scsi15,bus=pci.0,addr=0x10 \
> +-device virtio-scsi-pci,id=scsi16,bus=pci.0,addr=0x11 \
> +-device virtio-scsi-pci,id=scsi17,bus=pci.0,addr=0x12 \
> +-device virtio-scsi-pci,id=scsi18,bus=pci.0,addr=0x13 \
> +-device virtio-scsi-pci,id=scsi19,bus=pci.0,addr=0x14 \
> +-device virtio-scsi-pci,id=scsi20,bus=pci.0,addr=0x15 \
> +-device virtio-scsi-pci,id=scsi21,bus=pci.0,addr=0x16 \
> +-device virtio-scsi-pci,id=scsi22,bus=pci.0,addr=0x17 \
> +-device virtio-scsi-pci,id=scsi23,bus=pci.0,addr=0x18 \
> +-device virtio-scsi-pci,id=scsi24,bus=pci.0,addr=0x19 \
> +-device virtio-scsi-pci,id=scsi25,bus=pci.0,addr=0x1a \
> +-device virtio-scsi-pci,id=scsi26,bus=pci.0,addr=0x1b \
> +-device virtio-scsi-pci,id=scsi27,bus=pci.0,addr=0x1c \
> +-device virtio-scsi-pci,id=scsi28,bus=pci.0,addr=0x1d \
> +-device virtio-scsi-pci,id=scsi29,bus=pci.0,addr=0x1e \
> +-device virtio-scsi-pci,id=scsi30,bus=pci.0,addr=0x1f \
> +-device virtio-scsi-pci,id=scsi31,bus=pci.1.0,addr=0x1
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index f1720cb..c0582c3 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -1720,12 +1720,10 @@ mymain(void)
>      DO_TEST("pseries-many-devices",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI);
>      DO_TEST("pseries-many-buses-1",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI);
>      DO_TEST("pseries-many-buses-2",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
> @@ -1741,14 +1739,12 @@ mymain(void)
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
>              QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI,
>              QEMU_CAPS_DEVICE_VFIO_PCI);
>      DO_TEST("pseries-hostdevs-3",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
>              QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI,
>              QEMU_CAPS_DEVICE_VFIO_PCI);
>  
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-2.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-2.xml
> index 62bead5..17ff4c8 100644
> --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-2.xml
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-2.xml
> @@ -22,10 +22,9 @@
>        <model name='spapr-pci-host-bridge'/>
>        <target index='0'/>
>      </controller>
> -    <controller type='pci' index='1' model='pci-bridge'>
> -      <model name='pci-bridge'/>
> -      <target chassisNr='1'/>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> +    <controller type='pci' index='1' model='pci-root'>
> +      <model name='spapr-pci-host-bridge'/>
> +      <target index='1'/>
>      </controller>
>      <hostdev mode='subsystem' type='pci' managed='yes'>
>        <driver name='vfio'/>
> @@ -39,7 +38,7 @@
>        <source>
>          <address domain='0x0005' bus='0x90' slot='0x01' function='0x0'/>
>        </source>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
>      </hostdev>
>      <memballoon model='none'/>
>      <panic model='pseries'/>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-3.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-3.xml
> index 77c0909..58023ec 100644
> --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-3.xml
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-3.xml
> @@ -19,15 +19,13 @@
>        <model name='spapr-pci-host-bridge'/>
>        <target index='0'/>
>      </controller>
> -    <controller type='pci' index='1' model='pci-bridge'>
> -      <model name='pci-bridge'/>
> -      <target chassisNr='1'/>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> +    <controller type='pci' index='1' model='pci-root'>
> +      <model name='spapr-pci-host-bridge'/>
> +      <target index='1'/>
>      </controller>
> -    <controller type='pci' index='2' model='pci-bridge'>
> -      <model name='pci-bridge'/>
> -      <target chassisNr='2'/>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +    <controller type='pci' index='2' model='pci-root'>
> +      <model name='spapr-pci-host-bridge'/>
> +      <target index='2'/>
>      </controller>
>      <hostdev mode='subsystem' type='pci' managed='yes'>
>        <driver name='vfio'/>
> @@ -41,7 +39,7 @@
>        <source>
>          <address domain='0x0001' bus='0x01' slot='0x00' function='0x1'/>
>        </source>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
>      </hostdev>
>      <memballoon model='none'/>
>      <panic model='pseries'/>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-buses-1.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-buses-1.xml
> index 9044936..eb7bb80 100644
> --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-buses-1.xml
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-buses-1.xml
> @@ -22,10 +22,9 @@
>        <model name='spapr-pci-host-bridge'/>
>        <target index='0'/>
>      </controller>
> -    <controller type='pci' index='1' model='pci-bridge'>
> -      <model name='pci-bridge'/>
> -      <target chassisNr='1'/>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> +    <controller type='pci' index='1' model='pci-root'>
> +      <model name='spapr-pci-host-bridge'/>
> +      <target index='1'/>
>      </controller>
>      <memballoon model='none'/>
>      <panic model='pseries'/>
> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-devices.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-devices.xml
> index b596fe6..ff7a08f 100644
> --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-devices.xml
> +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-devices.xml
> @@ -15,110 +15,109 @@
>    <devices>
>      <emulator>/usr/bin/qemu-system-ppc64</emulator>
>      <controller type='scsi' index='0' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='1' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='2' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='3' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='4' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='5' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='6' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='7' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='8' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='9' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='10' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='11' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='12' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='13' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='14' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='15' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='16' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='17' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='18' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='19' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x15' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='20' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x15' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='21' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='22' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x18' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='23' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x18' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='24' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1a' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='25' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1a' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='26' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1c' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='27' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1c' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='28' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1d' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='29' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='30' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
>      </controller>
>      <controller type='scsi' index='31' model='virtio-scsi'>
> -      <address type='pci' domain='0x0000' bus='0x01' slot='0x02' function='0x0'/>
> +      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
>      </controller>
>      <controller type='usb' index='0' model='none'/>
>      <controller type='pci' index='0' model='pci-root'>
>        <model name='spapr-pci-host-bridge'/>
>        <target index='0'/>
>      </controller>
> -    <controller type='pci' index='1' model='pci-bridge'>
> -      <model name='pci-bridge'/>
> -      <target chassisNr='1'/>
> -      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> +    <controller type='pci' index='1' model='pci-root'>
> +      <model name='spapr-pci-host-bridge'/>
> +      <target index='1'/>
>      </controller>
>      <memballoon model='none'/>
>      <panic model='pseries'/>
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index 378cd85..8aac902 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -686,12 +686,10 @@ mymain(void)
>      DO_TEST("pseries-many-devices",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI);
>      DO_TEST("pseries-many-buses-1",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI);
>      DO_TEST("pseries-many-buses-2",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
> @@ -707,14 +705,12 @@ mymain(void)
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
>              QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI,
>              QEMU_CAPS_DEVICE_VFIO_PCI);
>      DO_TEST("pseries-hostdevs-3",
>              QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG,
>              QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
>              QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
> -            QEMU_CAPS_DEVICE_PCI_BRIDGE,
>              QEMU_CAPS_VIRTIO_SCSI,
>              QEMU_CAPS_DEVICE_VFIO_PCI);
>  
> 




More information about the libvir-list mailing list