[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH 3/3] Fill out default vram in DeviceDefPostParse



Move filling out the default video (v)ram to DeviceDefPostParse.

This means it can be removed from virDomainVideoDefParseXML
and qemuParseCommandLine. Also, we no longer need to special case
VIR_DOMAIN_VIRT_XEN, since the per-driver callback gets called
before the generic one.
---
 src/conf/domain_conf.c        | 15 ++++++---------
 src/qemu/qemu_parse_command.c |  2 --
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b3165fc..ed0c471 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -4174,6 +4174,12 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev,
 
     if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
         virDomainVideoDefPtr video = dev->data.video;
+        /* Fill out (V)RAM if the driver-specific callback did not do so */
+        if (video->ram == 0 && video->type == VIR_DOMAIN_VIDEO_TYPE_QXL)
+            video->ram = virDomainVideoDefaultRAM(def, video->type);
+        if (video->vram == 0)
+            video->vram = virDomainVideoDefaultRAM(def, video->type);
+
         video->ram = VIR_ROUND_UP_POWER_OF_TWO(video->ram);
         video->vram = VIR_ROUND_UP_POWER_OF_TWO(video->vram);
     }
@@ -12045,10 +12051,6 @@ unsigned int
 virDomainVideoDefaultRAM(const virDomainDef *def,
                          const virDomainVideoType type)
 {
-    /* Defer setting default vram to the Xen drivers */
-    if (def->virtType == VIR_DOMAIN_VIRT_XEN)
-        return 0;
-
     switch (type) {
     case VIR_DOMAIN_VIDEO_TYPE_VGA:
     case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
@@ -12227,8 +12229,6 @@ virDomainVideoDefParseXML(xmlNodePtr node,
                            _("cannot parse video ram '%s'"), ram);
             goto error;
         }
-    } else if (def->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
-        def->ram = virDomainVideoDefaultRAM(dom, def->type);
     }
 
     if (vram) {
@@ -12237,8 +12237,6 @@ virDomainVideoDefParseXML(xmlNodePtr node,
                            _("cannot parse video vram '%s'"), vram);
             goto error;
         }
-    } else {
-        def->vram = virDomainVideoDefaultRAM(dom, def->type);
     }
 
     if (vram64) {
@@ -18697,7 +18695,6 @@ virDomainDefAddImplicitVideo(virDomainDefPtr def)
                        _("cannot determine default video type"));
         goto cleanup;
     }
-    video->vram = virDomainVideoDefaultRAM(def, video->type);
     video->heads = 1;
     if (VIR_APPEND_ELEMENT(def->videos, def->nvideos, video) < 0)
         goto cleanup;
diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c
index 7ce90f9..e30586f 100644
--- a/src/qemu/qemu_parse_command.c
+++ b/src/qemu/qemu_parse_command.c
@@ -2583,9 +2583,7 @@ qemuParseCommandLine(virCapsPtr caps,
             vid->type = VIR_DOMAIN_VIDEO_TYPE_XEN;
         else
             vid->type = video;
-        vid->vram = virDomainVideoDefaultRAM(def, vid->type);
         if (vid->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
-            vid->ram = virDomainVideoDefaultRAM(def, vid->type);
             vid->vgamem = QEMU_QXL_VGAMEM_DEFAULT;
         } else {
             vid->ram = 0;
-- 
2.7.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]