[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] migration: Fix madvise breakage if host and gue
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH] migration: Fix madvise breakage if host and guest have different page sizes |
Date: |
Wed, 21 Nov 2012 16:42:35 +1100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Nov 21, 2012 at 03:59:25PM +1100, David Gibson wrote:
> madvise(DONTNEED) will throw away the contents of the whole page at the
> given address, even if the given length is less than the page size. One
> can argue about whether that's the correct behaviour, but that's what it's
> done for a long time in Linux at least.
>
> That means that the madvise() in ram_load(), on a setup where
> TARGET_PAGE_SIZE is smaller than the host page size, can throw away data
> in guest pages adjacent to the one it's actually processing right now,
> leading to guest memory corruption on an incoming migration.
>
> This patch therefore, disables the madvise() if the host page size is
> larger than TARGET_PAGE_SIZE. This means we don't get the benefits of that
> madvise() in this case, but a more complete fix is more difficult to
> accomplish. This at least fixes the guest memory corruption.
>
> Signed-off-by: David Gibson <address@hidden>
Sorry, forgot to add:
Reported-by: Alexey Kardashevskiy <address@hidden>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson