[PATCH v2 00/29] ppc64 PowerNV machines support

Daniel Henrique Barboza danielhb413 at gmail.com
Tue Jan 25 20:48:33 UTC 2022


Hi,

This v2 has changes proposed by Peter and Daniel on the v1
review. Peter's reviewed-by tags were kept when applicable.

The usability change made is that, now, we'll fail to launch powernv
domains that has a pnv-phb* device and it's running a QEMU version
that doesn't support these devices to be user creatable. Trying to
run the 'powernv8-basic' domain with a QEMU 6.2.0 binary will result
in an error:

$ sudo ./run tools/virsh define ../tests/qemuxml2argvdata/powernv8-basic.xml 
error: Failed to define domain from ../tests/qemuxml2argvdata/powernv8-basic.xml
error: unsupported configuration: The 'pnv-phb3' device is not supported by this QEMU binary

Using the current QEMU upstream will allow the domain to be defined and
started.


Changes from v1:
- all tests are now using CAPS_LATEST;

- QEMU_CAPS_DEVICE_PNV_PHB3_ROOT_PORT is no longer being used. Capability
  for the pnv-phb3-root-port is infered to exist if the capabilitity for
  its PHB (QEMU_CAPS_DEVICE_PNV_PHB3) is present. Same thing for the
  case of QEMU_CAPS_DEVICE_PNV_PHB4_ROOT_PORT and QEMU_CAPS_DEVICE_PNV_PHB4;

- QEMU_CAPS_DEVICE_PNV_PHB3 and QEMU_CAPS_DEVICE_PNV_PHB4 are no longer
  being probed. They are being set by hand after checking for QEMU
  version in virQEMUCapsInitQMPVersionCaps();

- patch 01 (QEMU ppc64 capabilities for qemu 7.0):
  * dropped since it's already upstream

- patch 09 (forbid powernv domains migration):
  * removed. This will be handled on QEMU side

- patch 14 (new):
  * added documentation of the different semantics 'targetIndex' will have
  for PowerNV PHBs

- several other minor changes suggested by Peter

- v1 link: https://listman.redhat.com/archives/libvir-list/2022-January/msg00902.html


