CC'ing Gerd to comment since he implemented the feature in QEMU. Erik On Wed, May 30, 2018 at 03:42:54PM +0200, Erik Skultety wrote: > Since QEMU 2.12 there's a new vfio-pci device property 'display' with values > on/off/auto. This special kind of display allows using a mediated device which > is a VGA compatible device for a display output. > There are 2 different implementations of how the device output is handled, > referred to as dmabuf and vfio region mapping (currently NVIDIA uses the latter, > while Intel relies on the former). From libvirt's perspective the important > difference is that dmabuf requires OpenGL support whereas vfio regions don't > (it will of course work even with OpenGL enabled). There's a catch though - > because of several constraints in the vendor drivers (as discussed here [1]), > there currently isn't a reasonable way for libvirt (other than spawning a dummy > QEMU instance) to probe such mediated devices for the display mode they use. > This the nr.1 reason why libvirt is not going to support the value 'auto' with > QEMU and will default to 'off' instead in all cases to stay safe the least and > therefore is going to rely on users being able to configure this properly > otherwise they'll get an error. > > Once there's a way for libvirt to probe the nature of the display-capable > mediated devices, we can consider adding support for 'auto' value meaning that > libvirt is going to take care of adding an appropriate Spice/VNC graphics > device depending on the system if these are missing in the config, otherwise > the user's choice is always favoured. > > TL;DR: > - we have a new attribute value for vfio-pci mediated devices called 'display' > -> devices can now format this new 'display=on/off' property to the cmdline > > - if user enables the vfio display (display=on) but doesn't enable OpenGL for > Spice, we automatically assume the usage of '-display egl-headless' > (uses local drm nodes) which works both for Spice and VNC > -> if OpenGL is enabled, then '-display egl-headless' is not necessary > > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1475770 > [1] https://www.redhat.com/archives/libvir-list/2018-May/msg00243.html > > Erik Skultety (7): > conf: Remove a redundant model/address-type check in mdev post parse > qemu: command: Move graphics iteration to its own function > conf: Introduce virDomainDefHasSpiceGL helper > conf: Introduce new <hostdev> attribute 'display' > qemu: caps: Add vfio-pci.display capability > qemu: domain: Set default vfio-pci display value depending on > capability > qemu: command: Enable formatting vfio-pci.display option onto cmdline > > docs/formatdomain.html.in | 16 ++++- > docs/schemas/domaincommon.rng | 5 ++ > src/conf/domain_conf.c | 56 +++++++++++---- > src/conf/domain_conf.h | 4 ++ > src/libvirt_private.syms | 1 + > src/qemu/qemu_capabilities.c | 2 + > src/qemu/qemu_capabilities.h | 1 + > src/qemu/qemu_command.c | 84 +++++++++++++++------- > src/qemu/qemu_domain.c | 75 +++++++++++++++++++ > tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + > tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + > tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + > tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + > .../hostdev-mdev-display-missing-graphics.xml | 35 +++++++++ > .../hostdev-mdev-display-spice-no-opengl.args | 32 +++++++++ > .../hostdev-mdev-display-spice-no-opengl.xml | 41 +++++++++++ > .../hostdev-mdev-display-spice-opengl.args | 31 ++++++++ > .../hostdev-mdev-display-spice-opengl.xml | 41 +++++++++++ > .../qemuxml2argvdata/hostdev-mdev-display-vnc.args | 32 +++++++++ > .../qemuxml2argvdata/hostdev-mdev-display-vnc.xml | 39 ++++++++++ > tests/qemuxml2argvtest.c | 23 ++++++ > .../hostdev-mdev-display-spice-no-opengl.xml | 47 ++++++++++++ > .../hostdev-mdev-display-spice-opengl.xml | 48 +++++++++++++ > .../hostdev-mdev-display-vnc.xml | 47 ++++++++++++ > tests/qemuxml2xmltest.c | 3 + > 25 files changed, 626 insertions(+), 41 deletions(-) > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-missing-graphics.xml > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-no-opengl.args > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-no-opengl.xml > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-opengl.args > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-opengl.xml > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc.args > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc.xml > create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-spice-no-opengl.xml > create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-spice-opengl.xml > create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display-vnc.xml > > -- > 2.14.3 > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list