On 05/30/2018 09:43 AM, Erik Skultety wrote: > Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx> > --- > src/qemu/qemu_command.c | 24 +++++++++++++++- > .../hostdev-mdev-display-spice-no-opengl.args | 32 ++++++++++++++++++++++ > .../hostdev-mdev-display-spice-opengl.args | 31 +++++++++++++++++++++ > .../qemuxml2argvdata/hostdev-mdev-display-vnc.args | 32 ++++++++++++++++++++++ > tests/qemuxml2argvtest.c | 23 ++++++++++++++++ > 5 files changed, 141 insertions(+), 1 deletion(-) > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-no-opengl.args > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-opengl.args > create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc.args > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index 1667b09a8b..8a1a4dc72b 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -5088,6 +5088,10 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def, > virBufferAdd(&buf, dev_str, -1); > virBufferAsprintf(&buf, ",id=%s,sysfsdev=%s", dev->info->alias, mdevPath); > > + if (mdevsrc->display) > VIR_TRISTATE_SWITCH_ABSENT > + virBufferAsprintf(&buf, ",display=%s", > + virTristateSwitchTypeToString(mdevsrc->display)); > + > if (qemuBuildDeviceAddressStr(&buf, def, dev->info, qemuCaps) < 0) > goto cleanup; > > @@ -5305,7 +5309,9 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, > > /* MDEV */ > if (virHostdevIsMdevDevice(hostdev)) { > - switch ((virMediatedDeviceModelType) subsys->u.mdev.model) { > + virDomainHostdevSubsysMediatedDevPtr mdevsrc = &subsys->u.mdev; > + > + switch ((virMediatedDeviceModelType) mdevsrc->model) { > case VIR_MDEV_MODEL_TYPE_VFIO_PCI: > if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { > virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > @@ -5313,6 +5319,15 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, > "supported by this version of QEMU")); > return -1; > } > + > + if (mdevsrc->display && != SWITCH_ABSENT > + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VFIO_PCI_DISPLAY)) { > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > + _("display property of device vfio-pci is " > + "not supported by this version of QEMU")); > + return -1; > + } > + After reading this, I thought perhaps patch 6 wasn't necessary at least w/r/t that by setting off we write out to the config file which may not be desired. So as a way to avoid this, can we set a "local" @mdev_display value and pass that qemuBuildHostdevMediatedDevStr which then would then either ignore or write on/off on the command line. Thus: if (mdevsrc->display > SWITCH_ABSENT && !VFIO_PCI_DISPLAY) error as is mdev_display = mdevsrc->display if (mdev_display == SWITCH_ABSENT && VFIO_PCI_DISPLAY) mdev_display == SWITCH_OFF; And passing mdev_display to building the command line will print "off" when mdevsrc->display == ABSENT, but we don't write "off" to the config file. ??? thoughts > break; > case VIR_MDEV_MODEL_TYPE_VFIO_CCW: > if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_CCW)) { > @@ -5335,6 +5350,13 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, > return -1; > virCommandAddArg(cmd, devstr); > VIR_FREE(devstr); > + > + /* we need to add '-display egl-headless' if 'display=on' for > + * vfio-pci and OpenGL is disabled (either not supported or user > + * forgot to add 'gl=on' to SPICE or simply wants to use VNC...) > + */ > + if (mdevsrc->display && !virDomainDefHasSpiceGL(def)) Doesn't this only matter if display == SWITCH_ON ? Hence the OCD on the "if (mdevsrc->display)" type checks. ;-) John [...] -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list