Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 3160499aacb81f6735941eb4c372d87a > files > 260

kvm-83-164.el5_5.30.src.rpm

From 4d354d9f6bf1394f300b7bbc6e2ccdef72265c29 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Wed, 20 May 2009 14:34:50 +0200
Subject: [PATCH 04/14] cirrus: fix text screen corruption on reset.

Hi,

please review & ack.

cheers,
   Gerd

>From 552a9e455f253565b987c19809ab3bf87877e716 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Wed, 20 May 2009 13:28:35 +0200
Subject: [PATCH] cirrus: fix text screen corruption on reset.

Changes:
  * add unmap_linear_vram() call to vga_reset().
    (upstream backport: ee50c6bc619ddd3b1e32f4eeebd4203bef56bac1).
  * make unmap_linear_vram() unregister the two cirrus banks so
    it actually works.

Message-ID: <4A13F8EA.3030208@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
RH-Upstream-status: pending
Acked-by: Markus Armbruster <armbru@redhat.com>
Acked-by: john cooper <john.cooper@redhat.com>
Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Bugzilla: 503793
---
 qemu/hw/cirrus_vga.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/qemu/hw/cirrus_vga.c b/qemu/hw/cirrus_vga.c
index 460b492..8d74c8d 100644
--- a/qemu/hw/cirrus_vga.c
+++ b/qemu/hw/cirrus_vga.c
@@ -2687,6 +2687,10 @@ static void unmap_linear_vram(CirrusVGAState *s)
     if (s->map_addr && s->lfb_addr && s->lfb_end)
         s->map_addr = s->map_end = 0;
 
+    cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x8000,
+                                (s->vram_offset + s->cirrus_bank_base[0]) | IO_MEM_UNASSIGNED);
+    cpu_register_physical_memory(isa_mem_base + 0xa8000, 0x8000,
+                                (s->vram_offset + s->cirrus_bank_base[1]) | IO_MEM_UNASSIGNED);
     cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x20000,
                                  s->vga_io_memory);
     vga_dirty_log_start((VGAState *)s);
@@ -3197,6 +3201,7 @@ static void cirrus_reset(void *opaque)
     CirrusVGAState *s = opaque;
 
     vga_reset(s);
+    unmap_linear_vram(s);
     s->sr[0x06] = 0x0f;
     if (s->device_id == CIRRUS_ID_CLGD5446) {
         /* 4MB 64 bit memory config, always PCI */
-- 
1.6.3.rc4.29.g8146