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