On Sat, Feb 4, 2012 at 16:16, Jan Kiszka <jan.kis...@web.de> wrote: > On 2012-02-04 14:15, Blue Swirl wrote: >> On Sun, Jan 29, 2012 at 19:12, Blue Swirl <blauwir...@gmail.com> wrote: >>> Patch 1 has been sent several times, though the logic has been copied >>> from flawed implementations before. >>> >>> Other patches should be trivial. >> >> Pushed. I compared vga.o object files with codiff and objdump >> disassembler before and after the constant patch and the code was >> identical. >> >>> URL git://repo.or.cz/qemu/blueswirl.git >>> http://repo.or.cz/r/qemu/blueswirl.git >>> >>> Blue Swirl (6): >>> memory: change dirty getting API to take a size > > This causes regressions of WinXP guests. The upper half of the screen is > not properly updated.
I can't reproduce this, but can you try the following: diff --git a/hw/vga.c b/hw/vga.c index d87c4f9..729ab8d 100644 --- a/hw/vga.c +++ b/hw/vga.c @@ -1779,7 +1779,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) } page0 = addr; page1 = addr + bwidth - 1; - update = memory_region_get_dirty(&s->vram, page0, page1, + update = memory_region_get_dirty(&s->vram, page0, bwidth - 1, DIRTY_MEMORY_VGA); /* explicit invalidation for the hardware cursor */ update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;