]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: validate vhost-user video backend in qemu_domain.c
authorJonathon Jongsma <jjongsma@redhat.com>
Fri, 18 Oct 2019 15:30:14 +0000 (10:30 -0500)
committerCole Robinson <crobinso@redhat.com>
Thu, 14 Nov 2019 16:37:50 +0000 (11:37 -0500)
The goal is to move all of the video device validation to a single place
and use domain caps to validate the supported video device models. Since
qemuDomainDeviceDefValidateVideo() is called from
qemuProcessStartValidate(), these changes should not change anny
behavior.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_process.c

index d6d10b722cb2b064699e14c3949197f17a7e2456..6d9bf688cedbc282f098f9cefc0db9c20466e53c 100644 (file)
@@ -5707,7 +5707,8 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev,
 
 
 static int
-qemuDomainDeviceDefValidateVideo(const virDomainVideoDef *video)
+qemuDomainDeviceDefValidateVideo(const virDomainVideoDef *video,
+                                 virQEMUCapsPtr qemuCaps)
 {
     switch ((virDomainVideoType) video->type) {
     case VIR_DOMAIN_VIDEO_TYPE_NONE:
@@ -5798,6 +5799,15 @@ qemuDomainDeviceDefValidateVideo(const virDomainVideoDef *video)
         }
     }
 
+    if (video->backend == VIR_DOMAIN_VIDEO_BACKEND_TYPE_VHOSTUSER) {
+        if (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO &&
+            !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VHOST_USER_GPU)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("this QEMU does not support 'vhost-user' video device"));
+            return -1;
+        }
+    }
+
     return 0;
 }
 
@@ -7259,7 +7269,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
         break;
 
     case VIR_DOMAIN_DEVICE_VIDEO:
-        ret = qemuDomainDeviceDefValidateVideo(dev->data.video);
+        ret = qemuDomainDeviceDefValidateVideo(dev->data.video, qemuCaps);
         break;
 
     case VIR_DOMAIN_DEVICE_DISK:
index 4cf4069d50ac6e5097f7165803995e3635a4ce36..9e175d17c999d996eb6b05ddcec719f36b086322 100644 (file)
@@ -5219,14 +5219,7 @@ qemuProcessStartValidateVideo(virDomainObjPtr vm,
     for (i = 0; i < vm->def->nvideos; i++) {
         video = vm->def->videos[i];
 
-        if (video->backend == VIR_DOMAIN_VIDEO_BACKEND_TYPE_VHOSTUSER) {
-            if (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO &&
-                !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VHOST_USER_GPU)) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                               _("this QEMU does not support 'vhost-user' video device"));
-                return -1;
-            }
-        } else {
+        if (video->backend != VIR_DOMAIN_VIDEO_BACKEND_TYPE_VHOSTUSER) {
             if ((video->type == VIR_DOMAIN_VIDEO_TYPE_VGA &&
                  !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VGA)) ||
                 (video->type == VIR_DOMAIN_VIDEO_TYPE_CIRRUS &&