From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> Hi, This series implements supports for the upcoming QEMU "-display dbus" support. Development is still in progress, but I hope to land the QEMU support early in 6.3 (last version posted: https://patchew.org/QEMU/20211009210838.2219430-1-marcandre.lureau@xxxxxxxxxx/). By default, libvirt will start a private VM bus (sharing and reusing the existing "vmstate" VM bus & code). The feature set should cover the needs to replace Spice as local client of choice, including 3daccel/dmabuf, audio, clipboard sharing, usb redirection, and arbitrary chardev/channels (for serial etc). The test Gtk4 client is also in progress, currently in development at https://gitlab.com/marcandre.lureau/qemu-display/. A few dependencies, such as zbus, require an upcoming release. virt-viewer & boxes will need a port to Gtk4 to make use of the shared widget. Comments welcome, as we can still adjust the QEMU side etc. thanks v2: after Michal review - split patches for conf & qemu changes - start D-Bus in qemuExtDevicesStart() - use symlinks for xml2xml tests - teach domdisplay to return a dbus URI - rebase & bug fixes Marc-André Lureau (15): qemu: add chardev-vdagent capability check qemu: add -display dbus capability check (to update to 6.3) conf: add <graphics type='dbus'> qemu: start the D-Bus daemon for the display qemu: add -display dbus support virsh: refactor/split cmdDomDisplay() virsh: report the D-Bus bus URI for domdisplay conf: add <audio type='dbus'> support qemu: add audio type 'dbus' conf: add dbus <clipboard> qemu: add dbus clipboard sharing conf: add <serial type='dbus'> qemu: add -chardev dbus support qemu: add usbredir type 'dbus' docs: document <graphics> type dbus docs/formatdomain.rst | 43 +- docs/schemas/basictypes.rng | 7 + docs/schemas/domaincommon.rng | 71 ++++ src/bhyve/bhyve_command.c | 1 + src/conf/domain_conf.c | 141 ++++++- src/conf/domain_conf.h | 15 + src/conf/domain_validate.c | 41 +- src/libxl/libxl_conf.c | 1 + src/qemu/qemu_capabilities.c | 6 + src/qemu/qemu_capabilities.h | 2 + src/qemu/qemu_command.c | 80 +++- src/qemu/qemu_domain.c | 1 + src/qemu/qemu_driver.c | 10 +- src/qemu/qemu_extdevice.c | 13 + src/qemu/qemu_hotplug.c | 1 + src/qemu/qemu_monitor_json.c | 10 + src/qemu/qemu_process.c | 40 +- src/qemu/qemu_validate.c | 33 ++ src/security/security_dac.c | 2 + src/vmx/vmx.c | 1 + .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 + .../caps_6.1.0.x86_64.xml | 1 + .../caps_6.2.0.aarch64.xml | 1 + .../caps_6.2.0.x86_64.replies | 10 +- .../caps_6.2.0.x86_64.xml | 2 + .../graphics-dbus-address.args | 30 ++ .../graphics-dbus-address.xml | 35 ++ .../qemuxml2argvdata/graphics-dbus-audio.args | 33 ++ .../qemuxml2argvdata/graphics-dbus-audio.xml | 45 +++ .../graphics-dbus-chardev.args | 32 ++ .../graphics-dbus-chardev.xml | 43 ++ .../graphics-dbus-clipboard.args | 31 ++ .../graphics-dbus-clipboard.xml | 35 ++ tests/qemuxml2argvdata/graphics-dbus-p2p.args | 30 ++ tests/qemuxml2argvdata/graphics-dbus-p2p.xml | 33 ++ .../graphics-dbus-usbredir.args | 34 ++ .../graphics-dbus-usbredir.xml | 30 ++ tests/qemuxml2argvdata/graphics-dbus.args | 30 ++ tests/qemuxml2argvdata/graphics-dbus.xml | 33 ++ tests/qemuxml2argvtest.c | 21 + .../graphics-dbus-address.xml | 1 + .../graphics-dbus-audio.xml | 1 + .../graphics-dbus-chardev.xml | 1 + .../graphics-dbus-clipboard.xml | 1 + .../qemuxml2xmloutdata/graphics-dbus-p2p.xml | 1 + tests/qemuxml2xmloutdata/graphics-dbus.xml | 1 + tests/qemuxml2xmltest.c | 20 + tools/virsh-domain.c | 366 +++++++++--------- 50 files changed, 1231 insertions(+), 192 deletions(-) create mode 100644 tests/qemuxml2argvdata/graphics-dbus-address.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-address.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-audio.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-audio.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-chardev.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-chardev.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-clipboard.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-clipboard.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-p2p.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-p2p.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-usbredir.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus-usbredir.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus.args create mode 100644 tests/qemuxml2argvdata/graphics-dbus.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-address.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-audio.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-chardev.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-clipboard.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-p2p.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus.xml -- 2.34.1.8.g35151cf07204