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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list