From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34325) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF2Am-0008Cd-Hl for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:17:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TF2Ag-0008I7-Js for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:17:32 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:62051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF2Ag-0008Ho-EY for qemu-devel@nongnu.org; Fri, 21 Sep 2012 08:17:26 -0400 Received: by pbbrp12 with SMTP id rp12so7557876pbb.4 for ; Fri, 21 Sep 2012 05:17:25 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <505C5AD0.1080903@redhat.com> Date: Fri, 21 Sep 2012 14:17:20 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1348217255-22441-1-git-send-email-quintela@redhat.com> <1348217255-22441-3-git-send-email-quintela@redhat.com> In-Reply-To: <1348217255-22441-3-git-send-email-quintela@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 02/41] fix migration sync List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Juan Quintela Cc: qemu-devel@nongnu.org Il 21/09/2012 10:46, Juan Quintela ha scritto: > Signed-off-by: Juan Quintela > --- > arch_init.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch_init.c b/arch_init.c > index f849f9b..cdd8ab7 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -489,6 +489,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque) > ram_addr_t addr; > RAMBlock *block; > > + memory_global_sync_dirty_bitmap(get_system_memory()); Does it make sense to call this function before memory_global_dirty_log_start()? Also, does this call subsume this loop: QLIST_FOREACH(block, &ram_list.blocks, next) { for (addr = 0; addr < block->length; addr += TARGET_PAGE_SIZE) { if (!memory_region_get_dirty(block->mr, addr, TARGET_PAGE_SIZE, DIRTY_MEMORY_MIGRATION)) { memory_region_set_dirty(block->mr, addr, TARGET_PAGE_SIZE); } } } so that the right fix is - QLIST_FOREACH(block, &ram_list.blocks, next) { - for (addr = 0; addr < block->length; addr += TARGET_PAGE_SIZE) { - if (!memory_region_get_dirty(block->mr, addr, TARGET_PAGE_SIZE, - DIRTY_MEMORY_MIGRATION)) { - memory_region_set_dirty(block->mr, addr, TARGET_PAGE_SIZE); - } - } - } - memory_global_dirty_log_start(); + memory_global_sync_dirty_bitmap(get_system_memory()); ? Paolo > bytes_transferred = 0; > last_block = NULL; > last_offset = 0; >