[libvirt] [PATCH 07/14] conf: Add VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SPAPR

Pavel Hrdina phrdina at redhat.com
Thu Nov 16 13:22:07 UTC 2017


On Wed, Nov 15, 2017 at 12:50:10PM +0100, Andrea Bolognani wrote:
> We can finally introduce a specific target type for the spapr-vty
> device used by pSeries guests, which means isa-serial will no longer
> show up to confuse users.
> 
> We make sure migration works in both directions by interpreting the
> isa-serial target type, or the lack of target type, appropriately
> when parsing the guest XML, and skipping the newly-introduced type
> when formatting if for migration. We also verify that spapr-vty is
> not used for non-pSeries guests and add a bunch of test cases.
> 
> This commit is best viewed with 'git diff -w'.

It would be probably good idea to split it into two patches, one
that changes all the if-else conditions to switch and second where
the actual new code is introduced.

> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1511421
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
>  docs/formatdomain.html.in                          |  11 +-
>  docs/schemas/domaincommon.rng                      |   1 +
>  src/conf/domain_conf.c                             |   5 +-
>  src/conf/domain_conf.h                             |   1 +
>  src/qemu/qemu_command.c                            | 115 +++++++++++----------
>  src/qemu/qemu_domain.c                             |  38 ++++++-
>  src/qemu/qemu_domain_address.c                     |   1 +
>  .../qemuxml2argv-pseries-basic.args                |   2 +-
>  .../qemuxml2argv-pseries-console-native.args       |   1 +
>  .../qemuxml2argv-pseries-console-native.xml        |  17 +++
>  ...gs => qemuxml2argv-pseries-console-virtio.args} |  10 +-
>  .../qemuxml2argv-pseries-console-virtio.xml        |  19 ++++
>  .../qemuxml2argv-pseries-cpu-compat-power9.args    |   2 +-
>  .../qemuxml2argv-pseries-cpu-compat.args           |   2 +-
>  .../qemuxml2argv-pseries-cpu-exact.args            |   2 +-
>  .../qemuxml2argv-pseries-cpu-le.args               |   2 +-
>  .../qemuxml2argv-pseries-panic-missing.args        |   2 +-
>  .../qemuxml2argv-pseries-panic-no-address.args     |   2 +-
>  ...qemuxml2argv-pseries-serial+console-native.args |   1 +
>  .../qemuxml2argv-pseries-serial+console-native.xml |  18 ++++
>  .../qemuxml2argv-pseries-serial-compat.args        |   1 +
>  .../qemuxml2argv-pseries-serial-compat.xml         |  19 ++++
>  ...qemuxml2argv-pseries-serial-invalid-machine.xml |  19 ++++
>  ...rgs => qemuxml2argv-pseries-serial-native.args} |   7 +-
>  .../qemuxml2argv-pseries-serial-native.xml         |  16 +++
>  .../qemuxml2argv-pseries-usb-default.args          |   2 +-
>  .../qemuxml2argv-pseries-usb-kbd.args              |   2 +-
>  .../qemuxml2argv-pseries-usb-multi.args            |   2 +-
>  .../qemuxml2argv-pseries-vio-user-assigned.args    |   4 +-
>  .../qemuxml2argvdata/qemuxml2argv-pseries-vio.args |   4 +-
>  tests/qemuxml2argvtest.c                           |  16 +++
>  .../qemuxml2xmlout-panic-pseries.xml               |   2 +-
>  .../qemuxml2xmlout-pseries-console-native.xml      |   1 +
>  ...l => qemuxml2xmlout-pseries-console-virtio.xml} |  16 ++-
>  .../qemuxml2xmlout-pseries-cpu-compat-power9.xml   |   2 +-
>  .../qemuxml2xmlout-pseries-cpu-compat.xml          |   2 +-
>  .../qemuxml2xmlout-pseries-cpu-exact.xml           |   2 +-
>  .../qemuxml2xmlout-pseries-panic-missing.xml       |   2 +-
>  .../qemuxml2xmlout-pseries-panic-no-address.xml    |   2 +-
>  ...emuxml2xmlout-pseries-serial+console-native.xml |   1 +
>  .../qemuxml2xmlout-pseries-serial-compat.xml       |   1 +
>  ...ml => qemuxml2xmlout-pseries-serial-native.xml} |   8 +-
>  tests/qemuxml2xmltest.c                            |  15 +++
>  43 files changed, 288 insertions(+), 110 deletions(-)
>  create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-native.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-native.xml
>  copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-console-virtio.args} (59%)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-virtio.xml
>  create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial+console-native.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial+console-native.xml
>  create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-compat.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-compat.xml
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-invalid-machine.xml
>  copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-serial-native.args} (70%)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-native.xml
>  create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-console-native.xml
>  copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-panic-pseries.xml => qemuxml2xmlout-pseries-console-virtio.xml} (74%)
>  create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-serial+console-native.xml
>  create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-serial-compat.xml
>  copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-panic-pseries.xml => qemuxml2xmlout-pseries-serial-native.xml} (81%)
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 8dbea6af7..7ff097d65 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -6526,10 +6526,13 @@ qemu-kvm -net nic,model=? /dev/null
>        specifies the port number. Ports are numbered starting from 0. There are
>        usually 0, 1 or 2 serial ports. There is also an optional
>        <code>type</code> attribute <span class="since">since 1.0.2</span>
> -      which has three choices for its value, one is <code>isa-serial</code>,
> -      then <code>usb-serial</code> and last one is <code>pci-serial</code>.
> -      If <code>type</code> is missing, <code>isa-serial</code> will be used by
> -      default. For <code>usb-serial</code> an optional sub-element
> +      which can be used to pick between <code>isa-serial</code>,
> +      <code>usb-serial</code>, <code>pci-serial</code> and,
> +      <span class="since">since 3.10.0</span>, <code>spapr-vty</code>.
> +      Some values are not compatible with all architecture and machine types;
> +      if the value is missing altogether, libvirt will try to pick an
> +      appropriate default.
> +      For <code>usb-serial</code> an optional sub-element
>        <code><address/></code> with <code>type='usb'</code> can tie the
>        device to a particular controller, <a href="#elementsAddress">documented above</a>.
>        Similarly, <code>pci-serial</code> can be used to attach the device to
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 82fdfd5f7..8f6d035de 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -3585,6 +3585,7 @@
>          <value>isa-serial</value>
>          <value>usb-serial</value>
>          <value>pci-serial</value>
> +        <value>spapr-vty</value>

This name doesn't feel right.  Previous names are based on the BUS that
the serial device is connected with "-serial" appended to the BUS name.
Since sPAPR is specification that defines a set of para-virtualized
devices, there is no actual BUS, but I think that in this case we can
consider spapr as a BUS name and use "spapr-serial".  It would be better
than just copying the device name from QEMU.

Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20171116/c8c226d6/attachment-0001.sig>


More information about the libvir-list mailing list