summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-09-01 14:39:12 +0200
committerGerd Hoffmann <kraxel@redhat.com>2010-09-01 14:44:09 +0200
commit54d0367fe78cb0140ea270a46ccc0083dc32c837 (patch)
tree2da4bb2e39161ea3f7eccbb4a6e237f5cbef2659
parent5fc898ef93b0e88313f9ad242509e17d74b95741 (diff)
qxl: migration fix #1
The pointer to the modes table must be updated in post-load when migrating between spice 0.4 and spice 0.6. Note: rhel-6.0.z needs that one too.
-rw-r--r--hw/qxl.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/hw/qxl.c b/hw/qxl.c
index 0f7f77897..6c76bdc49 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -1307,6 +1307,17 @@ static int qxl_post_load(void *opaque, int version)
int in, out, i, newmode;
dprint(d, 1, "%s: start\n", __FUNCTION__);
+
+ assert(d->last_release_offset < d->vga.vram_size);
+ if (d->last_release_offset == 0) {
+ d->last_release = NULL;
+ } else {
+ d->last_release = (QXLReleaseInfo *)(ram_start + d->last_release_offset);
+ }
+
+ d->modes = (QXLModes*)((uint8_t*)d->rom + d->rom->modes_offset);
+
+ dprint(d, 1, "%s: restore more\n", __FUNCTION__);
newmode = d->mode;
d->mode = QXL_MODE_UNDEFINED;
switch (newmode) {
@@ -1349,13 +1360,6 @@ static int qxl_post_load(void *opaque, int version)
}
dprint(d, 1, "%s: done\n", __FUNCTION__);
- assert(d->last_release_offset < d->vga.vram_size);
- if (d->last_release_offset == 0) {
- d->last_release = NULL;
- } else {
- d->last_release = (QXLReleaseInfo *)(ram_start + d->last_release_offset);
- }
-
/* spice 0.4 compatibility -- accept but ignore */
qemu_free(d->worker_data);
d->worker_data = NULL;