[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 11/16] postcopy: Mask fault addresses to huge
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v2 11/16] postcopy: Mask fault addresses to huge page boundary |
Date: |
Fri, 24 Feb 2017 16:34:34 +0000 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
* Laurent Vivier (address@hidden) wrote:
> On 06/02/2017 18:33, Dr. David Alan Gilbert (git) wrote:
> > From: "Dr. David Alan Gilbert" <address@hidden>
> >
> > 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 <address@hidden>
> > Reviewed-by: Juan Quintela <address@hidden>
> > ---
> > 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...
Oops, cleaned up.
Dave
> > 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 <address@hidden>
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- [Qemu-devel] [PATCH v2 02/16] postcopy: Transmit and compare individual page sizes, (continued)
- [Qemu-devel] [PATCH v2 07/16] postcopy: Record largest page size, Dr. David Alan Gilbert (git), 2017/02/06
- [Qemu-devel] [PATCH v2 11/16] postcopy: Mask fault addresses to huge page boundary, Dr. David Alan Gilbert (git), 2017/02/06
- [Qemu-devel] [PATCH v2 08/16] postcopy: Plumb pagesize down into place helpers, Dr. David Alan Gilbert (git), 2017/02/06
- [Qemu-devel] [PATCH v2 13/16] postcopy: Allow hugepages, Dr. David Alan Gilbert (git), 2017/02/06
- [Qemu-devel] [PATCH v2 14/16] postcopy: Update userfaultfd.h header, Dr. David Alan Gilbert (git), 2017/02/06
- [Qemu-devel] [PATCH v2 12/16] postcopy: Send whole huge pages, Dr. David Alan Gilbert (git), 2017/02/06