]> xenbits.xensource.com Git - qemu-xen-3.4-testing.git/commitdiff
initialize vram area to 0xff
authorIan Jackson <ian.jackson@eu.citrix.com>
Fri, 16 Jan 2009 16:26:41 +0000 (16:26 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 16 Jan 2009 16:26:41 +0000 (16:26 +0000)
Initialize vram memory in xen_vga_populate_vram().
and some fixes.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Modified-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
hw/cirrus_vga.c
hw/vga.c

index f2ec05b71e9fb32d8a2488ad6b3ea44cb21b718a..e1a416b83b6ea20047aa32488648ceb12a0ca3de 100644 (file)
@@ -3167,8 +3167,9 @@ static int cirrus_vga_load(QEMUFile *f, void *opaque, int version_id)
          * ourselves */
         s->vram_gmfn = vga_acc ? s->lfb_addr : VRAM_RESERVED_ADDRESS;
         xen_vga_populate_vram(s->vram_gmfn, s->vram_size);
+    } else {
+        xen_vga_vram_map(s->vram_gmfn, s->vram_size);
     }
-    xen_vga_vram_map(s->vram_gmfn, s->vram_size);
     if (version_id < 3 || (!vga_acc && !t))
         qemu_get_buffer(f, s->vram_ptr, s->vram_size);
 
index 2ae6e85afd2b38df793cf3750fa0b4d14669e3a5..d1d61ea16a1ec4574e9cf4e816a3b18a398b88e8 100644 (file)
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -2251,7 +2251,6 @@ static int vga_load(QEMUFile *f, void *opaque, int version_id)
         /* Old guest, VRAM is not mapped, we have to restore it ourselves */
         if (!s->vram_gmfn) {
             xen_vga_populate_vram(VRAM_RESERVED_ADDRESS, s->vram_size);
-            xen_vga_vram_map(VRAM_RESERVED_ADDRESS, s->vram_size);
             s->vram_gmfn = VRAM_RESERVED_ADDRESS;
             qemu_get_buffer(f, s->vram_ptr, s->vram_size); 
         }
@@ -2447,6 +2446,12 @@ void xen_vga_populate_vram(uint64_t vram_addr, uint32_t vga_ram_size)
         exit(1);
     }
     free(pfn_list);
+
+    xen_vga_vram_map(vram_addr, vga_ram_size);
+
+    /* Win2K seems to assume that the pattern buffer is at 0xff
+       initially ! */
+    memset(xen_vga_state->vram_ptr, 0xff, vga_ram_size);
 }
 
 /* Mapping the video memory from GPFN space  */
@@ -2456,7 +2461,6 @@ void xen_vga_vram_map(uint64_t vram_addr, uint32_t vga_ram_size)
     xen_pfn_t *pfn_list;
     int i;
     void *vram;
-    DisplayState *ds;
 
     fprintf(logfile, "mapping video RAM from %llx\n",
            (unsigned long long)vram_addr);
@@ -2526,7 +2530,6 @@ void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base,
 
     if (!restore) {
         xen_vga_populate_vram(VRAM_RESERVED_ADDRESS, s->vram_size);
-        xen_vga_vram_map(VRAM_RESERVED_ADDRESS, s->vram_size);
         s->vram_gmfn = VRAM_RESERVED_ADDRESS;
     }