diff mbox

[RFC,v2,28/32] postcopy: Allow shared memory

Message ID 20170824192730.8440-29-dgilbert@redhat.com
State New
Headers show

Commit Message

Dr. David Alan Gilbert Aug. 24, 2017, 7:27 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

Now that we have the mechanisms in here, allow shared memory in a
postcopy.

Note that QEMU can't tell who all the users of shared regions are
and thus can't tell whether all the users of the shared regions
have appropriate support for postcopy.  Those devices that explicitly
support shared memory (e.g. vhost-user) must check, but it doesn't
stop weirder configurations causing problems.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/postcopy-ram.c | 6 ------
 1 file changed, 6 deletions(-)

Comments

Marc-André Lureau Aug. 30, 2017, 10:39 a.m. UTC | #1
Hi

On Thu, Aug 24, 2017 at 12:27 PM, Dr. David Alan Gilbert (git)
<dgilbert@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> Now that we have the mechanisms in here, allow shared memory in a
> postcopy.
>
> Note that QEMU can't tell who all the users of shared regions are
> and thus can't tell whether all the users of the shared regions
> have appropriate support for postcopy.  Those devices that explicitly
> support shared memory (e.g. vhost-user) must check, but it doesn't
> stop weirder configurations causing problems.
>

Other users should have their own migration blocker, I guess.

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

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  migration/postcopy-ram.c | 6 ------
>  1 file changed, 6 deletions(-)
>
> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> index 28791cf1f1..89c3aadda1 100644
> --- a/migration/postcopy-ram.c
> +++ b/migration/postcopy-ram.c
> @@ -138,12 +138,6 @@ static int test_ramblock_postcopiable(const char *block_name, void *host_addr,
>      RAMBlock *rb = qemu_ram_block_by_name(block_name);
>      size_t pagesize = qemu_ram_pagesize(rb);
>
> -    if (qemu_ram_is_shared(rb)) {
> -        error_report("Postcopy on shared RAM (%s) is not yet supported",
> -                     block_name);
> -        return 1;
> -    }
> -
>      if (length % pagesize) {
>          error_report("Postcopy requires RAM blocks to be a page size multiple,"
>                       " block %s is 0x" RAM_ADDR_FMT " bytes with a "
> --
> 2.13.5
>
>
Dr. David Alan Gilbert Sept. 7, 2017, 12:15 p.m. UTC | #2
* Marc-André Lureau (marcandre.lureau@gmail.com) wrote:
> Hi
> 
> On Thu, Aug 24, 2017 at 12:27 PM, Dr. David Alan Gilbert (git)
> <dgilbert@redhat.com> wrote:
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >
> > Now that we have the mechanisms in here, allow shared memory in a
> > postcopy.
> >
> > Note that QEMU can't tell who all the users of shared regions are
> > and thus can't tell whether all the users of the shared regions
> > have appropriate support for postcopy.  Those devices that explicitly
> > support shared memory (e.g. vhost-user) must check, but it doesn't
> > stop weirder configurations causing problems.
> >
> 
> Other users should have their own migration blocker, I guess.

Yes, the ones that know about it.
The tricky thing is you can add a shared=on to any memory object you
add; I don't know that the reason it's shared is purely because it's
used by vhost-user - for all qemu knows it could be shared with 5 other
things as well.

> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> 
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Thanks.

Dave

> 
> 
> > ---
> >  migration/postcopy-ram.c | 6 ------
> >  1 file changed, 6 deletions(-)
> >
> > diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> > index 28791cf1f1..89c3aadda1 100644
> > --- a/migration/postcopy-ram.c
> > +++ b/migration/postcopy-ram.c
> > @@ -138,12 +138,6 @@ static int test_ramblock_postcopiable(const char *block_name, void *host_addr,
> >      RAMBlock *rb = qemu_ram_block_by_name(block_name);
> >      size_t pagesize = qemu_ram_pagesize(rb);
> >
> > -    if (qemu_ram_is_shared(rb)) {
> > -        error_report("Postcopy on shared RAM (%s) is not yet supported",
> > -                     block_name);
> > -        return 1;
> > -    }
> > -
> >      if (length % pagesize) {
> >          error_report("Postcopy requires RAM blocks to be a page size multiple,"
> >                       " block %s is 0x" RAM_ADDR_FMT " bytes with a "
> > --
> > 2.13.5
> >
> >
> 
> 
> 
> -- 
> Marc-André Lureau
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox

Patch

diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index 28791cf1f1..89c3aadda1 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -138,12 +138,6 @@  static int test_ramblock_postcopiable(const char *block_name, void *host_addr,
     RAMBlock *rb = qemu_ram_block_by_name(block_name);
     size_t pagesize = qemu_ram_pagesize(rb);
 
-    if (qemu_ram_is_shared(rb)) {
-        error_report("Postcopy on shared RAM (%s) is not yet supported",
-                     block_name);
-        return 1;
-    }
-
     if (length % pagesize) {
         error_report("Postcopy requires RAM blocks to be a page size multiple,"
                      " block %s is 0x" RAM_ADDR_FMT " bytes with a "