v1 libvirt patches: https://www.redhat.com/archives/libvir-list/2019-January/msg00593.html Previous incomplete RFC here: https://www.redhat.com/archives/libvir-list/2019-January/msg00346.html 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 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. See v1 posting for a summary of the XML changes introduced, mostly it's adding virtio-transitional and virtio-non-transitional to existing model= enums, and adding model= XML attributes for devices that don't have them (disk, fs, input) Changes from v1: - <filesystem> models are now named virtio-9p, virtio-9p-transitional, virtio-9p-non-transitional. This is to avoid ambiguity as in the near future we will likely add virtio-fs <filesystem> support - Cleanup and prep work is separated into separate patches and front loaded into the series. - qemu caps additions are separated from the qemu_command.c patches, and squashed together upfront. - virDomainDeviceSetData is added to make it easier to compose a virDomainDeviceDef on the fly. This is used for the transitional cli building but can be useful elsewhere too, but that's for another series. - Lots of small improvements and fixes suggested by Andrea. Thanks, Cole Cole Robinson (25): conf: Set net->model earlier conf: Add virDomainNetIsVirtioModel qemu: Move <memballoon> validation out of qemu_command.c qemu: Move <rng> validation out of qemu_command.c qemu: command: Make vhost-scsi device string depend on address qemu: command: Convert vhost-{vsock,scsi} to qemuBuildVirtioDevStr conf: Add virDomainDeviceSetData qemu: command: Make BuildVirtioDevStr more generic qemu: command: Add qemuCaps to BuildVirtioStr qemu: capabilities: Add virtio/vhost {non-}transitional conf: Add <disk model='virtio-{non-}transitional'/> qemu: Support disk model=virtio-{non-}transitional 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-9p-{non-}transitional'/> qemu: Support filesystem model=virtio-9p-{non-}transitional 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 virtio-serial controller model=virtio-{non-}transitional qemu: Support scsi controller model=virtio-{non-}transitional qemu: domcaps: Report disk <enum name="model"> docs/formatdomain.html.in | 39 ++- docs/schemas/domaincommon.rng | 61 +++- src/conf/domain_capabilities.c | 1 + src/conf/domain_capabilities.h | 1 + src/conf/domain_conf.c | 328 ++++++++++++++++-- src/conf/domain_conf.h | 67 ++++ src/libvirt_private.syms | 6 + src/libxl/libxl_conf.c | 2 + src/qemu/qemu_capabilities.c | 61 ++++ src/qemu/qemu_capabilities.h | 28 ++ src/qemu/qemu_command.c | 252 +++++++++++--- src/qemu/qemu_domain.c | 79 ++++- src/qemu/qemu_domain_address.c | 97 ++++-- src/qemu/qemu_driver.c | 17 +- 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 | 5 +- .../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 | 3 + .../qemu_2.12.0-virt.aarch64.xml | 5 + .../qemu_2.12.0.ppc64.xml | 5 + .../qemu_2.12.0.s390x.xml | 5 + .../qemu_2.12.0.x86_64.xml | 5 + .../qemu_2.6.0-virt.aarch64.xml | 5 + .../qemu_2.6.0.aarch64.xml | 5 + .../domaincapsschemadata/qemu_2.6.0.ppc64.xml | 5 + .../qemu_2.6.0.x86_64.xml | 5 + .../domaincapsschemadata/qemu_2.7.0.s390x.xml | 5 + .../qemu_2.8.0-tcg.x86_64.xml | 5 + .../domaincapsschemadata/qemu_2.8.0.s390x.xml | 5 + .../qemu_2.8.0.x86_64.xml | 5 + .../qemu_2.9.0-q35.x86_64.xml | 5 + .../qemu_2.9.0-tcg.x86_64.xml | 5 + .../qemu_2.9.0.x86_64.xml | 5 + .../domaincapsschemadata/qemu_3.0.0.s390x.xml | 5 + .../qemu_4.0.0.x86_64.xml | 154 ++++++++ tests/domaincapstest.c | 4 + .../caps_4.0.0.x86_64.xml | 20 ++ .../virtio-non-transitional.x86_64-3.1.0.args | 65 ++++ ...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 | 26 +- 57 files changed, 1736 insertions(+), 141 deletions(-) create mode 100644 tests/domaincapsschemadata/qemu_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