From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49291) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etY6y-0005ub-Sx for qemu-devel@nongnu.org; Wed, 07 Mar 2018 07:24:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1etY6s-00071s-UD for qemu-devel@nongnu.org; Wed, 07 Mar 2018 07:24:00 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:46066 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1etY6s-00071i-PM for qemu-devel@nongnu.org; Wed, 07 Mar 2018 07:23:54 -0500 Date: Wed, 7 Mar 2018 12:23:49 +0000 From: "Dr. David Alan Gilbert" Message-ID: <20180307122348.GC3089@work-vm> References: <1519980450-3404-1-git-send-email-wei.w.wang@intel.com> <1519980450-3404-2-git-send-email-wei.w.wang@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1519980450-3404-2-git-send-email-wei.w.wang@intel.com> Subject: Re: [Qemu-devel] [PATCH v3 1/3] migration: API to clear bits of guest free pages from the dirty bitmap List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wei Wang Cc: qemu-devel@nongnu.org, virtio-dev@lists.oasis-open.org, mst@redhat.com, quintela@redhat.com, pbonzini@redhat.com, liliang.opensource@gmail.com, yang.zhang.wz@gmail.com, quan.xu0@gmail.com, nilal@redhat.com, riel@redhat.com * Wei Wang (wei.w.wang@intel.com) wrote: > This patch adds an API to clear bits corresponding to guest free pages > from the dirty bitmap. Spilt the free page block if it crosses the QEMU > RAMBlock boundary. > > Signed-off-by: Wei Wang > CC: Dr. David Alan Gilbert > CC: Juan Quintela > CC: Michael S. Tsirkin Reviewed-by: Dr. David Alan Gilbert > --- > include/migration/misc.h | 2 ++ > migration/ram.c | 20 ++++++++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/include/migration/misc.h b/include/migration/misc.h > index 77fd4f5..fae1acf 100644 > --- a/include/migration/misc.h > +++ b/include/migration/misc.h > @@ -14,11 +14,13 @@ > #ifndef MIGRATION_MISC_H > #define MIGRATION_MISC_H > > +#include "exec/cpu-common.h" > #include "qemu/notify.h" > > /* migration/ram.c */ > > void ram_mig_init(void); > +void qemu_guest_free_page_hint(void *addr, size_t len); > > /* migration/block.c */ > > diff --git a/migration/ram.c b/migration/ram.c > index 5e33e5c..769a0f6 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -2189,6 +2189,26 @@ static int ram_init_all(RAMState **rsp) > return 0; > } > > +void qemu_guest_free_page_hint(void *addr, size_t len) > +{ > + RAMBlock *block; > + ram_addr_t offset; > + size_t used_len, start, npages; > + > + for (used_len = len; len > 0; len -= used_len) { > + block = qemu_ram_block_from_host(addr, false, &offset); > + if (unlikely(offset + len > block->used_length)) { > + used_len = block->used_length - offset; > + addr += used_len; > + } > + > + start = offset >> TARGET_PAGE_BITS; > + npages = used_len >> TARGET_PAGE_BITS; > + bitmap_clear(block->bmap, start, npages); > + ram_state->migration_dirty_pages -= npages; > + } > +} > + > /* > * Each of ram_save_setup, ram_save_iterate and ram_save_complete has > * long-running RCU critical section. When rcu-reclaims in the code > -- > 1.8.3.1 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK