]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_validate: Deduplicate code for video model check
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 17 Nov 2020 09:26:14 +0000 (10:26 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 18 Nov 2020 08:42:11 +0000 (09:42 +0100)
In my recent commit of a33279daa8 I've moved video model check
from domain capabilities validator into qemu validator. During
that I had to basically duplicate video model to qemuCaps checks.
Problem with this approach is that after my commit qemu validator
and domCaps are disconnected and thus domCaps might report (in
general) different set of supported video models.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
src/qemu/qemu_validate.c

index 9f9f976754d2face6b76e3eb1b2632191219294d..78d3b965c6e1ef02676f3a5794309eccfa41027a 100644 (file)
@@ -5991,7 +5991,7 @@ virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCapsPtr qemuCaps,
 }
 
 
-static void
+void
 virQEMUCapsFillDomainDeviceVideoCaps(virQEMUCapsPtr qemuCaps,
                                      virDomainCapsDeviceVideoPtr dev)
 {
index 9d3f73b2ab44b9b18ec4f059979f009855453c7e..22b3da3e63601fc025f3620b9d6f725697abb544 100644 (file)
@@ -739,6 +739,10 @@ int virQEMUCapsFillDomainCaps(virQEMUCapsPtr qemuCaps,
                               virFirmwarePtr *firmwares,
                               size_t nfirmwares);
 
+void virQEMUCapsFillDomainDeviceVideoCaps(virQEMUCapsPtr qemuCaps,
+                                          virDomainCapsDeviceVideoPtr dev);
+
+
 bool virQEMUCapsGuestIsNative(virArch host,
                               virArch guest);
 
index 09cdcb20c23f41246054c6ae30edff4b24bc3163..6e1db2715d37bb189ebfc9a3b537e311c4827b4e 100644 (file)
@@ -2203,46 +2203,15 @@ static int
 qemuValidateDomainDeviceDefVideo(const virDomainVideoDef *video,
                                  virQEMUCapsPtr qemuCaps)
 {
-    virQEMUCapsFlags cap = QEMU_CAPS_LAST;
+    virDomainCapsDeviceVideo videoCaps = { 0 };
 
     /* there's no properties to validate for NONE video devices */
     if (video->type == VIR_DOMAIN_VIDEO_TYPE_NONE)
         return 0;
 
-    switch ((virDomainVideoType) video->type) {
-    case VIR_DOMAIN_VIDEO_TYPE_VGA:
-        cap = QEMU_CAPS_DEVICE_VGA;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
-        cap = QEMU_CAPS_DEVICE_CIRRUS_VGA;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_VMVGA:
-        cap = QEMU_CAPS_DEVICE_VMWARE_SVGA;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_QXL:
-        cap = QEMU_CAPS_DEVICE_QXL;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_VIRTIO:
-        cap = QEMU_CAPS_DEVICE_VIRTIO_GPU;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_BOCHS:
-        cap = QEMU_CAPS_DEVICE_BOCHS_DISPLAY;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_RAMFB:
-        cap = QEMU_CAPS_DEVICE_RAMFB;
-        break;
-    case VIR_DOMAIN_VIDEO_TYPE_DEFAULT:
-    case VIR_DOMAIN_VIDEO_TYPE_XEN:
-    case VIR_DOMAIN_VIDEO_TYPE_VBOX:
-    case VIR_DOMAIN_VIDEO_TYPE_PARALLELS:
-    case VIR_DOMAIN_VIDEO_TYPE_GOP:
-    case VIR_DOMAIN_VIDEO_TYPE_NONE:
-    case VIR_DOMAIN_VIDEO_TYPE_LAST:
-        /* nada */
-        break;
-    }
+    virQEMUCapsFillDomainDeviceVideoCaps(qemuCaps, &videoCaps);
 
-    if (!virQEMUCapsGet(qemuCaps, cap)) {
+    if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(videoCaps.modelType, video->type)) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                        _("domain configuration does not support video model '%s'"),
                        virDomainVideoTypeToString(video->type));