[libvirt] [RFC PATCH 0/7] Enable vfio-pci 'property' for mediated devices

Erik Skultety eskultet at redhat.com
Mon Jun 4 12:14:11 UTC 2018


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 at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list