OSDN Git Service

kvm: flush the dirty log when unregistering a slot
authorAvi Kivity <avi@redhat.com>
Sun, 15 Jan 2012 14:13:59 +0000 (16:13 +0200)
committerAvi Kivity <avi@redhat.com>
Sun, 15 Jan 2012 14:13:59 +0000 (16:13 +0200)
Otherwise, the dirty log information is lost in the kernel forever.

Fixes opensuse-12.1 boot screen, which changes the vga windows rapidly.

Signed-off-by: Avi Kivity <avi@redhat.com>
kvm-all.c

index 3174f42..2cc4562 100644 (file)
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -566,6 +566,10 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add)
 
         old = *mem;
 
+        if (mem->flags & KVM_MEM_LOG_DIRTY_PAGES) {
+            kvm_physical_sync_dirty_bitmap(section);
+        }
+
         /* unregister the overlapping slot */
         mem->memory_size = 0;
         err = kvm_set_user_memory_region(s, mem);