Daniel Henrique Barboza (29):
  qemu_domain.c: add PowerNV machine helpers
  qemu_capabilities.c: use 'MachineIsPowerPC' in DeviceDiskCaps
  qemu_domain: turn qemuDomainMachineIsPSeries() static
  qemu_validate.c: use qemuDomainIsPowerPC() in
    qemuValidateDomainChrDef()
  qemu_domain.c: define ISA as default PowerNV serial
  qemu_validate.c: enhance 'machine type not supported' message
  qemu_domain.c: disable default devices for PowerNV machines
  tests: add basic PowerNV8 test
  qemu: introduce QEMU_CAPS_DEVICE_PNV_PHB3
  conf, qemu: add 'pnv-phb3-root-port' PCI controller model name
  conf, qemu: add 'pnv-phb3' PCI controller model name
  domain_conf.c: fix identation in virDomainControllerDefParseXML()
  conf: parse and format <target chip-id='...'/>
  formatdomain.rst: add 'index' semantics for PowerNV domains
  introduce virDomainControllerIsPowerNVPHB
  conf, qemu: add default 'chip-id' value for pnv-phb3 controllers
  conf, qemu: add default 'targetIndex' value for pnv-phb3 devs
  qemu_command.c: add command line for the pnv-phb3 device
  qemu_domain_address.c: change pnv-phb3 minimal downstream slot
  domain_conf: format pnv-phb3-root-port empty addr
  tests: add pnv-phb3-root-port test
  domain_validate.c: allow targetIndex 0 out of idx 0 for PowerNV PHBs
  domain_conf.c: reject duplicated pnv-phb3 devices
  qemu: introduce QEMU_CAPS_DEVICE_PNV_PHB4
  conf, qemu: add 'pnv-phb4-root-port' PCI controller model name
  domain_conf.c: add phb4-root-port to IsPowerNVRootPort()
  conf, qemu: add 'pnv-phb4' controller model name
  domain_conf.c: add pnv-phb4 to ControllerIsPowerNVPHB()
  tests: add PowerNV9 tests

 docs/formatdomain.rst                         |  12 +-
 docs/schemas/domaincommon.rng                 |  10 ++
 src/conf/domain_conf.c                        | 157 ++++++++++++++----
 src/conf/domain_conf.h                        |   8 +
 src/conf/domain_validate.c                    |   5 +-
 src/libvirt_private.syms                      |   1 +
 src/qemu/qemu_capabilities.c                  |  28 +++-
 src/qemu/qemu_capabilities.h                  |   2 +
 src/qemu/qemu_command.c                       |  21 ++-
 src/qemu/qemu_domain.c                        |  56 ++++++-
 src/qemu/qemu_domain.h                        |   4 +-
 src/qemu/qemu_domain_address.c                |  64 ++++++-
 src/qemu/qemu_validate.c                      |  62 ++++++-
 .../qemucapabilitiesdata/caps_7.0.0.ppc64.xml |   2 +
 .../powernv8-basic.ppc64-latest.args          |  34 ++++
 tests/qemuxml2argvdata/powernv8-basic.xml     |  16 ++
 tests/qemuxml2argvdata/powernv8-dupPHBs.err   |   1 +
 .../powernv8-dupPHBs.ppc64-latest.err         |   1 +
 tests/qemuxml2argvdata/powernv8-dupPHBs.xml   |  27 +++
 .../powernv8-root-port.ppc64-latest.args      |  35 ++++
 tests/qemuxml2argvdata/powernv8-root-port.xml |  17 ++
 .../powernv8-two-sockets.ppc64-latest.args    |  35 ++++
 .../qemuxml2argvdata/powernv8-two-sockets.xml |  26 +++
 .../powernv9-dupPHBs.ppc64-latest.err         |   1 +
 tests/qemuxml2argvdata/powernv9-dupPHBs.xml   |  27 +++
 .../powernv9-root-port.ppc64-latest.args      |  35 ++++
 tests/qemuxml2argvdata/powernv9-root-port.xml |  17 ++
 tests/qemuxml2argvtest.c                      |   7 +
 .../powernv8-basic.ppc64-latest.xml           |  34 ++++
 .../powernv8-root-port.ppc64-latest.xml       |  39 +++++
 .../powernv8-two-sockets.ppc64-latest.xml     |  39 +++++
 .../powernv9-root-port.ppc64-latest.xml       |  39 +++++
 .../qemuxml2xmloutdata/powernv9-root-port.xml |  36 ++++
 tests/qemuxml2xmltest.c                       |   5 +
 34 files changed, 855 insertions(+), 48 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/powernv8-basic.ppc64-latest.args
 create mode 100644 tests/qemuxml2argvdata/powernv8-basic.xml
 create mode 100644 tests/qemuxml2argvdata/powernv8-dupPHBs.err
 create mode 100644 tests/qemuxml2argvdata/powernv8-dupPHBs.ppc64-latest.err
 create mode 100644 tests/qemuxml2argvdata/powernv8-dupPHBs.xml
 create mode 100644 tests/qemuxml2argvdata/powernv8-root-port.ppc64-latest.args
 create mode 100644 tests/qemuxml2argvdata/powernv8-root-port.xml
 create mode 100644 tests/qemuxml2argvdata/powernv8-two-sockets.ppc64-latest.args
 create mode 100644 tests/qemuxml2argvdata/powernv8-two-sockets.xml
 create mode 100644 tests/qemuxml2argvdata/powernv9-dupPHBs.ppc64-latest.err
 create mode 100644 tests/qemuxml2argvdata/powernv9-dupPHBs.xml
 create mode 100644 tests/qemuxml2argvdata/powernv9-root-port.ppc64-latest.args
 create mode 100644 tests/qemuxml2argvdata/powernv9-root-port.xml
 create mode 100644 tests/qemuxml2xmloutdata/powernv8-basic.ppc64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/powernv8-root-port.ppc64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/powernv8-two-sockets.ppc64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/powernv9-root-port.ppc64-latest.xml
 create mode 100644 tests/qemuxml2xmloutdata/powernv9-root-port.xml

-- 
2.34.1




More information about the libvir-list mailing list