1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

conf: new pci controller model pcie-expander-bus

This controller provides a single PCIe port on a new root. It is
similar to pci-expander-bus, intended to provide a bus that can be
associated with a guest-identifiable NUMA node, but is for
machinetypes with PCIe rather than PCI (e.g. q35-based machinetypes).

Aside from PCIe vs. PCI, the other main difference is that a
pci-expander-bus has a companion pci-bridge that is automatically
attached along with it, but pcie-expander-bus has only a single port,
and that port will only connect to a pcie-root-port, or to a
pcie-switch-upstream-port. In order for the bus to be of any use in
the guest, it must have either a pcie-root-port or a
pcie-switch-upstream-port attached (and one or more
pcie-switch-downstream-ports attached to the
pcie-switch-upstream-port).
This commit is contained in:
Laine Stump 2016-03-16 13:37:14 -04:00
parent 0ec0bc85d0
commit bc07251f59
9 changed files with 694 additions and 14 deletions

View File

@ -3103,15 +3103,18 @@
possible values <code>pci-root</code>, <code>pcie-root</code>, possible values <code>pci-root</code>, <code>pcie-root</code>,
<code>pcie-root-port</code>, <code>pci-bridge</code>, <code>pcie-root-port</code>, <code>pci-bridge</code>,
<code>dmi-to-pci-bridge</code>, <code>pcie-switch-upstream-port</code>, <code>dmi-to-pci-bridge</code>, <code>pcie-switch-upstream-port</code>,
<code>pcie-switch-downstream-port</code>, or <code>pci-expander-bus</code>. <code>pcie-switch-downstream-port</code>, <code>pci-expander-bus</code>,
(pci-root and pci-bridge <span class="since">since 1.0.5</span>, or <code>pcie-expander-bus</code>. (pci-root and
pcie-root and dmi-to-pci-bridge <span class="since">since pci-bridge <span class="since">since 1.0.5</span>, pcie-root and
1.1.2</span>, pcie-root-port, pcie-switch-upstream-port, dmi-to-pci-bridge <span class="since">since 1.1.2</span>,
pcie-switch-downstream-port <span class="since">since 1.2.19</span>, pcie-root-port, pcie-switch-upstream-port,
and pci-expander-bus <span class="since">since 1.3.4</span>) pcie-switch-downstream-port <span class="since">since
The root controllers (<code>pci-root</code> and <code>pcie-root</code>) 1.2.19</span>, and pci-expander-bus and
have an optional <code>pcihole64</code> element specifying how big pcie-expander-bus <span class="since">since 1.3.4</span>) The
(in kilobytes, or in the unit specified by <code>pcihole64</code>'s root controllers (<code>pci-root</code>
and <code>pcie-root</code>) have an
optional <code>pcihole64</code> element specifying how big (in
kilobytes, or in the unit specified by <code>pcihole64</code>'s
<code>unit</code> attribute) the 64-bit PCI hole should be. Some guests (like <code>unit</code> attribute) the 64-bit PCI hole should be. Some guests (like
Windows XP or Windows Server 2003) might crash when QEMU and Seabios Windows XP or Windows Server 2003) might crash when QEMU and Seabios
are recent enough to support 64-bit PCI holes, unless this is disabled are recent enough to support 64-bit PCI holes, unless this is disabled
@ -3173,7 +3176,7 @@
</dd> </dd>
<dt><code>busNr</code></dt> <dt><code>busNr</code></dt>
<dd> <dd>
pci-expander-bus controllers can have an pci-expander-bus and pcie-expander-bus controllers can have an
optional <code>busNr</code> attribute (1-254). This will be optional <code>busNr</code> attribute (1-254). This will be
the bus number of the new bus; All bus numbers between that the bus number of the new bus; All bus numbers between that
specified and 255 will be available only for assignment to specified and 255 will be available only for assignment to
@ -3188,6 +3191,23 @@
for the pci-bridge that is automatically attached to it (if for the pci-bridge that is automatically attached to it (if
you plan on adding more pci-bridges to the hierarchy of the you plan on adding more pci-bridges to the hierarchy of the
bus, you should manually set busNr to a lower value). bus, you should manually set busNr to a lower value).
<p>
A similar algorithm is used for automatically determining
the busNr attribute for pcie-expander-bus, but since the
pcie-expander-bus doesn't have any built-in pci-bridge, the
2nd bus-number is just being reserved for the pcie-root-port
that must necessarily be connected to the bus in order to
actually plug in an endpoint device. If you intend to plug
multiple devices into a pcie-expander-bus, you must instead
connect a pcie-switch-upstream-port to the
pcie-expander-bus, and multiple pcie-switch-downstream-ports
to the pcie-switch-downstream-port, and of course for this
to work properly, you will need to decrease the
pcie-expander-bus' busNr accordingly so that there are
enough unused bus numbers above it to accomodate giving out
one bus number for the upstream-port and one for each
downstream-port).
</p>
</dd> </dd>
<dt><code>&lt;node&gt;</code></dt> <dt><code>&lt;node&gt;</code></dt>
<dd> <dd>

