Patchwork [0/6] VGA patches

login
register
mail settings
Submitter Blue Swirl
Date Feb. 4, 2012, 4:49 p.m.
Message ID <CAAu8pHu1kP4MbUDbFsYab_HhwqFU69U8rSpMSk2_0JN-Kq3QOA@mail.gmail.com>
Download mbox | patch
Permalink /patch/139583/
State New
Headers show

Comments

Blue Swirl - Feb. 4, 2012, 4:49 p.m.
On Sat, Feb 4, 2012 at 16:16, Jan Kiszka <jan.kiszka@web.de> wrote:
> On 2012-02-04 14:15, Blue Swirl wrote:
>> On Sun, Jan 29, 2012 at 19:12, Blue Swirl <blauwirbel@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:

         update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;

Patch

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 */