[PATCH v2 00/29] ppc64 PowerNV machines support

Daniel Henrique Barboza posted 29 patches 2 years, 3 months ago
Test syntax-check failed
Failed in applying to current master (apply log)
There is a newer version of this series
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
[PATCH v2 00/29] ppc64 PowerNV machines support
Posted by Daniel Henrique Barboza 2 years, 3 months ago
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

Re: [PATCH v2 00/29] ppc64 PowerNV machines support
Posted by Daniel Henrique Barboza 2 years, 2 months ago
Hi,


The patches doesn't apply on master anymore due to new capabilities being
added in mainline, so I've rebased the patches with latest master here in case
someone wants to test them:


https://gitlab.com/danielhb/libvirt/-/tree/pnv_v2



Thanks,


Daniel


On 1/25/22 17:48, Daniel Henrique Barboza wrote:
> 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
> 

Re: [PATCH v2 00/29] ppc64 PowerNV machines support
Posted by Daniel Henrique Barboza 2 years, 2 months ago
Ping

On 1/25/22 17:48, Daniel Henrique Barboza wrote:
> 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
>