This patch is for fixing hvm guest cirrus_vga hvm s3 resume failure.
We found latest Qemu (after Mar 3.10) will cause HVM guest vga fails
to resume back from S3. It's because vga_bios_init is not only needed
during init, but also needed after cirrus_vga reset (hvm s3 will do
qemu_reset).
Also, we found the outdated s->vram_ptr reset will cause s3 resume
screen black, so we remove it. (win2000 boot up does not need it now)
We verified the fix with the latest cs/qemu.
[ Patch modified slightly by Ian Jackson to reduce code motion. ]
Signed-off-by: Liping Ke<liping.ke@intel.com>
Signed-off-by: Ke Yu<ke.yu@intel.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
s->sr[0x15] = 0x03; /* memory size, 3=2MB, 4=4MB */
}
s->cr[0x27] = s->device_id;
-
- if (s->vram_ptr)
- /* Win2K seems to assume that the pattern buffer is at 0xff
- initially ! */
- memset(s->vram_ptr, 0xff, s->real_vram_size);
-
s->cirrus_hidden_dac_lockindex = 5;
s->cirrus_hidden_dac_data = 0;
}
static uint16_t expand2[256];
static uint8_t expand4to8[16];
+static void vga_bios_init(VGAState *s);
static void vga_screen_dump(void *opaque, const char *filename);
static void vga_dumb_update_retrace_info(VGAState *s)
memset(&s->retrace_info, 0, sizeof (s->retrace_info));
break;
}
+ vga_bios_init(s);
}
#define TEXTMODE_X(x) ((x) % width)
s->vram_gmfn = VRAM_RESERVED_ADDRESS;
}
- vga_bios_init(s);
switch (vga_retrace_method) {
case VGA_RETRACE_DUMB:
s->retrace = vga_dumb_retrace;