]> git.proxmox.com Git - qemu.git/commitdiff
memory: synchronize dirty bitmap before unmapping a range
authorAvi Kivity <avi@redhat.com>
Sun, 31 Jul 2011 19:47:58 +0000 (22:47 +0300)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 5 Aug 2011 15:57:36 +0000 (10:57 -0500)
When a range is being unmapped, ask accelerators (e.g. kvm) to synchronize the
dirty bitmap to avoid losing information forever.

Fixes grub2 screen update.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
memory.c

index 5c6e63df3f0e499174790fc90d5368e04105024c..5f20320d2b9a46d088fe2645b30e583dbbca7bc0 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -245,6 +245,10 @@ static void as_memory_range_add(AddressSpace *as, FlatRange *fr)
 
 static void as_memory_range_del(AddressSpace *as, FlatRange *fr)
 {
+    if (fr->dirty_log_mask) {
+        cpu_physical_sync_dirty_bitmap(fr->addr.start,
+                                       fr->addr.start + fr->addr.size);
+    }
     cpu_register_physical_memory(fr->addr.start, fr->addr.size,
                                  IO_MEM_UNASSIGNED);
 }