Re: [PATCH 12/21] Remove odd hack in vga.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Anthony Liguori wrote:
I looked closely at the vga code in kvm-userspace a while ago and merged
every fix I could understand into upstream QEMU.  This particular change makes
no sense to me.  I could not figure out from revision history what it actually
fixed.  I'm fairly certain it's not useful today.

Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx>
---
 hw/vga.c |   27 ++++-----------------------
 1 files changed, 4 insertions(+), 23 deletions(-)

diff --git a/hw/vga.c b/hw/vga.c
index d96f1be..385184a 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -2227,33 +2227,14 @@ typedef struct PCIVGAState {
     VGAState vga_state;
 } PCIVGAState;
-static int s1, s2;
-
-static void mark_dirty(target_phys_addr_t start, target_phys_addr_t len)
-{
-    target_phys_addr_t end = start + len;
-
-    while (start < end) {
-        cpu_physical_memory_set_dirty(cpu_get_physical_page_desc(start));
-        start += TARGET_PAGE_SIZE;
-    }
-}
-
 void vga_dirty_log_start(VGAState *s)
 {
     if (kvm_enabled() && s->map_addr)
-        if (!s1) {
-            kvm_log_start(s->map_addr, s->map_end - s->map_addr);
-            mark_dirty(s->map_addr, s->map_end - s->map_addr);
-            s1 = 1;
-        }
+        kvm_log_start(s->map_addr, s->map_end - s->map_addr);
+
     if (kvm_enabled() && s->lfb_vram_mapped) {
-        if (!s2) {
-            kvm_log_start(isa_mem_base + 0xa0000, 0x8000);
-            kvm_log_start(isa_mem_base + 0xa8000, 0x8000);
-            mark_dirty(isa_mem_base + 0xa0000, 0x10000);
-        }
-        s2 = 1;
+        kvm_log_start(isa_mem_base + 0xa0000, 0x8000);
+        kvm_log_start(isa_mem_base + 0xa8000, 0x8000);
     }
 }

This makes live migration and vga dirty tracking work together. Unfortunately since the last merge with qemu it's broken.

We have a shared resource, the log_dirty flag of memory slots. We can't call log_start() and log_stop() from different users and expect things to work.

One cleaner way to fix this is to add a parameter containing the mask which will be used by the client to access the qemu bytemap. log_start() can OR this parameter with its own copy, and log_stop() can AND NOT the same thing. When the local copy is nonzero, the slot dirty log is enabled.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux