Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> --- arch_init.c | 28 +++++++++++++++++----------- migration.h | 1 + 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/arch_init.c b/arch_init.c index 982c846..249b440 100644 --- a/arch_init.c +++ b/arch_init.c @@ -261,9 +261,24 @@ void ram_save_live_mem_size(QEMUFile *f) } } +void ram_save_memory_set_dirty(void) +{ + RAMBlock *block; + + QLIST_FOREACH(block, &ram_list.blocks, next) { + ram_addr_t addr; + for (addr = block->offset; addr < block->offset + block->length; + addr += TARGET_PAGE_SIZE) { + if (!cpu_physical_memory_get_dirty(addr, + MIGRATION_DIRTY_FLAG)) { + cpu_physical_memory_set_dirty(addr); + } + } + } +} + int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) { - ram_addr_t addr; uint64_t bytes_transferred_last; double bwidth = 0; uint64_t expected_time = 0; @@ -280,7 +295,6 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) } if (stage == 1) { - RAMBlock *block; bytes_transferred = 0; last_block_sent = NULL; last_block = NULL; @@ -288,15 +302,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) sort_ram_list(); /* Make sure all dirty bits are set */ - QLIST_FOREACH(block, &ram_list.blocks, next) { - for (addr = block->offset; addr < block->offset + block->length; - addr += TARGET_PAGE_SIZE) { - if (!cpu_physical_memory_get_dirty(addr, - MIGRATION_DIRTY_FLAG)) { - cpu_physical_memory_set_dirty(addr); - } - } - } + ram_save_memory_set_dirty(); /* Enable dirty memory tracking */ cpu_physical_memory_set_dirty_tracking(1); diff --git a/migration.h b/migration.h index cb4a2d5..6459457 100644 --- a/migration.h +++ b/migration.h @@ -80,6 +80,7 @@ uint64_t ram_bytes_total(void); void sort_ram_list(void); int ram_save_block(QEMUFile *f); +void ram_save_memory_set_dirty(void); void ram_save_live_mem_size(QEMUFile *f); int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque); int ram_load(QEMUFile *f, void *opaque, int version_id); -- 1.7.1.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html