View File

@ -1788,6 +1788,8 @@
<value>xio3130-downstream</value> <value>xio3130-downstream</value>
<!-- implementations of 'pci-expander-bus' --> <!-- implementations of 'pci-expander-bus' -->
<value>pxb</value> <value>pxb</value>
<!-- implementations of 'pcie-expander-bus' -->
<value>pxb-pcie</value>
</choice> </choice>
</attribute> </attribute>
<empty/> <empty/>
@ -1846,6 +1848,7 @@
<value>pcie-switch-upstream-port</value> <value>pcie-switch-upstream-port</value>
<value>pcie-switch-downstream-port</value> <value>pcie-switch-downstream-port</value>
<value>pci-expander-bus</value> <value>pci-expander-bus</value>
<value>pcie-expander-bus</value>
</choice> </choice>
</attribute> </attribute>
</group> </group>

View File

@ -59,8 +59,11 @@ virDomainPCIControllerModelToConnectType(virDomainControllerModelPCI model)
return VIR_PCI_CONNECT_TYPE_PCI_DEVICE; return VIR_PCI_CONNECT_TYPE_PCI_DEVICE;
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
/* dmi-to-pci-bridge is treated like a PCIe device case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
* (e.g. it can be plugged directly into pcie-root) /* dmi-to-pci-bridge and pcie-expander-bus are treated like
* PCIe devices (the part of pcie-expander-bus that is plugged
* in isn't the expander bus itself, but a companion device
* used for setting it up).
*/ */
return VIR_PCI_CONNECT_TYPE_PCIE_DEVICE; return VIR_PCI_CONNECT_TYPE_PCIE_DEVICE;
@ -279,6 +282,16 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
bus->minSlot = 0; bus->minSlot = 0;
bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST; bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
/* single slot, no hotplug, only accepts pcie-root-port or
* pcie-switch-upstream-port.
*/
bus->flags = (VIR_PCI_CONNECT_TYPE_PCIE_ROOT_PORT
| VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT);
bus->minSlot = 0;
bus->maxSlot = 0;
break;
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid PCI controller model %d"), model); _("Invalid PCI controller model %d"), model);

View File

@ -321,7 +321,8 @@ VIR_ENUM_IMPL(virDomainControllerModelPCI, VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST,
"pcie-root-port", "pcie-root-port",
"pcie-switch-upstream-port", "pcie-switch-upstream-port",
"pcie-switch-downstream-port", "pcie-switch-downstream-port",
"pci-expander-bus") "pci-expander-bus",
"pcie-expander-bus")
VIR_ENUM_IMPL(virDomainControllerPCIModelName, VIR_ENUM_IMPL(virDomainControllerPCIModelName,
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST,
@ -331,7 +332,8 @@ VIR_ENUM_IMPL(virDomainControllerPCIModelName,
"ioh3420", "ioh3420",
"x3130-upstream", "x3130-upstream",
"xio3130-downstream", "xio3130-downstream",
"pxb") "pxb",
"pxb-pcie")
VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST, VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
"auto", "auto",

View File

@ -760,6 +760,7 @@ typedef enum {
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT, VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT,
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT, VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT,
VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS, VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS,
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS,
VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST
} virDomainControllerModelPCI; } virDomainControllerModelPCI;
@ -772,6 +773,7 @@ typedef enum {
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM,
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM,
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB, VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB,
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE,
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST
} virDomainControllerPCIModelName; } virDomainControllerPCIModelName;

