From mboxrd@z Thu Jan 1 00:00:00 1970 From: Isaku Yamahata Subject: [PATCH 07/21] arch_init/ram_save_live: factor out ram_save_limit Date: Thu, 29 Dec 2011 10:25:46 +0900 Message-ID: <3236ce4f7db1bbc4b73704ed8152362496f8291f.1325055139.git.yamahata@valinux.co.jp> References: Cc: yamahata@valinux.co.jp, t.hirofuchi@aist.go.jp, satoshi.itoh@aist.go.jp To: kvm@vger.kernel.org, qemu-devel@nongnu.org Return-path: In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org Signed-off-by: Isaku Yamahata --- 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:33811) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rg4l1-000533-U0 for qemu-devel@nongnu.org; Wed, 28 Dec 2011 20:26:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rg4kz-0004J1-Oa for qemu-devel@nongnu.org; Wed, 28 Dec 2011 20:26:11 -0500 Received: from mail.valinux.co.jp ([210.128.90.3]:42976) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rg4kz-0004I2-0U for qemu-devel@nongnu.org; Wed, 28 Dec 2011 20:26:09 -0500 From: Isaku Yamahata Date: Thu, 29 Dec 2011 10:25:46 +0900 Message-Id: <3236ce4f7db1bbc4b73704ed8152362496f8291f.1325055139.git.yamahata@valinux.co.jp> In-Reply-To: References: In-Reply-To: References: Subject: [Qemu-devel] [PATCH 07/21] arch_init/ram_save_live: factor out ram_save_limit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: kvm@vger.kernel.org, qemu-devel@nongnu.org Cc: yamahata@valinux.co.jp, t.hirofuchi@aist.go.jp, satoshi.itoh@aist.go.jp Signed-off-by: Isaku Yamahata --- 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