[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 13/29] ram_addr: tweaks to xen_modified_memory
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v3 13/29] ram_addr: tweaks to xen_modified_memory |
Date: |
Tue, 26 May 2015 18:54:49 +0200 |
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.
Acked-by: Stefano Stabellini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Paolo Bonzini <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 e19ab22..c90dc72 100644
--- a/exec.c
+++ b/exec.c
@@ -2285,8 +2285,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...)
--
1.8.3.1
- [Qemu-devel] [PATCH v3 00/29] Dirty bitmap atomic access and optimizations, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 02/29] g364fb: remove pointless call to memory_region_set_coalescing, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 01/29] memory: the only dirty memory flag for users is DIRTY_MEMORY_VGA, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 03/29] display: enable DIRTY_MEMORY_VGA tracking explicitly, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 18/29] translate-all: make less of tb_invalidate_phys_page_range depend on is_cpu_write_access, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 20/29] exec: invert return value of cpu_physical_memory_get_clean, rename, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 10/29] kvm: accept non-mapped memory in kvm_dirty_pages_log_change, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 13/29] ram_addr: tweaks to xen_modified_memory,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v3 09/29] memory: track DIRTY_MEMORY_CODE in mr->dirty_log_mask, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 22/29] memory: do not touch code dirty bitmap unless TCG is enabled, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 05/29] memory: differentiate memory_region_is_logging and memory_region_get_dirty_log_mask, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 04/29] display: add memory_region_sync_dirty_bitmap calls, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 15/29] exec: move functions to translate-all.h, Paolo Bonzini, 2015/05/26
- [Qemu-devel] [PATCH v3 23/29] bitmap: add atomic set functions, Paolo Bonzini, 2015/05/26