View File

@ -1375,6 +1375,7 @@ qemuDomainPCIControllerSetDefaultModelName(virDomainControllerDefPtr cont)
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
*modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB; *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB;
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
@ -1579,6 +1580,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
options->port = addr->slot; options->port = addr->slot;
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
if (options->busNr == -1) if (options->busNr == -1)
options->busNr = qemuDomainAddressFindNewBusNr(def); options->busNr = qemuDomainAddressFindNewBusNr(def);
if (options->busNr == -1) { if (options->busNr == -1) {

View File

@ -0,0 +1,247 @@
<domain type='qemu'>
<name>pcie-expander-bus-test</name>
<uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>16</vcpu>
<os>
<type arch='x86_64' machine='q35'>hvm</type>
<boot dev='hd'/>
</os>
<cpu>
<topology sockets='2' cores='4' threads='2'/>
<numa>
<cell cpus='0-7' memory='109550' unit='KiB'/>
<cell cpus='8-15' memory='109550' unit='KiB'/>
</numa>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='block' device='disk'>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='sda' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
<model name='i82801b11-bridge'/>
</controller>
<controller type='pci' index='2' model='pci-bridge'>
<model name='pci-bridge'/>
<target chassisNr='56'/>
</controller>
<controller type='pci' index='3' model='pcie-expander-bus'>
<model name='pxb-pcie'/>
<target busNr='254'>
<node>0</node>
</target>
<address type='pci' bus='0x00' slot='4'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<target busNr='220'>
<node>1</node>
</target>
<address type='pci' bus='0x03'/>
</controller>
<controller type='pci' index='5' model='pcie-switch-upstream-port'>
<address type='pci' bus='0x04'/>
</controller>
<controller type='pci' index='6' model='pcie-switch-downstream-port'/>
<controller type='pci' index='7' model='pcie-switch-downstream-port'/>
<controller type='pci' index='8' model='pcie-switch-downstream-port'/>
<controller type='pci' index='9' model='pcie-switch-downstream-port'/>
<controller type='pci' index='10' model='pcie-switch-downstream-port'/>
<controller type='pci' index='11' model='pcie-switch-downstream-port'/>
<controller type='pci' index='12' model='pcie-switch-downstream-port'/>
<controller type='pci' index='13' model='pcie-switch-downstream-port'/>
<controller type='pci' index='14' model='pcie-switch-downstream-port'/>
<controller type='pci' index='15' model='pcie-switch-downstream-port'/>
<controller type='pci' index='16' model='pcie-switch-downstream-port'/>
<controller type='pci' index='17' model='pcie-switch-downstream-port'/>
<controller type='pci' index='18' model='pcie-switch-downstream-port'/>
<controller type='pci' index='19' model='pcie-switch-downstream-port'/>
<controller type='pci' index='20' model='pcie-switch-downstream-port'/>
<controller type='pci' index='21' model='pcie-switch-downstream-port'/>
<controller type='pci' index='22' model='pcie-switch-downstream-port'/>
<controller type='pci' index='23' model='pcie-switch-downstream-port'/>
<controller type='pci' index='24' model='pcie-switch-downstream-port'/>
<controller type='pci' index='25' model='pcie-switch-downstream-port'/>
<controller type='pci' index='26' model='pcie-switch-downstream-port'/>
<controller type='pci' index='27' model='pcie-switch-downstream-port'/>
<controller type='pci' index='28' model='pcie-switch-downstream-port'/>
<controller type='pci' index='29' model='pcie-switch-downstream-port'/>
<controller type='pci' index='30' model='pcie-switch-downstream-port'/>
<controller type='pci' index='31' model='pcie-switch-downstream-port'/>
<controller type='pci' index='32' model='pcie-switch-downstream-port'/>
<controller type='pci' index='33' model='pcie-switch-downstream-port'/>
<controller type='pci' index='34' model='pcie-switch-downstream-port'/>
<controller type='pci' index='35' model='pcie-switch-downstream-port'/>
<controller type='pci' index='36' model='pcie-switch-downstream-port'/>
<controller type='pci' index='37' model='pcie-switch-downstream-port'/>
<interface type='user'>
<mac address='52:54:00:f1:95:51'/>
<model type='rtl8139'/>
<address type='pci' bus='6'/>
</interface>
<interface type='user'>
<mac address='52:54:00:5c:c6:1a'/>
<model type='e1000'/>
<address type='pci' bus='07'/>
</interface>
<interface type='user'>
<mac address='52:54:00:39:97:ac'/>
<model type='e1000'/>
<address type='pci' bus='8'/>
</interface>
<interface type='user'>
<mac address='52:54:00:ee:b9:a8'/>
<model type='e1000'/>
<address type='pci' bus='9'/>
</interface>
<interface type='user'>
<mac address='52:54:00:a9:f7:17'/>
<model type='e1000'/>
<address type='pci' bus='10'/>
</interface>
<interface type='user'>
<mac address='52:54:00:df:2b:f3'/>
<model type='e1000'/>
<address type='pci' bus='11'/>
</interface>
<interface type='user'>
<mac address='52:54:00:78:94:b4'/>
<model type='e1000'/>
<address type='pci' bus='12'/>
</interface>
<interface type='user'>
<mac address='52:54:00:6b:9b:06'/>
<model type='e1000'/>
<address type='pci' bus='13'/>
</interface>
<interface type='user'>
<mac address='52:54:00:17:df:bc'/>
<model type='e1000'/>
<address type='pci' bus='14'/>
</interface>
<interface type='user'>
<mac address='52:54:00:3b:d0:51'/>
<model type='e1000'/>
<address type='pci' bus='15'/>
</interface>
<interface type='user'>
<mac address='52:54:00:8d:2d:17'/>
<model type='e1000'/>
<address type='pci' bus='16'/>
</interface>
<interface type='user'>
<mac address='52:54:00:a7:66:af'/>
<model type='e1000'/>
<address type='pci' bus='17'/>
</interface>
<interface type='user'>
<mac address='52:54:00:54:ab:d7'/>
<model type='e1000'/>
<address type='pci' bus='18'/>
</interface>
<interface type='user'>
<mac address='52:54:00:1f:99:90'/>
<model type='e1000'/>
<address type='pci' bus='19'/>
</interface>
<interface type='user'>
<mac address='52:54:00:c8:43:87'/>
<model type='e1000'/>
<address type='pci' bus='20'/>
</interface>
<interface type='user'>
<mac address='52:54:00:df:22:b2'/>
<model type='e1000'/>
<address type='pci' bus='21'/>
</interface>
<interface type='user'>
<mac address='52:54:00:d2:9a:47'/>
<model type='e1000'/>
<address type='pci' bus='22'/>
</interface>
<interface type='user'>
<mac address='52:54:00:86:05:e2'/>
<model type='e1000'/>
<address type='pci' bus='23'/>
</interface>
<interface type='user'>
<mac address='52:54:00:8c:1c:c2'/>
<model type='e1000'/>
<address type='pci' bus='24'/>
</interface>
<interface type='user'>
<mac address='52:54:00:48:58:92'/>
<model type='e1000'/>
<address type='pci' bus='25'/>
</interface>
<interface type='user'>
<mac address='52:54:00:99:e5:bf'/>
<model type='e1000'/>
<address type='pci' bus='26'/>
</interface>
<interface type='user'>
<mac address='52:54:00:b1:8c:25'/>
<model type='e1000'/>
<address type='pci' bus='27'/>
</interface>
<interface type='user'>
<mac address='52:54:00:60:e0:d0'/>
<model type='e1000'/>
<address type='pci' bus='28'/>
</interface>
<interface type='user'>
<mac address='52:54:00:37:00:6a'/>
<model type='e1000'/>
<address type='pci' bus='29'/>
</interface>
<interface type='user'>
<mac address='52:54:00:c7:c8:ad'/>
<model type='e1000'/>
<address type='pci' bus='30'/>
</interface>
<interface type='user'>
<mac address='52:54:00:4e:a7:cf'/>
<model type='e1000'/>
<address type='pci' bus='31'/>
</interface>
<interface type='user'>
<mac address='52:54:00:00:79:69'/>
<model type='e1000'/>
<address type='pci' bus='32'/>
</interface>
<interface type='user'>
<mac address='52:54:00:47:00:6f'/>
<model type='e1000'/>
<address type='pci' bus='33'/>
</interface>
<interface type='user'>
<mac address='52:54:00:2a:8c:8b'/>
<model type='e1000'/>
<address type='pci' bus='34'/>
</interface>
<interface type='user'>
<mac address='52:54:00:ec:d5:e3'/>
<model type='e1000'/>
<address type='pci' bus='35'/>
</interface>
<interface type='user'>
<mac address='52:54:00:7e:6e:c8'/>
<model type='e1000'/>
<address type='pci' bus='36'/>
</interface>
<interface type='user'>
<mac address='52:54:00:7e:6d:c9'/>
<model type='e1000'/>
<address type='pci' bus='37'/>
</interface>
<memballoon model='none'/>
</devices>
</domain>

View File

@ -0,0 +1,384 @@
<domain type='qemu'>
<name>pcie-expander-bus-test</name>
<uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>16</vcpu>
<os>
<type arch='x86_64' machine='q35'>hvm</type>
<boot dev='hd'/>
</os>
<cpu>
<topology sockets='2' cores='4' threads='2'/>
<numa>
<cell id='0' cpus='0-7' memory='109550' unit='KiB'/>
<cell id='1' cpus='8-15' memory='109550' unit='KiB'/>
</numa>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='block' device='disk'>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='sda' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
<model name='i82801b11-bridge'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
</controller>
<controller type='pci' index='2' model='pci-bridge'>
<model name='pci-bridge'/>
<target chassisNr='56'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='3' model='pcie-expander-bus'>
<model name='pxb-pcie'/>
<target busNr='254'>
<node>0</node>
</target>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<model name='ioh3420'/>
<target chassis='4' port='0x0' busNr='220'>
<node>1</node>
</target>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='5' model='pcie-switch-upstream-port'>
<model name='x3130-upstream'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='6' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='6' port='0x0'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='7' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='7' port='0x1'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x01' function='0x0'/>
</controller>
<controller type='pci' index='8' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='8' port='0x2'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x02' function='0x0'/>
</controller>
<controller type='pci' index='9' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='9' port='0x3'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x03' function='0x0'/>
</controller>
<controller type='pci' index='10' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='10' port='0x4'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x04' function='0x0'/>
</controller>
<controller type='pci' index='11' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='11' port='0x5'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x05' function='0x0'/>
</controller>
<controller type='pci' index='12' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='12' port='0x6'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x06' function='0x0'/>
</controller>
<controller type='pci' index='13' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='13' port='0x7'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x07' function='0x0'/>
</controller>
<controller type='pci' index='14' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='14' port='0x8'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x08' function='0x0'/>
</controller>
<controller type='pci' index='15' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='15' port='0x9'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x09' function='0x0'/>
</controller>
<controller type='pci' index='16' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='16' port='0xa'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0a' function='0x0'/>
</controller>
<controller type='pci' index='17' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='17' port='0xb'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0b' function='0x0'/>
</controller>
<controller type='pci' index='18' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='18' port='0xc'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0c' function='0x0'/>
</controller>
<controller type='pci' index='19' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='19' port='0xd'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0d' function='0x0'/>
</controller>
<controller type='pci' index='20' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='20' port='0xe'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0e' function='0x0'/>
</controller>
<controller type='pci' index='21' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='21' port='0xf'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x0f' function='0x0'/>
</controller>
<controller type='pci' index='22' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='22' port='0x10'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x10' function='0x0'/>
</controller>
<controller type='pci' index='23' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='23' port='0x11'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x11' function='0x0'/>
</controller>
<controller type='pci' index='24' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='24' port='0x12'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x12' function='0x0'/>
</controller>
<controller type='pci' index='25' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='25' port='0x13'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x13' function='0x0'/>
</controller>
<controller type='pci' index='26' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='26' port='0x14'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x14' function='0x0'/>
</controller>
<controller type='pci' index='27' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='27' port='0x15'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x15' function='0x0'/>
</controller>
<controller type='pci' index='28' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='28' port='0x16'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x16' function='0x0'/>
</controller>
<controller type='pci' index='29' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='29' port='0x17'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x17' function='0x0'/>
</controller>
<controller type='pci' index='30' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='30' port='0x18'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x18' function='0x0'/>
</controller>
<controller type='pci' index='31' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='31' port='0x19'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x19' function='0x0'/>
</controller>
<controller type='pci' index='32' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='32' port='0x1a'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1a' function='0x0'/>
</controller>
<controller type='pci' index='33' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='33' port='0x1b'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1b' function='0x0'/>
</controller>
<controller type='pci' index='34' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='34' port='0x1c'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1c' function='0x0'/>
</controller>
<controller type='pci' index='35' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='35' port='0x1d'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1d' function='0x0'/>
</controller>
<controller type='pci' index='36' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='36' port='0x1e'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1e' function='0x0'/>
</controller>
<controller type='pci' index='37' model='pcie-switch-downstream-port'>
<model name='xio3130-downstream'/>
<target chassis='37' port='0x1f'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x1f' function='0x0'/>
</controller>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
</controller>
<interface type='user'>
<mac address='52:54:00:f1:95:51'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:5c:c6:1a'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:39:97:ac'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:ee:b9:a8'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:a9:f7:17'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:df:2b:f3'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:78:94:b4'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0c' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:6b:9b:06'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0d' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:17:df:bc'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0e' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:3b:d0:51'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x0f' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:8d:2d:17'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x10' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:a7:66:af'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x11' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:54:ab:d7'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x12' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:1f:99:90'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x13' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:c8:43:87'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x14' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:df:22:b2'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x15' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:d2:9a:47'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x16' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:86:05:e2'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x17' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:8c:1c:c2'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x18' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:48:58:92'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x19' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:99:e5:bf'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1a' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:b1:8c:25'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1b' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:60:e0:d0'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1c' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:37:00:6a'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1d' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:c7:c8:ad'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1e' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:4e:a7:cf'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x1f' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:00:79:69'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x20' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:47:00:6f'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x21' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:2a:8c:8b'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x22' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:ec:d5:e3'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x23' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:7e:6e:c8'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x24' slot='0x00' function='0x0'/>
</interface>
<interface type='user'>
<mac address='52:54:00:7e:6d:c9'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x25' slot='0x00' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='none'/>
</devices>
</domain>

View File

@ -647,6 +647,13 @@ mymain(void)
DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE, DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE,
QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_PXB); QEMU_CAPS_DEVICE_PXB);
DO_TEST_FULL("pcie-expander-bus", WHEN_ACTIVE,
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_FULL("hostdev-scsi-lsi", WHEN_ACTIVE, DO_TEST_FULL("hostdev-scsi-lsi", WHEN_ACTIVE,