summary refs log tree commit diff stats
path: root/hw/display/framebuffer.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-03-23 10:46:52 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2015-06-05 17:09:59 +0200
commitd55d42078bfb507743747b761673507b95a76620 (patch)
treebd32a470cf4103a127e081ba07e0fb864deb434a /hw/display/framebuffer.c
parentb2dfd71c4843a762f2befe702adb249cf55baf66 (diff)
downloadfocaccia-qemu-d55d42078bfb507743747b761673507b95a76620.tar.gz
focaccia-qemu-d55d42078bfb507743747b761673507b95a76620.zip
framebuffer: check memory_region_is_logging
framebuffer.c expects DIRTY_MEMORY_VGA logging to be always on, but that
will not be the case soon.  Because framebuffer.c computes the memory
region on the fly for every update (with memory_region_find), it cannot
enable/disable logging by itself.

Instead, always treat updates as invalidations if dirty logging is
not enabled, assuming that the board will enable logging on the
RAM region that includes the framebuffer.

Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/display/framebuffer.c')
-rw-r--r--hw/display/framebuffer.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/display/framebuffer.c b/hw/display/framebuffer.c
index 4546e42654..2cabced208 100644
--- a/hw/display/framebuffer.c
+++ b/hw/display/framebuffer.c
@@ -63,6 +63,10 @@ void framebuffer_update_display(
     assert(mem_section.offset_within_address_space == base);
 
     memory_region_sync_dirty_bitmap(mem);
+    if (!memory_region_is_logging(mem, DIRTY_MEMORY_VGA)) {
+        invalidate = true;
+    }
+
     src_base = cpu_physical_memory_map(base, &src_len, 0);
     /* If we can't map the framebuffer then bail.  We could try harder,
        but it's not really worth it as dirty flag tracking will probably