[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 28/29] memory: make cpu_physical_memory_sync_dir
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH 28/29] memory: make cpu_physical_memory_sync_dirty_bitmap() fully atomic |
Date: |
Tue, 26 May 2015 20:45:30 +0800 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Mon, 04/27 18:28, Paolo Bonzini wrote:
> From: Stefan Hajnoczi <address@hidden>
>
> The fast path of cpu_physical_memory_sync_dirty_bitmap() directly
> manipulates the dirty bitmap. Use atomic_xchg() to make the
> test-and-clear atomic.
>
> Signed-off-by: Stefan Hajnoczi <address@hidden>
> Message-Id: <address@hidden>
> [Only do xchg on nonzero words. - Paolo]
> Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
> ---
> include/exec/ram_addr.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index ea77187..0baba41 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -224,12 +224,12 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(unsigned
> long *dest,
>
> for (k = page; k < page + nr; k++) {
> if (src[k]) {
> + unsigned long bits = atomic_xchg(&src[k], 0);
> unsigned long new_dirty;
> new_dirty = ~dest[k];
> - dest[k] |= src[k];
> - new_dirty &= src[k];
> + dest[k] |= bits;
> + new_dirty &= bits;
> num_dirty += ctpopl(new_dirty);
> - src[k] = 0;
> }
> }
> } else {
> --
> 1.8.3.1
>
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 28/29] memory: make cpu_physical_memory_sync_dirty_bitmap() fully atomic,
Fam Zheng <=