[PATCH v2 00/24] Support multiple PHBs for pSeries guests

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

 



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

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux