summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@web.de>2009-05-22 23:51:45 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-05-28 02:14:56 -0500
commit9fa06385f634764203b98c83cc8fd6fbf15331f2 (patch)
treebeb931ec87aa18ede7c35f379ad02244a05fdcc4
parentde65fe0f9b25bb2257b0188e06f472991c87ce47 (diff)
kvm: Mark full address range dirty on live migration start
As Avi correctly noted, last_ram_offset does not mark the last physical RAM address the guest may see (due to non-continuous memory regions). Ensure that we catch them all by marking the full possible address range dirty. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--targphys.h2
-rw-r--r--vl.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/targphys.h b/targphys.h
index 81a9c3733..99ab23c7a 100644
--- a/targphys.h
+++ b/targphys.h
@@ -12,9 +12,11 @@
#if TARGET_PHYS_ADDR_BITS == 32
typedef uint32_t target_phys_addr_t;
+#define TARGET_PHYS_ADDR_MAX UINT32_MAX
#define TARGET_FMT_plx "%08x"
#elif TARGET_PHYS_ADDR_BITS == 64
typedef uint64_t target_phys_addr_t;
+#define TARGET_PHYS_ADDR_MAX UINT64_MAX
#define TARGET_FMT_plx "%016" PRIx64
#endif
#endif
diff --git a/vl.c b/vl.c
index 8ab166583..f8c0d00f6 100644
--- a/vl.c
+++ b/vl.c
@@ -3231,7 +3231,7 @@ static int ram_save_live(QEMUFile *f, int stage, void *opaque)
{
ram_addr_t addr;
- if (cpu_physical_sync_dirty_bitmap(0, last_ram_offset) != 0) {
+ if (cpu_physical_sync_dirty_bitmap(0, TARGET_PHYS_ADDR_MAX) != 0) {
qemu_file_set_error(f);
return 0;
}