The pxa2xx_lcd, omap_lcdc, pl110 and milkymist-vgafb devices use framebuffer.c to render an image from a shared memory framebuffer. With KVM, DIRTY_MEMORY_VGA always had to be enabled explicitly on RAM memory regions that can be used for the framebuffer, and the 2.4 changes to dirty bitmap handling made that mandatory for TCG as well.
If the board does not set DIRTY_MEMORY_VGA, framebuffer.c detects this (commit d55d420, framebuffer: check memory_region_is_logging, 2015-03-23) and always invalidates the screen; this is inefficient, to the point that blocking X11 calls on slow network connections can prevent the guest from making progress. To fix this, the patch makes the framebuffer set the flag. Because there could be multiple framebuffers, patch 1 allows nesting of memory_region_set_log calls. Paolo Paolo Bonzini (2): memory: count number of active VGA logging clients framebuffer: set DIRTY_MEMORY_VGA on RAM that is used for the framebuffer hw/display/framebuffer.c | 75 ++++++++++++++++++++++++-------------------- hw/display/framebuffer.h | 10 ++++-- hw/display/milkymist-vgafb.c | 15 +++++++-- hw/display/omap_lcdc.c | 12 +++++-- hw/display/pl110.c | 13 ++++++-- hw/display/pxa2xx_lcd.c | 29 ++++++++++++----- include/exec/memory.h | 1 + memory.c | 7 +++++ 8 files changed, 111 insertions(+), 51 deletions(-) -- 2.4.3