qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Jason J. Herne" <jjherne@linux.vnet.ibm.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>
Cc: aarcange@redhat.com, akpm@linux-foundation.org,
	qemu-devel <qemu-devel@nongnu.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] mm: Loosen MADV_NOHUGEPAGE to enable Qemu postcopy on s390
Date: Thu, 19 Nov 2015 09:30:42 -0500	[thread overview]
Message-ID: <564DDD12.3070302@linux.vnet.ibm.com> (raw)
In-Reply-To: <20151119131011.GD2653@work-vm>

On 11/19/2015 08:10 AM, Dr. David Alan Gilbert wrote:
> * Christian Borntraeger (borntraeger@de.ibm.com) wrote:
>> On 11/18/2015 02:31 PM, Vlastimil Babka wrote:
>>> [CC += linux-api@vger.kernel.org]
...
> Can you tell me if the following works for you:
>
>
>  From 545809a18fa768eccdaafe9bd842490c3390b00c Mon Sep 17 00:00:00 2001
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Date: Thu, 19 Nov 2015 12:05:36 +0000
> Subject: [PATCH] Assume madvise for (no)hugepage works
>
> madvise() returns EINVAL in the case of many failures, but also
> returns it in cases where the host kernel doesn't have THP enabled.
> Postcopy only really cares that THP is off before it detects faults,
> and turns it back on afterwards; so we're going to have
> to assume that if the madvise fails then the host just doesn't do
> THP and we can carry on with the postcopy.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>   migration/postcopy-ram.c | 10 ++--------
>   1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> index 22d6b18..3946aa9 100644
> --- a/migration/postcopy-ram.c
> +++ b/migration/postcopy-ram.c
> @@ -241,10 +241,7 @@ static int cleanup_range(const char *block_name, void *host_addr,
>        * We turned off hugepage for the precopy stage with postcopy enabled
>        * we can turn it back on now.
>        */
> -    if (qemu_madvise(host_addr, length, QEMU_MADV_HUGEPAGE)) {
> -        error_report("%s HUGEPAGE: %s", __func__, strerror(errno));
> -        return -1;
> -    }
> +    qemu_madvise(host_addr, length, QEMU_MADV_HUGEPAGE);
>
>       /*
>        * We can also turn off userfault now since we should have all the
> @@ -345,10 +342,7 @@ static int nhp_range(const char *block_name, void *host_addr,
>        * do delete areas of the page, even if THP thinks a hugepage would
>        * be a good idea, so force hugepages off.
>        */
> -    if (qemu_madvise(host_addr, length, QEMU_MADV_NOHUGEPAGE)) {
> -        error_report("%s: NOHUGEPAGE: %s", __func__, strerror(errno));
> -        return -1;
> -    }
> +    qemu_madvise(host_addr, length, QEMU_MADV_NOHUGEPAGE);
>
>       return 0;
>   }
>

I tried this without my madvise kernel patch, and was able to get by the 
problem as expected.

We still need the kernel patch set "Allow gmap fault to retry​" as 
posted to linux-mm to get
userfaultfd support playing nicely with s390 async page faults. But that 
is a separate problem
entirely.

Tested-by: Jason J. Herne <jjherne@linux.vnet.ibm.com>

-- 
-- Jason J. Herne (jjherne@linux.vnet.ibm.com)

      reply	other threads:[~2015-11-19 14:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1447341516-18076-1-git-send-email-jjherne@linux.vnet.ibm.com>
     [not found] ` <564C7DCA.8010400@suse.cz>
2015-11-19  8:22   ` [Qemu-devel] [PATCH] mm: Loosen MADV_NOHUGEPAGE to enable Qemu postcopy on s390 Christian Borntraeger
2015-11-19  9:31     ` Vlastimil Babka
2015-11-19  9:43     ` Dr. David Alan Gilbert
2015-11-19 13:10     ` Dr. David Alan Gilbert
2015-11-19 14:30       ` Jason J. Herne [this message]

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=564DDD12.3070302@linux.vnet.ibm.com \
    --to=jjherne@linux.vnet.ibm.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=borntraeger@de.ibm.com \
    --cc=dgilbert@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=vbabka@suse.cz \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).