From 9fa06385f634764203b98c83cc8fd6fbf15331f2 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Fri, 22 May 2009 23:51:45 +0200 Subject: [PATCH] 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 Signed-off-by: Anthony Liguori --- targphys.h | 2 ++ vl.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/targphys.h b/targphys.h index 81a9c37..99ab23c 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 8ab1665..f8c0d00 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; } -- 2.7.4