[libvirt] [PATCH v1 11/11] qemu: command: Enable formatting vfio-pci.display option onto cmdline
John Ferlan
jferlan at redhat.com
Thu Jun 28 23:06:44 UTC 2018
On 06/27/2018 09:34 AM, Erik Skultety wrote:
Kinda sparse for what I assume is a new "feature" (and I won't comment
about you're missing a news.xml change :-P)
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
> src/qemu/qemu_command.c | 23 +++++++++++-
> src/qemu/qemu_domain.c | 3 +-
> .../hostdev-mdev-display-spice-egl-headless.args | 32 +++++++++++++++++
> .../hostdev-mdev-display-spice-egl-headless.xml | 41 ++++++++++++++++++++++
> .../hostdev-mdev-display-spice-opengl.args | 31 ++++++++++++++++
> .../hostdev-mdev-display-spice-opengl.xml | 41 ++++++++++++++++++++++
> .../hostdev-mdev-display-vnc-egl-headless.args | 32 +++++++++++++++++
> .../hostdev-mdev-display-vnc-egl-headless.xml | 41 ++++++++++++++++++++++
> .../qemuxml2argvdata/hostdev-mdev-display-vnc.args | 31 ++++++++++++++++
> .../qemuxml2argvdata/hostdev-mdev-display-vnc.xml | 39 ++++++++++++++++++++
> tests/qemuxml2argvtest.c | 29 +++++++++++++++
> 11 files changed, 341 insertions(+), 2 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-egl-headless.args
> create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-spice-egl-headless.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-egl-headless.args
> create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc-egl-headless.xml
> create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc.args
> create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-vnc.xml
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index fc80a6c3a6..a2a27b5b9b 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -5162,6 +5162,16 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def,
> virBufferAdd(&buf, dev_str, -1);
> virBufferAsprintf(&buf, ",id=%s,sysfsdev=%s", dev->info->alias, mdevPath);
>
> + /* QEMU 2.12 added support for vfio-pci display type, we default to
> + * 'display=off' to stay safe from future changes */
I have a vague recollection of a longer explanation for this during the
previous review - maybe put some more details here why we had to use
display=off, especially since the commit message is sparse.
> + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VFIO_PCI_DISPLAY) &&
> + mdevsrc->display == VIR_TRISTATE_SWITCH_ABSENT)
> + mdevsrc->display = VIR_TRISTATE_SWITCH_OFF;
> +
> + if (mdevsrc->display > VIR_TRISTATE_SWITCH_ABSENT)
> + virBufferAsprintf(&buf, ",display=%s",
> + virTristateSwitchTypeToString(mdevsrc->display));
> +
> if (qemuBuildDeviceAddressStr(&buf, def, dev->info, qemuCaps) < 0)
> goto cleanup;
>
> @@ -5379,7 +5389,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",
> @@ -5387,6 +5399,15 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
> "supported by this version of QEMU"));
> return -1;
> }
> +
> + if (mdevsrc->display != VIR_TRISTATE_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;
s/ //
Too many spaces for return -1
> + }
> +
> break;
> case VIR_MDEV_MODEL_TYPE_VFIO_CCW:
> if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_CCW)) {
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index d624383c61..39920da442 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -6141,7 +6141,7 @@ qemuDomainHostdevMdevDefPostParse(const virDomainHostdevSubsysMediatedDev *mdevs
> }
>
> if (mdevsrc->display == VIR_TRISTATE_SWITCH_ON) {
> - virDomainGraphicsDefPtr graphics = def->graphics[0];
> + virDomainGraphicsDefPtr graphics = NULL;
>
> if (def->ngraphics == 0) {
> virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> @@ -6154,6 +6154,7 @@ qemuDomainHostdevMdevDefPostParse(const virDomainHostdevSubsysMediatedDev *mdevs
> * moment, so print a warning that an extra <gl> element might be
> * necessary to be added.
> */
> + graphics = def->graphics[0];
> if (!graphics->gl ||
> graphics->gl->enable != VIR_TRISTATE_BOOL_YES) {
> VIR_WARN("<hostdev> attribute 'display' may need the OpenGL to "
Thus hunk belongs in the previous patch...
John
[...]
FYI: The examples certainly help point out usage of gl enable=yes
conditions and when egl-headless comes into play, I'm still confused
over the RFC comments, but that shouldn't really surprise anyone ;-)
More information about the libvir-list
mailing list