[libvirt] [PATCH 00/18] qemu: virtio-{non-}transitional support

Cole Robinson crobinso at redhat.com
Thu Jan 17 17:52:27 UTC 2019


This series adds support for virtio-transitional and
virtio-non-transitional qemu devices.

qemu patches, queued for qemu 4.0.0:
https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg00923.html
Previous libvirt discussion around this:
https://www.redhat.com/archives/libvir-list/2018-August/msg01073.html
Previous incomplete RFC here:
https://www.redhat.com/archives/libvir-list/2019-January/msg00346.html

Long story short we need to expose these options so apps have a
usable way to support rhel6 + virtio + q35. This series exposes
the new devices as model= values. This required adding new
model= attributes for several devices.

Here's the breakdown. 'standard names' here means the model names
virtio, virtio-transitional, and virtio-non-transitional

* Simply extended:
virtio-rng: extend existing <rng model=X> to handle standard names
vhost-vsock: extend existing <vsock model=X> to handle standard names
virtio-memballoon: extend existings <memballoon model=X> to handle
    standard names
virtio-net: extend existing qemu <model type=X> handling to
    support standard names

* Extended with caveats:
virtio-serial: extend <controller type='virtio-serial'> to handle
    existing model=X attribute, with standard names
virtio-scsi: extend <controller type='scsi' model=X> to handle the
    additional names virtio-transitional and virtio-non-transitional.
    model= already supports virtio-scsi here which is a departure from
    just model='virtio' which most others use, but I chose to not
    extend that pattern and stick with the names the other devices
    are using
vhost-scsi: extend <hostdev model=X> handling for the protocol=vhost
    case, to accept standard names. I stuck with standard names over
    using vhost-transitional or similar, for consistency with other
    devices.

* New XML elements
virtio-blk: add new <disk model=X/> attribute with standard names
virtio-fs: add new <filesystem model=X> attribute with standard names
virtio-input-host: add new <input model=X> attribute with
    standard names

At the end is an extension to domaincapabilities to report the
disk bus model values. Until domaincapabilities is fully fleshed
out with support for all the above devices, apps can use that
disk model check to assume transitional devices are available
for all of the above.

