* [PATCH] fix screen corruption bug in vga_draw_graphic()
@ 2008-02-22 20:36 Andreas Winkelbauer
2008-02-24 7:05 ` Avi Kivity
2008-02-25 9:12 ` Arne Brutschy
0 siblings, 2 replies; 3+ messages in thread
From: Andreas Winkelbauer @ 2008-02-22 20:36 UTC (permalink / raw)
To: Avi Kivity, arne.brutschy, lmann, Pelle; +Cc: kvm-devel
[-- Attachment #1: Type: text/plain, Size: 658 bytes --]
hi,
the attached patch fixes the screen corruption issues which were
reported by others, see:
http://article.gmane.org/gmane.comp.emulators.kvm.devel/13543
http://article.gmane.org/gmane.comp.emulators.kvm.devel/13409
The bug is kvm specific and can only be observed in graphics mode using
relatively high resolutions (when one line uses more than one page of
memory). As far as I've seen this bug is around since commit
dd9591e0fea25a1414f4a6b2faa61ed733e0acc6 (5 nov 2006).
I've attached two versions of the patch. One just changes the relevant
line and the other one also cleans up formatting (indention) of the kvm
specific code.
cheers,
Andi
[-- Attachment #2: vga_draw_graphic.patch --]
[-- Type: text/x-patch, Size: 1489 bytes --]
--- kvm-61.orig/qemu/hw/vga.c 2008-02-19 15:58:28.000000000 +0100
+++ kvm-61/qemu/hw/vga.c 2008-02-22 20:46:14.000000000 +0100
@@ -1558,17 +1558,20 @@ static void vga_draw_graphic(VGAState *s
update = full_update |
cpu_physical_memory_get_dirty(page0, VGA_DIRTY_FLAG) |
cpu_physical_memory_get_dirty(page1, VGA_DIRTY_FLAG);
- if (kvm_enabled()) {
- update |= bitmap_get_dirty(bitmap, (page0 - s->vram_offset) >> TARGET_PAGE_BITS);
- update |= bitmap_get_dirty(bitmap, (page1 - s->vram_offset) >> TARGET_PAGE_BITS);
- }
+ if (kvm_enabled()) {
+ update |= bitmap_get_dirty(bitmap,
+ (page0 - s->vram_offset) >> TARGET_PAGE_BITS);
+ update |= bitmap_get_dirty(bitmap,
+ (page1 - s->vram_offset) >> TARGET_PAGE_BITS);
+ }
if ((page1 - page0) > TARGET_PAGE_SIZE) {
/* if wide line, can use another page */
update |= cpu_physical_memory_get_dirty(page0 + TARGET_PAGE_SIZE,
VGA_DIRTY_FLAG);
- if (kvm_enabled())
- update |= bitmap_get_dirty(bitmap, (page0 - s->vram_offset) >> TARGET_PAGE_BITS);
+ if (kvm_enabled())
+ update |= bitmap_get_dirty(bitmap, (page0 + TARGET_PAGE_SIZE
+ - s->vram_offset) >> TARGET_PAGE_BITS);
}
/* explicit invalidation for the hardware cursor */
update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
[-- Attachment #3: vga_draw_graphic-no_formatting_changes.patch --]
[-- Type: text/x-patch, Size: 696 bytes --]
--- kvm-61.orig/qemu/hw/vga.c 2008-02-19 15:58:28.000000000 +0100
+++ kvm-61/qemu/hw/vga.c 2008-02-22 21:01:19.000000000 +0100
@@ -1568,7 +1568,7 @@ static void vga_draw_graphic(VGAState *s
update |= cpu_physical_memory_get_dirty(page0 + TARGET_PAGE_SIZE,
VGA_DIRTY_FLAG);
if (kvm_enabled())
- update |= bitmap_get_dirty(bitmap, (page0 - s->vram_offset) >> TARGET_PAGE_BITS);
+ update |= bitmap_get_dirty(bitmap, (page0 + TARGET_PAGE_SIZE - s->vram_offset) >> TARGET_PAGE_BITS);
}
/* explicit invalidation for the hardware cursor */
update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
[-- Attachment #4: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #5: Type: text/plain, Size: 158 bytes --]
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] fix screen corruption bug in vga_draw_graphic()
2008-02-22 20:36 [PATCH] fix screen corruption bug in vga_draw_graphic() Andreas Winkelbauer
@ 2008-02-24 7:05 ` Avi Kivity
2008-02-25 9:12 ` Arne Brutschy
1 sibling, 0 replies; 3+ messages in thread
From: Avi Kivity @ 2008-02-24 7:05 UTC (permalink / raw)
To: Andreas Winkelbauer; +Cc: kvm-devel, Pelle, arne.brutschy, lmann
Andreas Winkelbauer wrote:
> hi,
>
> the attached patch fixes the screen corruption issues which were
> reported by others, see:
>
> http://article.gmane.org/gmane.comp.emulators.kvm.devel/13543
> http://article.gmane.org/gmane.comp.emulators.kvm.devel/13409
>
> The bug is kvm specific and can only be observed in graphics mode
> using relatively high resolutions (when one line uses more than one
> page of memory). As far as I've seen this bug is around since commit
> dd9591e0fea25a1414f4a6b2faa61ed733e0acc6 (5 nov 2006).
>
> I've attached two versions of the patch. One just changes the relevant
> line and the other one also cleans up formatting (indention) of the
> kvm specific code.
Applied the no-formatting version, thanks. Please sign off on patches
next time.
The way to apply formatting changes while fixing something is with a
separate patch that does nothing but fix the formatting, either on top
of the fix, or to be applied before the fix. This way the fixing patch
is kept small and easily understandable.
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] fix screen corruption bug in vga_draw_graphic()
2008-02-22 20:36 [PATCH] fix screen corruption bug in vga_draw_graphic() Andreas Winkelbauer
2008-02-24 7:05 ` Avi Kivity
@ 2008-02-25 9:12 ` Arne Brutschy
1 sibling, 0 replies; 3+ messages in thread
From: Arne Brutschy @ 2008-02-25 9:12 UTC (permalink / raw)
To: Andreas Winkelbauer; +Cc: kvm-devel, Pelle, Avi Kivity, lmann
Hey,
this patch works like a charm! No pointer trails, no bars through
dialogs... Perfect quality. Thanks alot Andreas!
Arne
On Fr, 2008-02-22 at 21:36 +0100, Andreas Winkelbauer wrote:
> hi,
>
> the attached patch fixes the screen corruption issues which were
> reported by others, see:
>
> http://article.gmane.org/gmane.comp.emulators.kvm.devel/13543
> http://article.gmane.org/gmane.comp.emulators.kvm.devel/13409
>
> The bug is kvm specific and can only be observed in graphics mode using
> relatively high resolutions (when one line uses more than one page of
> memory). As far as I've seen this bug is around since commit
> dd9591e0fea25a1414f4a6b2faa61ed733e0acc6 (5 nov 2006).
>
> I've attached two versions of the patch. One just changes the relevant
> line and the other one also cleans up formatting (indention) of the kvm
> specific code.
>
> cheers,
> Andi
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-02-25 9:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-22 20:36 [PATCH] fix screen corruption bug in vga_draw_graphic() Andreas Winkelbauer
2008-02-24 7:05 ` Avi Kivity
2008-02-25 9:12 ` Arne Brutschy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox