All of lore.kernel.org
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.vnet.ibm.com>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>,
	qemu-devel@nongnu.org, quintela@redhat.com
Cc: lvivier@redhat.com, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 2/2] postcopy: Check for shared memory
Date: Thu, 9 Mar 2017 17:00:19 +0100	[thread overview]
Message-ID: <1584ce47-ec53-efc7-b790-5288252121ed@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170309132216.23482-3-dgilbert@redhat.com>



On 03/09/2017 02:22 PM, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> Postcopy doesn't support migration of RAM shared with another process
> yet (we've got a bunch of things to understand).
> Check for the case and don't allow postcopy to be enabled.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  migration/postcopy-ram.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> index effbeb6..dc80dbb 100644
> --- a/migration/postcopy-ram.c
> +++ b/migration/postcopy-ram.c
> @@ -95,6 +95,19 @@ static bool ufd_version_check(int ufd)
>      return true;
>  }
> 
> +/* Callback from postcopy_ram_supported_by_host block iterator.
> + */
> +static int test_range_shared(const char *block_name, void *host_addr,
> +                             ram_addr_t offset, ram_addr_t length, void *opaque)
> +{
> +    if (qemu_ram_is_shared(qemu_ram_block_by_name(block_name))) {
> +        error_report("Postcopy on shared RAM (%s) is not yet supported",
> +                     block_name);
> +        return 1;
> +    }
> +    return 0;
> +}
> +

Hm, this stuff with the iterator seemed a bit strange (too complicated)
first, but I'm not familiar with this code. I have no idea why is
RAMBlockIterFunc
 
typedef int (RAMBlockIterFunc)(const char *block_name, void *host_addr,
    ram_addr_t offset, ram_addr_t length, void *opaque)

and not 

typedef int (RAMBlockIterFunc)(RAMBlock *block, void *opaque).

The reason does not seem to be abstraction.

>  /*
>   * Note: This has the side effect of munlock'ing all of RAM, that's
>   * normally fine since if the postcopy succeeds it gets turned back on at the
> @@ -127,6 +140,11 @@ bool postcopy_ram_supported_by_host(void)
>          goto out;
>      }
> 
> +    /* We don't support postcopy with shared RAM yet */
> +    if (qemu_ram_foreach_block(test_range_shared, NULL)) {
> +        goto out;
> +    }
> +

But using ram_list directly does not seem to be a good alternative to me,
and I do not see a third alternative.

So besides some cosmetic stuff I have nothing to add. Cosmetic stuff is:
* why range instead of block in test_range_shared
* I think we could move this up so that we can return directly
and do not acquire resources which need cleanup

Regardless of the cosmetics:
Reviewed-by: Halil Pasic <pasic@linux.vnet.ibm.com>


>      /*
>       * userfault and mlock don't go together; we'll put it back later if
>       * it was enabled.
> 

  reply	other threads:[~2017-03-09 16:01 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-09 13:22 [Qemu-devel] [PATCH v2 0/2] migration/postcopy: Disable shared RAM Dr. David Alan Gilbert (git)
2017-03-09 13:22 ` [Qemu-devel] [PATCH v2 1/2] RAMBlocks: qemu_ram_is_shared Dr. David Alan Gilbert (git)
2017-03-09 14:07   ` Philippe Mathieu-Daudé
2017-03-09 14:13   ` Halil Pasic
2017-03-13 10:48   ` Juan Quintela
2017-03-09 13:22 ` [Qemu-devel] [PATCH v2 2/2] postcopy: Check for shared memory Dr. David Alan Gilbert (git)
2017-03-09 16:00   ` Halil Pasic [this message]
2017-03-09 16:06     ` Dr. David Alan Gilbert
2017-03-09 17:04       ` Halil Pasic
2017-03-13 10:50   ` Juan Quintela

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=1584ce47-ec53-efc7-b790-5288252121ed@linux.vnet.ibm.com \
    --to=pasic@linux.vnet.ibm.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.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.