Cole Robinson (18):
  tests: Add capabilities data for QEMU 4.0.0 x86_64
  conf: Add <disk model='virtio-{non-}transitional'/>
  qemu: Support disk model=virtio-{non-}transitional
  conf: Add virDomainNetHasVirtioModel
  qemu: Support interface model=virtio-{non-}transitional
  conf: Add <hostdev model='virtio-{non-}transitional'/>
  qemu: Support hostdev model=virtio-{non-}transitional
  qemu: Support rng model=virtio-{non-}transitional
  conf: Add <filesystem model='virtio-{non-}transitional'/>
  qemu: Support filesystem model=virtio-{non-}transitional
  qemu: Move memballoon validation out of command.c
  qemu: Support memballoon model=virtio-{non-}transitional
  qemu: Support vsock model=virtio-{non-}transitional
  conf: Add <input model='virtio-{non-}transitional'/>
  qemu: Support input model=virtio-{non-}transitional
  qemu: Support scsi controller model=virtio-{non-}transitional
  qemu: Support virtio-serial controller model=virtio-{non-}transitional
  qemu: domcaps: Report disk <enum name="model">

 docs/formatdomain.html.in                     |    39 +-
 docs/schemas/domaincommon.rng                 |    60 +-
 src/conf/domain_capabilities.c                |     1 +
 src/conf/domain_capabilities.h                |     1 +
 src/conf/domain_conf.c                        |   216 +-
 src/conf/domain_conf.h                        |    68 +-
 src/libvirt_private.syms                      |     5 +
 src/libxl/libxl_conf.c                        |     2 +
 src/qemu/qemu_capabilities.c                  |    55 +
 src/qemu/qemu_capabilities.h                  |    28 +
 src/qemu/qemu_command.c                       |   219 +-
 src/qemu/qemu_domain.c                        |    47 +-
 src/qemu/qemu_domain_address.c                |    69 +-
 src/qemu/qemu_driver.c                        |     9 +-
 src/qemu/qemu_hotplug.c                       |     2 +-
 src/qemu/qemu_interface.c                     |     8 +-
 src/qemu/qemu_process.c                       |     3 +-
 src/security/virt-aa-helper.c                 |     2 +-
 src/vbox/vbox_common.c                        |     2 +
 src/vmx/vmx.c                                 |     4 +-
 .../bhyve_basic.x86_64.xml                    |     1 +
 .../bhyve_fbuf.x86_64.xml                     |     1 +
 .../bhyve_uefi.x86_64.xml                     |     1 +
 tests/domaincapsschemadata/full.xml           |     6 +
 .../domaincapsschemadata/libxl-xenfv-usb.xml  |     1 +
 .../domaincapsschemadata/libxl-xenpv-usb.xml  |     1 +
 .../qemu_1.7.0.x86_64.xml                     |     1 +
 .../qemu_2.12.0-virt.aarch64.xml              |     1 +
 .../qemu_2.12.0.ppc64.xml                     |     1 +
 .../qemu_2.12.0.s390x.xml                     |     1 +
 .../qemu_2.12.0.x86_64.xml                    |     1 +
 .../qemu_2.6.0-virt.aarch64.xml               |     1 +
 .../qemu_2.6.0.aarch64.xml                    |     1 +
 .../domaincapsschemadata/qemu_2.6.0.ppc64.xml |     1 +
 .../qemu_2.6.0.x86_64.xml                     |     1 +
 .../domaincapsschemadata/qemu_2.7.0.s390x.xml |     1 +
 .../qemu_2.8.0-tcg.x86_64.xml                 |     1 +
 .../domaincapsschemadata/qemu_2.8.0.s390x.xml |     1 +
 .../qemu_2.8.0.x86_64.xml                     |     1 +
 .../qemu_2.9.0-q35.x86_64.xml                 |     1 +
 .../qemu_2.9.0-tcg.x86_64.xml                 |     1 +
 .../qemu_2.9.0.x86_64.xml                     |     1 +
 .../domaincapsschemadata/qemu_3.0.0.s390x.xml |     1 +
 .../qemu_4.0.0.x86_64.xml                     |   153 +
 tests/domaincapstest.c                        |     4 +
 .../caps_4.0.0.x86_64.replies                 | 23180 ++++++++++++++++
 .../caps_4.0.0.x86_64.xml                     |  1404 +
 tests/qemucapabilitiestest.c                  |     1 +
 .../virtio-non-transitional.x86_64-3.1.0.args |    63 +
 ...virtio-non-transitional.x86_64-latest.args |    62 +
 .../virtio-non-transitional.xml               |    40 +
 .../virtio-transitional.x86_64-3.1.0.args     |    50 +
 .../virtio-transitional.x86_64-latest.args    |    52 +
 .../qemuxml2argvdata/virtio-transitional.xml  |    40 +
 tests/qemuxml2argvmock.c                      |     2 +-
 tests/qemuxml2argvtest.c                      |     6 +
 .../virtio-non-transitional.xml               |   121 +
 .../virtio-transitional.xml                   |    80 +
 tests/qemuxml2xmltest.c                       |    17 +
 59 files changed, 26031 insertions(+), 112 deletions(-)
 create mode 100644 tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
 create mode 100644 tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
 create mode 100644 tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3.1.0.args
 create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.xml
 create mode 100644 tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0.args
 create mode 100644 tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/virtio-transitional.xml
 create mode 100644 tests/qemuxml2xmloutdata/virtio-non-transitional.xml
 create mode 100644 tests/qemuxml2xmloutdata/virtio-transitional.xml

-- 
2.20.1




More information about the libvir-list mailing list