Fixes
https://bugzilla.redhat.com/show_bug.cgi?id=1628892.
The problem is that we didn't put the DRI device into the namespace for QEMU to
access, but that was only a part of the issue. The other part of the issue is
that QEMU doesn't support specifying 'rendernode' for egl-headless yet
(patches
are already merged upstream for 3.1) Instead, QEMU's been autoselecting the
DRI device on its own. There's no compelling reason for libvirt not doing that
instead and thus prevent any permission-related issues.
Since v1:
- updated capabilities to 3.1.0-rc2 containing the necessary QEMU patches
- provided more test cases as requested
- added a new XML sub-element <gl> for egl-headless graphics type
Erik Skultety (13):
util: Introduce virHostGetDRMRenderNode helper
conf: Introduce virDomainGraphics-related helpers
qemu: process: spice: Pick the first available DRM render node
qemu: command: Introduce qemuBuildGraphicsEGLHeadlessCommandLine
helper
qemu: caps: Introduce QEMU_EGL_HEADLESS_RENDERNODE capability
squash into rendernode capability patch
conf: gfx: Add egl-headless as a member to virDomainGraphicsDef struct
conf: gfx: egl-headless: Introduce a new <gl> subelement
qemu: process: gfx: egl-headless: Pick the first available DRM node
qemu: domain: egl-headless: Add the DRI device into the namespace
qemu: cgroup: gfx: egl-headless: Add the DRI device into the cgroup
list
security: dac: gfx: egl-headless: Relabel the DRI device
qemu: command: gfx: egl-headless: Add 'rendernode' option to the
cmdline
docs/formatdomain.html.in | 11 +-
docs/schemas/domaincommon.rng | 17 +-
src/conf/domain_conf.c | 84 +
src/conf/domain_conf.h | 12 +
src/libvirt_private.syms | 4 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_cgroup.c | 10 +-
src/qemu/qemu_command.c | 39 +-
src/qemu/qemu_domain.c | 9 +-
src/qemu/qemu_process.c | 21 +
src/security/security_dac.c | 15 +-
src/util/virutil.c | 53 +
src/util/virutil.h | 2 +
.../caps_3.1.0.x86_64.replies | 22911 ++++++++++++++++
.../caps_3.1.0.x86_64.xml | 1376 +
tests/qemucapabilitiestest.c | 1 +
...graphics-egl-headless-rendernode-auto.args | 26 +
.../graphics-egl-headless-rendernode-auto.xml | 1 +
.../graphics-egl-headless-rendernode.xml | 33 +
.../graphics-egl-headless.args | 2 +-
.../graphics-spice-egl-headless.args | 2 +-
.../graphics-spice-gl-no-rendernode.args | 25 +
.../graphics-spice-gl-no-rendernode.xml | 24 +
.../graphics-vnc-egl-headless.args | 2 +-
...play-spice-egl-headless.x86_64-latest.args | 2 +-
...isplay-vnc-egl-headless.x86_64-latest.args | 2 +-
tests/qemuxml2argvmock.c | 9 +
tests/qemuxml2argvtest.c | 7 +
.../graphics-egl-headless-rendernode.xml | 41 +
tests/qemuxml2xmltest.c | 2 +
31 files changed, 24711 insertions(+), 35 deletions(-)
create mode 100644 tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
create mode 100644 tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml
create mode 100644 tests/qemuxml2argvdata/graphics-egl-headless-rendernode-auto.args
create mode 120000 tests/qemuxml2argvdata/graphics-egl-headless-rendernode-auto.xml
create mode 100644 tests/qemuxml2argvdata/graphics-egl-headless-rendernode.xml
create mode 100644 tests/qemuxml2argvdata/graphics-spice-gl-no-rendernode.args
create mode 100644 tests/qemuxml2argvdata/graphics-spice-gl-no-rendernode.xml
create mode 100644 tests/qemuxml2xmloutdata/graphics-egl-headless-rendernode.xml
--
2.19.1