diff options
| author | Avi Kivity <avi@redhat.com> | 2011-12-15 16:24:49 +0200 |
|---|---|---|
| committer | Avi Kivity <avi@redhat.com> | 2011-12-20 14:14:07 +0200 |
| commit | 86e775c654b775d3e295e8a33bb03cc03bdab68d (patch) | |
| tree | d9be19c7f6d72dbe973f9d9a7f0d8df74c285580 | |
| parent | c1cd0b2c5131f24504d4513c4160cec73d53b326 (diff) | |
| download | focaccia-qemu-86e775c654b775d3e295e8a33bb03cc03bdab68d.tar.gz focaccia-qemu-86e775c654b775d3e295e8a33bb03cc03bdab68d.zip | |
memory: replace cpu_physical_sync_dirty_bitmap() with a memory API
The function is still used as the implementation. Signed-off-by: Avi Kivity <avi@redhat.com>
| -rw-r--r-- | arch_init.c | 6 | ||||
| -rw-r--r-- | cpu-all.h | 3 | ||||
| -rw-r--r-- | exec-obsolete.h | 3 | ||||
| -rw-r--r-- | memory.c | 4 | ||||
| -rw-r--r-- | memory.h | 10 |
5 files changed, 19 insertions, 7 deletions
diff --git a/arch_init.c b/arch_init.c index a411fdf263..ceef26ef17 100644 --- a/arch_init.c +++ b/arch_init.c @@ -41,6 +41,7 @@ #include "net.h" #include "gdbstub.h" #include "hw/smbios.h" +#include "exec-memory.h" #ifdef TARGET_SPARC int graphic_width = 1024; @@ -263,10 +264,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) return 0; } - if (cpu_physical_sync_dirty_bitmap(0, TARGET_PHYS_ADDR_MAX) != 0) { - qemu_file_set_error(f, -EINVAL); - return -EINVAL; - } + memory_global_sync_dirty_bitmap(get_system_memory()); if (stage == 1) { RAMBlock *block; diff --git a/cpu-all.h b/cpu-all.h index 9d787151e1..f2c53827ef 100644 --- a/cpu-all.h +++ b/cpu-all.h @@ -569,9 +569,6 @@ int cpu_physical_memory_set_dirty_tracking(int enable); int cpu_physical_memory_get_dirty_tracking(void); -int cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, - target_phys_addr_t end_addr); - int cpu_physical_log_start(target_phys_addr_t start_addr, ram_addr_t size); diff --git a/exec-obsolete.h b/exec-obsolete.h index 34b9fc56bd..5e5c4c63fb 100644 --- a/exec-obsolete.h +++ b/exec-obsolete.h @@ -63,6 +63,9 @@ static inline void cpu_register_physical_memory(target_phys_addr_t start_addr, void qemu_register_coalesced_mmio(target_phys_addr_t addr, ram_addr_t size); void qemu_unregister_coalesced_mmio(target_phys_addr_t addr, ram_addr_t size); +int cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, + target_phys_addr_t end_addr); + #endif #endif diff --git a/memory.c b/memory.c index c3e64ba138..ef5d647acc 100644 --- a/memory.c +++ b/memory.c @@ -1447,6 +1447,10 @@ MemoryRegionSection memory_region_find(MemoryRegion *address_space, return ret; } +void memory_global_sync_dirty_bitmap(MemoryRegion *address_space) +{ + cpu_physical_sync_dirty_bitmap(0, TARGET_PHYS_ADDR_MAX); +} void set_system_memory_map(MemoryRegion *mr) { diff --git a/memory.h b/memory.h index 4d8f39ad09..8197b45804 100644 --- a/memory.h +++ b/memory.h @@ -607,6 +607,16 @@ void memory_region_set_alias_offset(MemoryRegion *mr, MemoryRegionSection memory_region_find(MemoryRegion *address_space, target_phys_addr_t addr, uint64_t size); + +/** + * memory_global_sync_dirty_bitmap: synchronize the dirty log for all memory + * + * Synchronizes the dirty page log for an entire address space. + * @address_space: a top-level (i.e. parentless) region that contains the + * memory being synchronized + */ +void memory_global_sync_dirty_bitmap(MemoryRegion *address_space); + /** * memory_region_transaction_begin: Start a transaction. * |