[PATCH v2 00/29] ppc64 PowerNV machines support

Daniel Henrique Barboza danielhb413 at gmail.com
Tue Feb 1 08:44:19 UTC 2022


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
> 




More information about the libvir-list mailing list