[PATCH v3 00/29] ppc64 PowerNV machines support

Daniel Henrique Barboza posted 29 patches 2 years, 2 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20220223131952.922228-1-danielhb413@gmail.com
docs/formatdomain.rst                         |  12 +-
docs/schemas/domaincommon.rng                 |  10 ++
src/conf/domain_conf.c                        | 156 ++++++++++++++----
src/conf/domain_conf.h                        |   8 +
src/conf/domain_validate.c                    |   5 +-
src/libvirt_private.syms                      |   1 +
src/qemu/qemu_capabilities.c                  |  19 ++-
src/qemu/qemu_capabilities.h                  |   4 +
src/qemu/qemu_command.c                       |  21 ++-
src/qemu/qemu_domain.c                        |  51 +++++-
src/qemu/qemu_domain.h                        |   4 +-
src/qemu/qemu_domain_address.c                |  64 ++++++-
src/qemu/qemu_validate.c                      |  62 ++++++-
.../qemucapabilitiesdata/caps_5.0.0.ppc64.xml |   2 +
.../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |   2 +
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |   2 +
.../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 +
37 files changed, 848 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 v3 00/29] ppc64 PowerNV machines support
Posted by Daniel Henrique Barboza 2 years, 2 months ago
Hi,

This new version contains changes proposed by Jano. The most notable
change is on patch 9, where pnv_pnv3/pnv_phb4 capabilities are now being
probed and, if the QEMU version isn't high enough, they are cleared from
qemuCaps.

For convenience, the patches that are pending review/acks are patches 14,
17, 19, 20, 22, 23 and 24. 


v2 link: https://listman.redhat.com/archives/libvir-list/2022-January/msg01149.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
  conf: 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: always format pnv-phb3-root-port address
  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                        | 156 ++++++++++++++----
 src/conf/domain_conf.h                        |   8 +
 src/conf/domain_validate.c                    |   5 +-
 src/libvirt_private.syms                      |   1 +
 src/qemu/qemu_capabilities.c                  |  19 ++-
 src/qemu/qemu_capabilities.h                  |   4 +
 src/qemu/qemu_command.c                       |  21 ++-
 src/qemu/qemu_domain.c                        |  51 +++++-
 src/qemu/qemu_domain.h                        |   4 +-
 src/qemu/qemu_domain_address.c                |  64 ++++++-
 src/qemu/qemu_validate.c                      |  62 ++++++-
 .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml |   2 +
 .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |   2 +
 .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |   2 +
 .../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 +
 37 files changed, 848 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.35.1

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

Just to warn any by passer who might want to review the remaining patches: there are
changes in the QEMU side that we would like to make that would make the proposed
support here simpler. The planned changes are:

- add virtual pnv-phb and pnv-phb-root-port devices. These virtual devices will not be
versioned and will be used in all PowerNV machines (powernv8/9/10), meaning that we wouldn't
need to add a pnv-phbN/pnv-phbN-root-port pair for each machine;

- this new virtual device will have its own capability (QEMU_CAPS_DEVICE_PNV_PHB), which
will also simplify what we're doing here - we won't need to snapshot an specific QEMU version
that happened to have user creatable PHBs.


Most of the already reviewed code will be used in the next version. As soon as the 7.1
support is upstream I'll reroll this series with these changes.


Thanks,


Daniel


On 2/23/22 10:19, Daniel Henrique Barboza wrote:
> 
> Hi,
> 
> This new version contains changes proposed by Jano. The most notable
> change is on patch 9, where pnv_pnv3/pnv_phb4 capabilities are now being
> probed and, if the QEMU version isn't high enough, they are cleared from
> qemuCaps.
> 
> For convenience, the patches that are pending review/acks are patches 14,
> 17, 19, 20, 22, 23 and 24.
> 
> 
> v2 link: https://listman.redhat.com/archives/libvir-list/2022-January/msg01149.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
>    conf: 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: always format pnv-phb3-root-port address
>    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                        | 156 ++++++++++++++----
>   src/conf/domain_conf.h                        |   8 +
>   src/conf/domain_validate.c                    |   5 +-
>   src/libvirt_private.syms                      |   1 +
>   src/qemu/qemu_capabilities.c                  |  19 ++-
>   src/qemu/qemu_capabilities.h                  |   4 +
>   src/qemu/qemu_command.c                       |  21 ++-
>   src/qemu/qemu_domain.c                        |  51 +++++-
>   src/qemu/qemu_domain.h                        |   4 +-
>   src/qemu/qemu_domain_address.c                |  64 ++++++-
>   src/qemu/qemu_validate.c                      |  62 ++++++-
>   .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml |   2 +
>   .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |   2 +
>   .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |   2 +
>   .../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 +
>   37 files changed, 848 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
>