Changes from [v1]:
* address review comments;
* implement a much better isolation algorithm that doesn't
require parsing and formatting the isolation group and
can handle more dynamic scenarios, such as empty PHBs
changing their isolation groups to accomodate hotplugged
hostdevs;
* add more test cases.
Reviewed-by tags have been collected, so figuring out which
patches are still in need of reviewing is pretty easy. As
an exception, patches 12 and 13 are unchanged but don't
carry the tag due to the required documentation being still
missing.
Known limitations:
* hot(un)plug is still not handled
- shouldn't be too much work to fix this, but I though
it would be better to send out the code now rather
than holding it up further, as most of it shouldn't
change anyway;
* hostdevs in IOMMU group 0 are not handled properly
- the default isolation group is currently 0, which
means hostdevs in IOMMU group 0 will be assigned
addresses as if they were emulated devices and will
not be isolated properly. Fixing this will be a lot
of work because it requires cleaning up the the code
that instantiates pretty much anything embedding a
virDomainDeviceInfo, which is... A lot of things.
Luckily, IOMMU group 0 will probably not contain any
devices that are actually usable as hostdevs, so it
should be okay to fix this in a follow-up series
rather than upfront;
* documentation is still missing
- I'll take care of that once the code is
feature-complete, eg. the first item has been solved;
* no epic cover letter this time around
- apologies to all my fans :(
[v1]
https://www.redhat.com/archives/libvir-list/2017-June/msg00110.html
Andrea Bolognani (24):
conf: Remove obsolete comment
conf: Make virDomainPCIAddressSetGrow() private
conf: Make virDomainPCIAddressFlagsCompatible() private
conf: Tweak virDomainPCIAddressGetNextAddr() signature
tests: Update qemumemlock data
tests: Mock IOMMU groups
conf: Simplify slot allocation
qemu: Allow qemuBuildControllerDevStr() to return NULL
qemu: Tweak index number checking
conf: Move index number checking to drivers
qemu: Relax pci-root index requirement for pSeries guests
conf: Parse and format <target index='...'/>
conf: Add 'spapr-pci-host-bridge' controller model
qemu: Automatically pick target index and model for pci-root
controllers
qemu: Introduce QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE
qemu: Deal with PHB naming convention
qemu: Use multiple PHBs for pSeries guests
tests: Add tests for pSeries guests with multiple PHBs
tests: Add baseline tests for automatic PHB usage
qemu: Use PHBs to fill holes in PCI bus numbering
qemu: Use PHBs when extending the guest PCI topology
conf: Introduce isolation groups
conf: Implement isolation rules
qemu: Isolate hostdevs on pSeries guests
docs/schemas/domaincommon.rng | 7 +
src/bhyve/bhyve_device.c | 4 +-
src/bhyve/bhyve_domain.c | 15 ++
src/conf/device_conf.h | 14 +-
src/conf/domain_addr.c | 199 +++++++++++------
src/conf/domain_addr.h | 38 ++--
src/conf/domain_conf.c | 31 ++-
src/conf/domain_conf.h | 2 +
src/libvirt_private.syms | 2 -
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 148 ++++++++++--
src/qemu/qemu_command.h | 9 +-
src/qemu/qemu_domain.c | 14 ++
src/qemu/qemu_domain_address.c | 248 +++++++++++++++++++--
src/qemu/qemu_hotplug.c | 5 +-
.../qemuargv2xmldata/qemuargv2xml-pseries-disk.xml | 5 +-
.../qemuargv2xml-pseries-nvram.xml | 5 +-
tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 +
.../qemumemlock-pc-hardlimit+hostdev.xml | 2 +-
.../qemumemlock-pc-hardlimit+locked+hostdev.xml | 2 +-
tests/qemumemlockdata/qemumemlock-pc-hostdev.xml | 2 +-
.../qemumemlock-pc-locked+hostdev.xml | 2 +-
.../qemumemlock-pseries-hardlimit+hostdev.xml | 2 +-
...emumemlock-pseries-hardlimit+locked+hostdev.xml | 2 +-
.../qemumemlock-pseries-hostdev.xml | 2 +-
.../qemumemlock-pseries-locked+hostdev.xml | 2 +-
tests/qemumemlocktest.c | 21 +-
.../qemuxml2argv-pseries-hostdevs-1.args | 25 +++
.../qemuxml2argv-pseries-hostdevs-1.xml | 38 ++++
.../qemuxml2argv-pseries-hostdevs-2.args | 25 +++
.../qemuxml2argv-pseries-hostdevs-2.xml | 37 +++
.../qemuxml2argv-pseries-hostdevs-3.args | 24 ++
.../qemuxml2argv-pseries-hostdevs-3.xml | 31 +++
.../qemuxml2argv-pseries-many-buses-1.args | 22 ++
.../qemuxml2argv-pseries-many-buses-1.xml | 19 ++
.../qemuxml2argv-pseries-many-buses-2.args | 22 ++
.../qemuxml2argv-pseries-many-buses-2.xml | 18 ++
.../qemuxml2argv-pseries-many-devices.args | 53 +++++
.../qemuxml2argv-pseries-many-devices.xml | 48 ++++
.../qemuxml2argv-pseries-phb-default-missing.args | 22 ++
.../qemuxml2argv-pseries-phb-default-missing.xml | 16 ++
.../qemuxml2argv-pseries-phb-simple.args | 22 ++
.../qemuxml2argv-pseries-phb-simple.xml | 17 ++
tests/qemuxml2argvtest.c | 64 +++++-
.../qemuxml2xmlout-panic-pseries.xml | 5 +-
.../qemuxml2xmlout-ppc64-usb-controller-legacy.xml | 5 +-
.../qemuxml2xmlout-ppc64-usb-controller.xml | 5 +-
.../qemuxml2xmlout-pseries-hostdevs-1.xml | 54 +++++
.../qemuxml2xmlout-pseries-hostdevs-2.xml | 50 +++++
.../qemuxml2xmlout-pseries-hostdevs-3.xml | 47 ++++
...xml => qemuxml2xmlout-pseries-many-buses-1.xml} | 19 +-
...xml => qemuxml2xmlout-pseries-many-buses-2.xml} | 20 +-
.../qemuxml2xmlout-pseries-many-devices.xml | 125 +++++++++++
.../qemuxml2xmlout-pseries-nvram.xml | 5 +-
.../qemuxml2xmlout-pseries-panic-missing.xml | 5 +-
.../qemuxml2xmlout-pseries-panic-no-address.xml | 5 +-
...qemuxml2xmlout-pseries-phb-default-missing.xml} | 18 +-
...m.xml => qemuxml2xmlout-pseries-phb-simple.xml} | 18 +-
tests/qemuxml2xmltest.c | 59 ++++-
tests/virpcimock.c | 43 +++-
61 files changed, 1562 insertions(+), 211 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-1.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-1.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-2.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-hostdevs-3.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-1.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-2.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-buses-2.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-many-devices.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-phb-default-missing.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-phb-default-missing.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-phb-simple.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-phb-simple.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-1.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-hostdevs-3.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-nvram.xml =>
qemuxml2xmlout-pseries-many-buses-1.xml} (55%)
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-nvram.xml =>
qemuxml2xmlout-pseries-many-buses-2.xml} (54%)
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-many-devices.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-nvram.xml =>
qemuxml2xmlout-pseries-phb-default-missing.xml} (56%)
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-nvram.xml =>
qemuxml2xmlout-pseries-phb-simple.xml} (56%)
--
2.7.5