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