From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1chIHZ-0006AS-UG for qemu-devel@nongnu.org; Fri, 24 Feb 2017 10:59:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1chIHU-0001MI-Ug for qemu-devel@nongnu.org; Fri, 24 Feb 2017 10:59:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34930) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1chIHU-0001Lv-Ls for qemu-devel@nongnu.org; Fri, 24 Feb 2017 10:59:40 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AC161C054C3D for ; Fri, 24 Feb 2017 15:59:39 +0000 (UTC) References: <20170206173306.20603-1-dgilbert@redhat.com> <20170206173306.20603-12-dgilbert@redhat.com> From: Laurent Vivier Message-ID: <3c1015ae-7d38-8f27-6a34-50b8cfd6e8cf@redhat.com> Date: Fri, 24 Feb 2017 16:59:35 +0100 MIME-Version: 1.0 In-Reply-To: <20170206173306.20603-12-dgilbert@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 11/16] postcopy: Mask fault addresses to huge page boundary List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert (git)" , qemu-devel@nongnu.org, quintela@redhat.com Cc: aarcange@redhat.com On 06/02/2017 18:33, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" > > Currently the fault address received by userfault is rounded to > the host page boundary and a host page is requested from the source. > Use the current RAMBlock page size instead of the general host page > size so that for RAMBlocks backed by huge pages we request the whole > huge page. > > Signed-off-by: Dr. David Alan Gilbert > Reviewed-by: Juan Quintela > --- > include/exec/memory.h | 1 - > migration/postcopy-ram.c | 7 +++---- > 2 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/include/exec/memory.h b/include/exec/memory.h > index 987f925..c428891 100644 > --- a/include/exec/memory.h > +++ b/include/exec/memory.h > @@ -1614,7 +1614,6 @@ MemTxResult address_space_read_continue(AddressSpace *as, hwaddr addr, > MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr, > MemTxAttrs attrs, uint8_t *buf, int len); > void *qemu_map_ram_ptr(RAMBlock *ram_block, ram_addr_t addr); > - > static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) > { > if (is_write) { This hunk removing one blank line is strange... > diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c > index 4c736d2..03cbd6e 100644 > --- a/migration/postcopy-ram.c > +++ b/migration/postcopy-ram.c > @@ -403,7 +403,6 @@ static void *postcopy_ram_fault_thread(void *opaque) > MigrationIncomingState *mis = opaque; > struct uffd_msg msg; > int ret; > - size_t hostpagesize = getpagesize(); > RAMBlock *rb = NULL; > RAMBlock *last_rb = NULL; /* last RAMBlock we sent part of */ > > @@ -470,7 +469,7 @@ static void *postcopy_ram_fault_thread(void *opaque) > break; > } > > - rb_offset &= ~(hostpagesize - 1); > + rb_offset &= ~(qemu_ram_pagesize(rb) - 1); > trace_postcopy_ram_fault_thread_request(msg.arg.pagefault.address, > qemu_ram_get_idstr(rb), > rb_offset); > @@ -482,11 +481,11 @@ static void *postcopy_ram_fault_thread(void *opaque) > if (rb != last_rb) { > last_rb = rb; > migrate_send_rp_req_pages(mis, qemu_ram_get_idstr(rb), > - rb_offset, hostpagesize); > + rb_offset, qemu_ram_pagesize(rb)); > } else { > /* Save some space */ > migrate_send_rp_req_pages(mis, NULL, > - rb_offset, hostpagesize); > + rb_offset, qemu_ram_pagesize(rb)); > } > } > trace_postcopy_ram_fault_thread_exit(); > Reviewed-by: Laurent Vivier