qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH master, stable] vhost: fix dirty page handling


From: Juan Quintela
Subject: [Qemu-devel] Re: [PATCH master, stable] vhost: fix dirty page handling
Date: Wed, 16 Mar 2011 13:53:46 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

"Michael S. Tsirkin" <address@hidden> wrote:
> vhost was passing a physical address to cpu_physical_memory_set_dirty,
> which is wrong: we need to translate to ram address first.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
>
> Note: this lead to crashes during migration, so the patch
> is needed on the stable branch too.

Reviewed-by: Juan Quintela <address@hidden>

We have been having strange migration corruptions for some time, this
can explain what was going on.

> ---
>  hw/vhost.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/hw/vhost.c b/hw/vhost.c
> index aaa34e4..97a1299 100644
> --- a/hw/vhost.c
> +++ b/hw/vhost.c
> @@ -49,8 +49,10 @@ static void vhost_dev_sync_region(struct vhost_dev *dev,
>          log = __sync_fetch_and_and(from, 0);
>          while ((bit = sizeof(log) > sizeof(int) ?
>                  ffsll(log) : ffs(log))) {
> +            ram_addr_t ram_addr;
>              bit -= 1;
> -            cpu_physical_memory_set_dirty(addr + bit * VHOST_LOG_PAGE);
> +            ram_addr = cpu_get_physical_page_desc(addr + bit * 
> VHOST_LOG_PAGE);
> +            cpu_physical_memory_set_dirty(ram_addr);
>              log &= ~(0x1ull << bit);
>          }
>          addr += VHOST_LOG_CHUNK;
<#secure method=pgpmime mode=sign>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]