From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Winkelbauer Subject: [PATCH] fix screen corruption bug in vga_draw_graphic() Date: Fri, 22 Feb 2008 21:36:43 +0100 Message-ID: <47BF325B.8050101@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020309080600030804030200" Cc: kvm-devel@lists.sourceforge.net To: Avi Kivity , arne.brutschy@ulb.ac.be, lmann@nt.net, Pelle@quicknet.nl Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org This is a multi-part message in MIME format. --------------020309080600030804030200 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit 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 --------------020309080600030804030200 Content-Type: text/x-patch; name="vga_draw_graphic.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vga_draw_graphic.patch" --- 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; --------------020309080600030804030200 Content-Type: text/x-patch; name="vga_draw_graphic-no_formatting_changes.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vga_draw_graphic-no_formatting_changes.patch" --- 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; --------------020309080600030804030200 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- 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/ --------------020309080600030804030200 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel --------------020309080600030804030200--