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