From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6BTZ-0002pw-59 for qemu-devel@nongnu.org; Sun, 04 Aug 2013 23:29:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V6BTQ-0001DG-7W for qemu-devel@nongnu.org; Sun, 04 Aug 2013 23:28:53 -0400 Received: from e23smtp08.au.ibm.com ([202.81.31.141]:35804) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6BTP-0001Cy-L3 for qemu-devel@nongnu.org; Sun, 04 Aug 2013 23:28:44 -0400 Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 5 Aug 2013 13:25:33 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp01.au.ibm.com (Postfix) with ESMTP id A75A32CE8052 for ; Mon, 5 Aug 2013 13:28:36 +1000 (EST) Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r753ClkR11010408 for ; Mon, 5 Aug 2013 13:12:49 +1000 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r753SXfA017483 for ; Mon, 5 Aug 2013 13:28:34 +1000 Message-ID: <51FF1BAF.2020102@linux.vnet.ibm.com> Date: Mon, 05 Aug 2013 11:27:43 +0800 From: Lei Li MIME-Version: 1.0 References: <1374783499-2550-1-git-send-email-lilei@linux.vnet.ibm.com> <1374783499-2550-6-git-send-email-lilei@linux.vnet.ibm.com> <51FC0B97.5060409@linux.vnet.ibm.com> In-Reply-To: <51FC0B97.5060409@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 05/12] arch_init: introduce ram_save_local() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael R. Hines" Cc: aarcange@redhat.com, aliguori@us.ibm.com, quintela@redhat.com, qemu-devel@nongnu.org, lagarcia@br.ibm.com, pbonzini@redhat.com, rcj@linux.vnet.ibm.com On 08/03/2013 03:42 AM, Michael R. Hines wrote: > On 07/25/2013 04:18 PM, Lei Li wrote: >> Signed-off-by: Lei Li >> --- >> arch_init.c | 32 ++++++++++++++++++++++++++++++++ >> 1 files changed, 32 insertions(+), 0 deletions(-) >> >> diff --git a/arch_init.c b/arch_init.c >> index a418071..7eeb52f 100644 >> --- a/arch_init.c >> +++ b/arch_init.c >> @@ -757,6 +757,38 @@ static int ram_page_save(QEMUFile *f) >> return bytes_sent; >> } >> >> +static int ram_save_local(QEMUFile *f, void *opaque) >> +{ >> + uint64_t bytes_sent = 0; >> + uint64_t total_ram_bytes = ram_bytes_total(); >> + >> + qemu_mutex_lock_ramlist(); >> + >> + while (total_ram_bytes) { >> + void *ram; >> + MemoryRegion *mr; >> + >> + bytes_sent = ram_page_save(f); >> + /* No more ram pages. */ >> + if (bytes_sent == 0) { >> + return bytes_sent; >> + } >> + >> + mr = last_block_local->mr; >> + ram = memory_region_get_ram_ptr(mr) + last_offset_local; >> + >> + /* DONTNEED the ram page that has already copied. */ >> + qemu_madvise(ram, bytes_sent, QEMU_MADV_DONTNEED); >> + total_ram_bytes -= bytes_sent; >> + } >> + >> + qemu_mutex_unlock_ramlist(); >> + >> + qemu_put_be64(f, RAM_SAVE_FLAG_EOS); >> + >> + return bytes_sent; >> +} >> + >> static int load_xbzrle(QEMUFile *f, ram_addr_t addr, void *host) >> { >> int ret, rc = 0; > > You need to create a new private structure "QEMUFileLocal". > > Then override f->save_page and point this to your own function. > > See migration-rdma.c for an example. Yes, I am looking at it. :) > > - Michael -- Lei