diff mbox

[01/13] spice: Use cpu_register_physical_memory_log for dirty log enabling

Message ID ef059539567cdcf0c45fb2ffa7717348be606a09.1308070416.git.jan.kiszka@siemens.com
State New
Headers show

Commit Message

Jan Kiszka June 14, 2011, 4:53 p.m. UTC
Drop outdated dirty log disable/enable around PCI remapping and register
the BAR for dirty logging via cpu_register_physical_memory_log. That
allows to remove all vga_dirty_log_start/stop references from qxl.

Note: The addtional vga_dirty_log_start for the primary interface looked
stray. qxl_write_config enabled logging for all interfaces anyway.

CC: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 hw/qxl.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)

Comments

Gerd Hoffmann June 15, 2011, 6:42 a.m. UTC | #1
Hi,

> Note: The addtional vga_dirty_log_start for the primary interface looked
> stray. qxl_write_config enabled logging for all interfaces anyway.

No.  qxl_write_config is hooked for the primary only.

>       case QXL_RAM_RANGE_INDEX:
> -        cpu_register_physical_memory(addr, size, qxl->vga.vram_offset | IO_MEM_RAM);
> +        cpu_register_physical_memory_log(addr, size,
> +                                         qxl->vga.vram_offset | IO_MEM_RAM,
> +                                         0, true);

if (qxl->id == 0) {
     cpu_register_physical_memory_log(...)
} else {
     cpu_register_physical_memory()
}

Only the primary is vga compatible and thus needs dirty logging.

cheers,
   Gerd
diff mbox

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index 1906e84..eba1ff9 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -619,12 +619,10 @@  static void qxl_write_config(PCIDevice *d, uint32_t address,
     PCIQXLDevice *qxl = DO_UPCAST(PCIQXLDevice, pci, d);
     VGACommonState *vga = &qxl->vga;
 
-    vga_dirty_log_stop(vga);
     pci_default_write_config(d, address, val, len);
     if (vga->map_addr && qxl->pci.io_regions[0].addr == -1) {
         vga->map_addr = 0;
     }
-    vga_dirty_log_start(vga);
 }
 
 static void qxl_check_state(PCIQXLDevice *d)
@@ -1037,12 +1035,11 @@  static void qxl_map(PCIDevice *pci, int region_num,
         qxl->io_base = addr;
         break;
     case QXL_RAM_RANGE_INDEX:
-        cpu_register_physical_memory(addr, size, qxl->vga.vram_offset | IO_MEM_RAM);
+        cpu_register_physical_memory_log(addr, size,
+                                         qxl->vga.vram_offset | IO_MEM_RAM,
+                                         0, true);
         qxl->vga.map_addr = addr;
         qxl->vga.map_end = addr + size;
-        if (qxl->id == 0) {
-            vga_dirty_log_start(&qxl->vga);
-        }
         break;
     case QXL_ROM_RANGE_INDEX:
         cpu_register_physical_memory(addr, size, qxl->rom_offset | IO_MEM_ROM);