I had previously sent patches adding these new controller types:
pcie-root-port
pcie-switch-upstream-port
pcie-switch-downstream-port
but there were issues with where the device name and guest-visible
attributes should be stored in the XML:
https://www.redhat.com/archives/libvir-list/2015-June/msg01084.html
In the end, I *think* we all agreed with mkletzan's suggestion to use this:
<controller type='pci' model='pcie-root-port'>
<model type='ioh3420'/>
<target chassis='5' port='0x18'/>
...
</controller>
so that is what I implemented this time around.
(note that the stuff in <model> and <target> are almost always
auto-generated by libvirt, just like PCI addresses, but need to remain
stable to preserve guest ABI during migration)
The first 4 patches of the original series (removing restrictions on
attaching a PCI device to a PCIe port or vice versa) were ACKed and
have already been pushed. In this series, there are new patches 1 - 3
which are completely new (2 is a bugfix, 1,3,4 are fixing up the code
to make later additions cleaner), then 5-6 implementing <model>, 7-8
implementing <target>, and finally 9-17 which are V2's of 5-13 in the
original posting.
Laine Stump (17):
conf: reorganize virNetworkDHCPDefParseXML
conf: pay attention to bus minSlot/maxSlot when autoassigning PCI
addresses
qemu: reorganize loop in qemuDomainAssignPCIAddresses
conf: add virDomainControllerDefNew()
conf: add new <model> subelement with type attribute to <controller>
qemu: implement <model> subelement to <controller>
conf: add new <target> subelement with chassisNr attribute to
<controller>
qemu: implement <target chassisNr='n'/> subelement/attribute of
<controller>
qemu: add capabilities bit for device ioh3420
conf: new pci controller model "pcie-root-port"
qemu: support new pci controller model "pcie-root-port"
qemu: add capabilities bit for device x3130-upstream
conf: new pci controller model "pcie-switch-upstream-port"
qemu: support new pci controller model "pcie-switch-upstream-port"
qemu: add capabilities bit for device xio3130-downstream
conf: new pcie-controller model "pcie-switch-downstream-port"
qemu: support new pci controller model "pcie-switch-downstream-port"
docs/formatdomain.html.in | 84 +++++++-
docs/schemas/domaincommon.rng | 42 ++++
src/conf/domain_addr.c | 97 +++++++---
src/conf/domain_addr.h | 12 +-
src/conf/domain_conf.c | 148 +++++++++++---
src/conf/domain_conf.h | 23 +++
src/conf/network_conf.c | 36 ++--
src/qemu/qemu_capabilities.c | 8 +-
src/qemu/qemu_capabilities.h | 5 +-
src/qemu/qemu_command.c | 214 +++++++++++++++++++--
tests/qemucapabilitiesdata/caps_1.2.2-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.3.1-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.4.2-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.5.3-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.6.0-1.caps | 3 +
tests/qemucapabilitiesdata/caps_1.6.50-1.caps | 3 +
tests/qemucapabilitiesdata/caps_2.1.1-1.caps | 3 +
tests/qemuhelptest.c | 10 +-
.../qemuxml2argv-pcie-root-port.args | 10 +
.../qemuxml2argv-pcie-root-port.xml | 36 ++++
.../qemuxml2argv-pcie-switch-downstream-port.args | 18 ++
.../qemuxml2argv-pcie-switch-downstream-port.xml | 44 +++++
.../qemuxml2argv-pcie-switch-upstream-port.args | 12 ++
.../qemuxml2argv-pcie-switch-upstream-port.xml | 37 ++++
tests/qemuxml2argvdata/qemuxml2argv-q35.args | 2 +-
tests/qemuxml2argvdata/qemuxml2argv-q35.xml | 9 +-
tests/qemuxml2argvtest.c | 25 +++
tests/qemuxml2xmloutdata/qemuxml2xmlout-q35.xml | 9 +-
tests/qemuxml2xmltest.c | 3 +
29 files changed, 809 insertions(+), 96 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-root-port.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-root-port.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-switch-downstream-port.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-switch-downstream-port.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-switch-upstream-port.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pcie-switch-upstream-port.xml
--
2.1.0