[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH v3 00/26] Multiple PHBs and hostdev isolation for pSeries guests



Changes from [v2]:

  * support hot(un)plug properly;

  * add documentation.

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.

Known limitations:

  * 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.

Reviewed-by tags have been collected, so figuring out which
patches are still in need of reviewing is pretty easy.

[v1] https://www.redhat.com/archives/libvir-list/2017-June/msg00110.html
[v2] https://www.redhat.com/archives/libvir-list/2017-June/msg00695.html

Andrea Bolognani (26):
  conf: Remove obsolete comment
  conf: Make virDomainPCIAddressSetGrow() private
  conf: Make virDomainPCIAddressFlagsCompatible() private
  conf: Tweak virDomainPCIAddressGetNextAddr() signature
  qemu: Clean up qemuDomainAttachHostPCIDevice()
  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 conventions
  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
  news: Update for multiple PHBs and hostdev isolation

 docs/formatdomain.html.in                          |   5 +
 docs/news.xml                                      |  21 ++
 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                             | 222 ++++++++++++------
 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                     | 261 +++++++++++++++++++--
 src/qemu/qemu_hotplug.c                            |  23 +-
 .../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 +++-
 63 files changed, 1637 insertions(+), 216 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]