All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Wei Yang <richardw.yang@linux.intel.com>
Cc: qemu-devel@nongnu.org, quintela@redhat.com
Subject: Re: [Patch v2 5/6] migration/postcopy: enable random order target page arrival
Date: Thu, 7 Nov 2019 14:30:25 +0000	[thread overview]
Message-ID: <20191107143025.GK2816@work-vm> (raw)
In-Reply-To: <20191107123907.29791-6-richardw.yang@linux.intel.com>

* Wei Yang (richardw.yang@linux.intel.com) wrote:
> After using number of target page received to track one host page, we
> could have the capability to handle random order target page arrival in
> one host page.
> 
> This is a preparation for enabling compress during postcopy.
> 
> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>

Yep, that's better

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


> ---
> v2:
>    * use uintptr_t to calculate place_dest
>    * check target pages belongs to the same host page
> ---
>  migration/ram.c | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index b5759793a9..666ad69284 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -4015,7 +4015,7 @@ static int ram_load_postcopy(QEMUFile *f)
>      MigrationIncomingState *mis = migration_incoming_get_current();
>      /* Temporary page that is later 'placed' */
>      void *postcopy_host_page = mis->postcopy_tmp_page;
> -    void *last_host = NULL;
> +    void *this_host = NULL;
>      bool all_zero = false;
>      int target_pages = 0;
>  
> @@ -4062,24 +4062,26 @@ static int ram_load_postcopy(QEMUFile *f)
>               * that's moved into place later.
>               * The migration protocol uses,  possibly smaller, target-pages
>               * however the source ensures it always sends all the components
> -             * of a host page in order.
> +             * of a host page in one chunk.
>               */
>              page_buffer = postcopy_host_page +
>                            ((uintptr_t)host & (block->page_size - 1));
>              /* If all TP are zero then we can optimise the place */
>              if (target_pages == 1) {
>                  all_zero = true;
> +                this_host = (void *)QEMU_ALIGN_DOWN((uintptr_t)host,
> +                                                    block->page_size);
>              } else {
>                  /* not the 1st TP within the HP */
> -                if (host != (last_host + TARGET_PAGE_SIZE)) {
> -                    error_report("Non-sequential target page %p/%p",
> -                                  host, last_host);
> +                if (QEMU_ALIGN_DOWN((uintptr_t)host, block->page_size) !=
> +                    (uintptr_t)this_host) {
> +                    error_report("Non-same host page %p/%p",
> +                                  host, this_host);
>                      ret = -EINVAL;
>                      break;
>                  }
>              }
>  
> -
>              /*
>               * If it's the last part of a host page then we place the host
>               * page
> @@ -4090,7 +4092,6 @@ static int ram_load_postcopy(QEMUFile *f)
>              }
>              place_source = postcopy_host_page;
>          }
> -        last_host = host;
>  
>          switch (flags & ~RAM_SAVE_FLAG_CONTINUE) {
>          case RAM_SAVE_FLAG_ZERO:
> @@ -4143,7 +4144,8 @@ static int ram_load_postcopy(QEMUFile *f)
>  
>          if (!ret && place_needed) {
>              /* This gets called at the last target page in the host page */
> -            void *place_dest = host + TARGET_PAGE_SIZE - block->page_size;
> +            void *place_dest = (void *)QEMU_ALIGN_DOWN((uintptr_t)host,
> +                                                       block->page_size);
>  
>              if (all_zero) {
>                  ret = postcopy_place_page_zero(mis, place_dest,
> -- 
> 2.17.1
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



  reply	other threads:[~2019-11-07 14:33 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-07 12:39 [Patch v2 0/6] migration/postcopy: enable compress during postcopy Wei Yang
2019-11-07 12:39 ` [Patch v2 1/6] migration/postcopy: reduce memset when it is zero page and matches_target_page_size Wei Yang
2020-01-09  9:39   ` Juan Quintela
2019-11-07 12:39 ` [Patch v2 2/6] migration/postcopy: wait for decompress thread in precopy Wei Yang
2020-01-09  9:40   ` Juan Quintela
2019-11-07 12:39 ` [Patch v2 3/6] migration/postcopy: count target page number to decide the place_needed Wei Yang
2020-01-09  9:41   ` Juan Quintela
2019-11-07 12:39 ` [Patch v2 4/6] migration/postcopy: set all_zero to true on the first target page Wei Yang
2020-01-09  9:41   ` Juan Quintela
2019-11-07 12:39 ` [Patch v2 5/6] migration/postcopy: enable random order target page arrival Wei Yang
2019-11-07 14:30   ` Dr. David Alan Gilbert [this message]
2019-11-08  0:40     ` Wei Yang
2020-01-09  9:42   ` Juan Quintela
2019-11-07 12:39 ` [Patch v2 6/6] migration/postcopy: enable compress during postcopy Wei Yang
2020-01-09  9:44   ` Juan Quintela
2019-12-16  2:35 ` [Patch v2 0/6] " Wei Yang
2019-12-18 19:55   ` Dr. David Alan Gilbert
2020-01-06  1:29     ` Wei Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191107143025.GK2816@work-vm \
    --to=dgilbert@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=richardw.yang@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.