* [Qemu-devel] [PATCH 0/2] SaveVM: Remove ram support for v1 and v2
@ 2009-09-09 10:47 Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 1/2] ram: remove support for loading v1 Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 2/2] ram: Remove SaveVM Version 2 support Juan Quintela
0 siblings, 2 replies; 3+ messages in thread
From: Juan Quintela @ 2009-09-09 10:47 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
Hi
SaveVM don't work for v2 since at least April.
>From commit message of removal of v2:
It don't work. It fails in this check
if (qemu_get_be32(f) != last_ram_offset)
With 512MB of ram, values were for me:
v = 20c00000 last_ram_offset = 20840000
Last time that some code changed that was this one.
commit 94a6b54fd6d2d3321066cb4db7abeeb417af9365
Implement dynamic guest ram allocation.
(I.e. it has been broken since at least April)
Going back to the previous commit, ram load correctly, but vga screen gets
corrupted and ide don't load correctly. At this point I decide that removing
support is the only viable thing.
The last user of the ram_compress_* were RAM_SAVE_FLAG_FULL flag, but
that flag was never ever been stored in an image. Mark the flag obsolete
and remove the functions.
Later, Juan.
Juan Quintela (2):
ram: remove support for loading v1
ram: Remove SaveVM Version 2 support
vl.c | 136 +-----------------------------------------------------------------
1 files changed, 1 insertions(+), 135 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 1/2] ram: remove support for loading v1
2009-09-09 10:47 [Qemu-devel] [PATCH 0/2] SaveVM: Remove ram support for v1 and v2 Juan Quintela
@ 2009-09-09 10:47 ` Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 2/2] ram: Remove SaveVM Version 2 support Juan Quintela
1 sibling, 0 replies; 3+ messages in thread
From: Juan Quintela @ 2009-09-09 10:47 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
vl.c | 42 ------------------------------------------
1 files changed, 0 insertions(+), 42 deletions(-)
diff --git a/vl.c b/vl.c
index 098daaa..4f8a91a 100644
--- a/vl.c
+++ b/vl.c
@@ -2874,45 +2874,6 @@ void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque)
/***********************************************************/
/* ram save/restore */
-static int ram_get_page(QEMUFile *f, uint8_t *buf, int len)
-{
- int v;
-
- v = qemu_get_byte(f);
- switch(v) {
- case 0:
- if (qemu_get_buffer(f, buf, len) != len)
- return -EIO;
- break;
- case 1:
- v = qemu_get_byte(f);
- memset(buf, v, len);
- break;
- default:
- return -EINVAL;
- }
-
- if (qemu_file_has_error(f))
- return -EIO;
-
- return 0;
-}
-
-static int ram_load_v1(QEMUFile *f, void *opaque)
-{
- int ret;
- ram_addr_t i;
-
- if (qemu_get_be32(f) != last_ram_offset)
- return -EINVAL;
- for(i = 0; i < last_ram_offset; i+= TARGET_PAGE_SIZE) {
- ret = ram_get_page(f, qemu_get_ram_ptr(i), TARGET_PAGE_SIZE);
- if (ret)
- return ret;
- }
- return 0;
-}
-
#define BDRV_HASH_BLOCK_SIZE 1024
#define IOBUF_SIZE 4096
#define RAM_CBLOCK_MAGIC 0xfabe
@@ -3147,9 +3108,6 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
ram_addr_t addr;
int flags;
- if (version_id == 1)
- return ram_load_v1(f, opaque);
-
if (version_id == 2) {
if (qemu_get_be32(f) != last_ram_offset)
return -EINVAL;
--
1.6.2.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 2/2] ram: Remove SaveVM Version 2 support
2009-09-09 10:47 [Qemu-devel] [PATCH 0/2] SaveVM: Remove ram support for v1 and v2 Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 1/2] ram: remove support for loading v1 Juan Quintela
@ 2009-09-09 10:47 ` Juan Quintela
1 sibling, 0 replies; 3+ messages in thread
From: Juan Quintela @ 2009-09-09 10:47 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
It don't work. It fails in this check
if (qemu_get_be32(f) != last_ram_offset)
With 512MB of ram, values were for me:
v = 20c00000 last_ram_offset = 20840000
Last time that some code changed that was this one.
commit 94a6b54fd6d2d3321066cb4db7abeeb417af9365
Implement dynamic guest ram allocation.
(I.e. it has been broken since at least April)
Going back to the previous commit, ram load correctly, but vga screen gets
corrupted and ide don't load correctly. At this point I decide that removing
support is the only viable thing.
The last user of the ram_compress_* were RAM_SAVE_FLAG_FULL flag, but
that flag was never ever been stored in an image. Mark the flag obsolete
and remove the functions.
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
vl.c | 94 +-----------------------------------------------------------------
1 files changed, 1 insertions(+), 93 deletions(-)
diff --git a/vl.c b/vl.c
index 4f8a91a..8bce394 100644
--- a/vl.c
+++ b/vl.c
@@ -2874,58 +2874,7 @@ void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque)
/***********************************************************/
/* ram save/restore */
-#define BDRV_HASH_BLOCK_SIZE 1024
-#define IOBUF_SIZE 4096
-#define RAM_CBLOCK_MAGIC 0xfabe
-
-typedef struct RamDecompressState {
- z_stream zstream;
- QEMUFile *f;
- uint8_t buf[IOBUF_SIZE];
-} RamDecompressState;
-
-static int ram_decompress_open(RamDecompressState *s, QEMUFile *f)
-{
- int ret;
- memset(s, 0, sizeof(*s));
- s->f = f;
- ret = inflateInit(&s->zstream);
- if (ret != Z_OK)
- return -1;
- return 0;
-}
-
-static int ram_decompress_buf(RamDecompressState *s, uint8_t *buf, int len)
-{
- int ret, clen;
-
- s->zstream.avail_out = len;
- s->zstream.next_out = buf;
- while (s->zstream.avail_out > 0) {
- if (s->zstream.avail_in == 0) {
- if (qemu_get_be16(s->f) != RAM_CBLOCK_MAGIC)
- return -1;
- clen = qemu_get_be16(s->f);
- if (clen > IOBUF_SIZE)
- return -1;
- qemu_get_buffer(s->f, s->buf, clen);
- s->zstream.avail_in = clen;
- s->zstream.next_in = s->buf;
- }
- ret = inflate(&s->zstream, Z_PARTIAL_FLUSH);
- if (ret != Z_OK && ret != Z_STREAM_END) {
- return -1;
- }
- }
- return 0;
-}
-
-static void ram_decompress_close(RamDecompressState *s)
-{
- inflateEnd(&s->zstream);
-}
-
-#define RAM_SAVE_FLAG_FULL 0x01
+#define RAM_SAVE_FLAG_FULL 0x01 /* Obsolete, not used anymore */
#define RAM_SAVE_FLAG_COMPRESS 0x02
#define RAM_SAVE_FLAG_MEM_SIZE 0x04
#define RAM_SAVE_FLAG_PAGE 0x08
@@ -3073,47 +3022,11 @@ static int ram_save_live(QEMUFile *f, int stage, void *opaque)
return (stage == 2) && (expected_time <= migrate_max_downtime());
}
-static int ram_load_dead(QEMUFile *f, void *opaque)
-{
- RamDecompressState s1, *s = &s1;
- uint8_t buf[10];
- ram_addr_t i;
-
- if (ram_decompress_open(s, f) < 0)
- return -EINVAL;
- for(i = 0; i < last_ram_offset; i+= BDRV_HASH_BLOCK_SIZE) {
- if (ram_decompress_buf(s, buf, 1) < 0) {
- fprintf(stderr, "Error while reading ram block header\n");
- goto error;
- }
- if (buf[0] == 0) {
- if (ram_decompress_buf(s, qemu_get_ram_ptr(i),
- BDRV_HASH_BLOCK_SIZE) < 0) {
- fprintf(stderr, "Error while reading ram block address=0x%08" PRIx64, (uint64_t)i);
- goto error;
- }
- } else {
- error:
- printf("Error block header\n");
- return -EINVAL;
- }
- }
- ram_decompress_close(s);
-
- return 0;
-}
-
static int ram_load(QEMUFile *f, void *opaque, int version_id)
{
ram_addr_t addr;
int flags;
- if (version_id == 2) {
- if (qemu_get_be32(f) != last_ram_offset)
- return -EINVAL;
- return ram_load_dead(f, opaque);
- }
-
if (version_id != 3)
return -EINVAL;
@@ -3128,11 +3041,6 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
return -EINVAL;
}
- if (flags & RAM_SAVE_FLAG_FULL) {
- if (ram_load_dead(f, opaque) < 0)
- return -EINVAL;
- }
-
if (flags & RAM_SAVE_FLAG_COMPRESS) {
uint8_t ch = qemu_get_byte(f);
memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);
--
1.6.2.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-09-09 10:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-09 10:47 [Qemu-devel] [PATCH 0/2] SaveVM: Remove ram support for v1 and v2 Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 1/2] ram: remove support for loading v1 Juan Quintela
2009-09-09 10:47 ` [Qemu-devel] [PATCH 2/2] ram: Remove SaveVM Version 2 support Juan Quintela
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).