|
|
f27b21f |
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
|
|
f27b21f |
Date: Wed, 11 May 2016 12:39:52 +0200
|
|
|
f27b21f |
Subject: [PATCH] Fill out default vram in DeviceDefPostParse
|
|
|
f27b21f |
|
|
|
f27b21f |
Move filling out the default video (v)ram to DeviceDefPostParse.
|
|
|
f27b21f |
|
|
|
f27b21f |
This means it can be removed from virDomainVideoDefParseXML
|
|
|
f27b21f |
and qemuParseCommandLine. Also, we no longer need to special case
|
|
|
f27b21f |
VIR_DOMAIN_VIRT_XEN, since the per-driver callback gets called
|
|
|
f27b21f |
before the generic one.
|
|
|
f27b21f |
|
|
|
f27b21f |
(cherry picked from commit 538012c8a30230065d1bfe09892279dd8b89193f)
|
|
|
f27b21f |
---
|
|
|
f27b21f |
src/conf/domain_conf.c | 15 ++++++---------
|
|
|
f27b21f |
src/qemu/qemu_parse_command.c | 2 --
|
|
|
f27b21f |
2 files changed, 6 insertions(+), 11 deletions(-)
|
|
|
f27b21f |
|
|
|
f27b21f |
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
|
|
f27b21f |
index 6b3309b..0c2850e 100644
|
|
|
f27b21f |
--- a/src/conf/domain_conf.c
|
|
|
f27b21f |
+++ b/src/conf/domain_conf.c
|
|
|
f27b21f |
@@ -4149,6 +4149,12 @@ virDomainDeviceDefPostParseInternal(virDomainDeviceDefPtr dev,
|
|
|
f27b21f |
|
|
|
f27b21f |
if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
|
|
|
f27b21f |
virDomainVideoDefPtr video = dev->data.video;
|
|
|
f27b21f |
+ /* Fill out (V)RAM if the driver-specific callback did not do so */
|
|
|
f27b21f |
+ if (video->ram == 0 && video->type == VIR_DOMAIN_VIDEO_TYPE_QXL)
|
|
|
f27b21f |
+ video->ram = virDomainVideoDefaultRAM(def, video->type);
|
|
|
f27b21f |
+ if (video->vram == 0)
|
|
|
f27b21f |
+ video->vram = virDomainVideoDefaultRAM(def, video->type);
|
|
|
f27b21f |
+
|
|
|
f27b21f |
video->ram = VIR_ROUND_UP_POWER_OF_TWO(video->ram);
|
|
|
f27b21f |
video->vram = VIR_ROUND_UP_POWER_OF_TWO(video->vram);
|
|
|
f27b21f |
}
|
|
|
f27b21f |
@@ -11948,10 +11954,6 @@ unsigned int
|
|
|
f27b21f |
virDomainVideoDefaultRAM(const virDomainDef *def,
|
|
|
f27b21f |
const virDomainVideoType type)
|
|
|
f27b21f |
{
|
|
|
f27b21f |
- /* Defer setting default vram to the Xen drivers */
|
|
|
f27b21f |
- if (def->virtType == VIR_DOMAIN_VIRT_XEN)
|
|
|
f27b21f |
- return 0;
|
|
|
f27b21f |
-
|
|
|
f27b21f |
switch (type) {
|
|
|
f27b21f |
case VIR_DOMAIN_VIDEO_TYPE_VGA:
|
|
|
f27b21f |
case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
|
|
|
f27b21f |
@@ -12130,8 +12132,6 @@ virDomainVideoDefParseXML(xmlNodePtr node,
|
|
|
f27b21f |
_("cannot parse video ram '%s'"), ram);
|
|
|
f27b21f |
goto error;
|
|
|
f27b21f |
}
|
|
|
f27b21f |
- } else if (def->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
|
|
|
f27b21f |
- def->ram = virDomainVideoDefaultRAM(dom, def->type);
|
|
|
f27b21f |
}
|
|
|
f27b21f |
|
|
|
f27b21f |
if (vram) {
|
|
|
f27b21f |
@@ -12140,8 +12140,6 @@ virDomainVideoDefParseXML(xmlNodePtr node,
|
|
|
f27b21f |
_("cannot parse video vram '%s'"), vram);
|
|
|
f27b21f |
goto error;
|
|
|
f27b21f |
}
|
|
|
f27b21f |
- } else {
|
|
|
f27b21f |
- def->vram = virDomainVideoDefaultRAM(dom, def->type);
|
|
|
f27b21f |
}
|
|
|
f27b21f |
|
|
|
f27b21f |
if (vram64) {
|
|
|
f27b21f |
@@ -18593,7 +18591,6 @@ virDomainDefAddImplicitVideo(virDomainDefPtr def)
|
|
|
f27b21f |
_("cannot determine default video type"));
|
|
|
f27b21f |
goto cleanup;
|
|
|
f27b21f |
}
|
|
|
f27b21f |
- video->vram = virDomainVideoDefaultRAM(def, video->type);
|
|
|
f27b21f |
video->heads = 1;
|
|
|
f27b21f |
if (VIR_APPEND_ELEMENT(def->videos, def->nvideos, video) < 0)
|
|
|
f27b21f |
goto cleanup;
|
|
|
f27b21f |
diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c
|
|
|
f27b21f |
index 45b64a6..074a7c4 100644
|
|
|
f27b21f |
--- a/src/qemu/qemu_parse_command.c
|
|
|
f27b21f |
+++ b/src/qemu/qemu_parse_command.c
|
|
|
f27b21f |
@@ -2584,9 +2584,7 @@ qemuParseCommandLine(virCapsPtr caps,
|
|
|
f27b21f |
vid->type = VIR_DOMAIN_VIDEO_TYPE_XEN;
|
|
|
f27b21f |
else
|
|
|
f27b21f |
vid->type = video;
|
|
|
f27b21f |
- vid->vram = virDomainVideoDefaultRAM(def, vid->type);
|
|
|
f27b21f |
if (vid->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
|
|
|
f27b21f |
- vid->ram = virDomainVideoDefaultRAM(def, vid->type);
|
|
|
f27b21f |
vid->vgamem = QEMU_QXL_VGAMEM_DEFAULT;
|
|
|
f27b21f |
} else {
|
|
|
f27b21f |
vid->ram = 0;
|