[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/22] ram_addr: tweaks to xen_modified_memory
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [PATCH 10/22] ram_addr: tweaks to xen_modified_memory |
Date: |
Sat, 28 Mar 2015 19:04:22 +0000 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Thu, 26 Mar 2015, Paolo Bonzini wrote:
> Invoke xen_modified_memory from cpu_physical_memory_set_dirty_range_nocode;
> it is akin to DIRTY_MEMORY_MIGRATION, so set it together with that bitmap.
> The remaining call from invalidate_and_set_dirty's "else" branch will go
> away soon.
>
> Second, fix the second argument to the function in the
> cpu_physical_memory_set_dirty_lebitmap call site. That function is only used
> by KVM, but it is better to be clean anyway.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
Acked-by: Stefano Stabellini <address@hidden>
> exec.c | 3 ++-
> include/exec/ram_addr.h | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index 8eb73fd..ffa57dd 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -2261,8 +2261,9 @@ static void invalidate_and_set_dirty(hwaddr addr,
> if (cpu_physical_memory_range_includes_clean(addr, length)) {
> tb_invalidate_phys_range(addr, addr + length, 0);
> cpu_physical_memory_set_dirty_range_nocode(addr, length);
> + } else {
> + xen_modified_memory(addr, length);
> }
> - xen_modified_memory(addr, length);
> }
>
> static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr)
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index ff558a4..7f6e928 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -112,6 +112,7 @@ static inline void
> cpu_physical_memory_set_dirty_range_nocode(ram_addr_t start,
> page = start >> TARGET_PAGE_BITS;
> bitmap_set(ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION], page, end -
> page);
> bitmap_set(ram_list.dirty_memory[DIRTY_MEMORY_VGA], page, end - page);
> + xen_modified_memory(start, length);
> }
>
> static inline void cpu_physical_memory_set_dirty_range(ram_addr_t start,
> @@ -155,7 +156,7 @@ static inline void
> cpu_physical_memory_set_dirty_lebitmap(unsigned long *bitmap,
> ram_list.dirty_memory[DIRTY_MEMORY_CODE][page + k] |= temp;
> }
> }
> - xen_modified_memory(start, pages);
> + xen_modified_memory(start, pages << TARGET_PAGE_BITS);
> } else {
> /*
> * bitmap-traveling is faster than memory-traveling (for addr...)
> --
> 2.3.3
>
>
>
- [Qemu-devel] [PATCH 04/22] display: enable DIRTY_MEMORY_VGA tracking explicitly, (continued)
- [Qemu-devel] [PATCH 04/22] display: enable DIRTY_MEMORY_VGA tracking explicitly, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 07/22] ui/console: check memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 05/22] memory: return bitmap from memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 09/22] memory: return DIRTY_MEMORY_MIGRATION from memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 12/22] exec: use memory_region_is_logging to optimize dirty tracking, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 06/22] framebuffer: check memory_region_is_logging, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 10/22] ram_addr: tweaks to xen_modified_memory, Paolo Bonzini, 2015/03/26
- Re: [Qemu-devel] [PATCH 10/22] ram_addr: tweaks to xen_modified_memory,
Stefano Stabellini <=
- [Qemu-devel] [PATCH 08/22] memory: track DIRTY_MEMORY_CODE in mr->dirty_log_mask, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 13/22] exec: pass client mask to cpu_physical_memory_set_dirty_range, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 11/22] exec: simplify notdirty_mem_write, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 14/22] exec: only check relevant bitmaps for cleanliness, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 15/22] memory: do not touch code dirty bitmap unless TCG is enabled, Paolo Bonzini, 2015/03/26
- [Qemu-devel] [PATCH 17/22] bitmap: add atomic test and clear, Paolo Bonzini, 2015/03/26