diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2010-09-01 14:39:12 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2010-09-01 14:44:09 +0200 |
commit | 54d0367fe78cb0140ea270a46ccc0083dc32c837 (patch) | |
tree | 2da4bb2e39161ea3f7eccbb4a6e237f5cbef2659 | |
parent | 5fc898ef93b0e88313f9ad242509e17d74b95741 (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.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -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; |