Hi Neal
On Fri, Dec 31, 2021 at 6:09 AM Neal Gompa <ngompa13(a)gmail.com> wrote:
On Wed, Dec 22, 2021 at 2:44 PM <marcandre.lureau(a)redhat.com> wrote:
>
> From: Marc-André Lureau <marcandre.lureau(a)redhat.com>
>
> Hi,
>
> This series implements supports for the uQEMU "-display dbus" support,
that
> landed earlier this week for 7.0.
>
> 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
>
> v3: after QEMU 7.0 dev cycle opening and merge
> - rebased
> - add 7.0 x86-64 capabilities (instead of tweaking 6.2)
> - fix version annotations
>
> Marc-André Lureau (16):
> qemu: add chardev-vdagent capability check
> qemu: add -display dbus capability check
> qemucapabilitiestest: Add x64 test data for the qemu-7.0 development
> cycle
> 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
>
> NEWS.rst | 7 +-
> 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 | 8 +
> src/qemu/qemu_capabilities.h | 4 +
> src/qemu/qemu_command.c | 77 +-
> 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 | 41 +-
> src/qemu/qemu_validate.c | 33 +
> src/security/security_dac.c | 2 +
> src/vmx/vmx.c | 1 +
> .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 231 +
> .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 237 +
> tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 231 +
> .../caps_6.1.0.x86_64.xml | 1 +
> .../caps_6.2.0.aarch64.xml | 1 +
> .../caps_6.2.0.x86_64.xml | 1 +
> .../caps_7.0.0.x86_64.replies | 37335 ++++++++++++++++
> .../caps_7.0.0.x86_64.xml | 3720 ++
> .../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 | 22 +
> .../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 +-
> 52 files changed, 42981 insertions(+), 192 deletions(-)
> create mode 100644 tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
> create mode 100644 tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
> create mode 100644 tests/domaincapsdata/qemu_7.0.0.x86_64.xml
> create mode 100644 tests/qemucapabilitiesdata/caps_7.0.0.x86_64.replies
> create mode 100644 tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml
> 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
>
>
How will this work for the web (cockpit-machines, oVirt/RHV, and
KubeVirt/OpenShift Virtualization)?
For remoting, an external VNC/Spice/RDP server should export the display.
A simple VNC server is implemented here
https://gitlab.com/marcandre.lureau/qemu-display/-/tree/master/qemu-vnc.
I plan to work on an RDP server at some point.
Personally, I use virt-manager/virt-viewer *regularly*, so where's the
plan to have this supported there? What about QVirtManager? And so on?
I have been working on a common gtk4 remote display widget which
various applications can use (
https://gitlab.gnome.org/malureau/rdw).
Similarly for Qt apps, they will have to implement their own widget.