summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@us.ibm.com>2009-12-18 08:08:07 +1000
committerAnthony Liguori <aliguori@us.ibm.com>2009-12-19 08:26:23 -0600
commit3c547d7bb7889182d5bcecbb3edea4c71774c6a3 (patch)
treec4d2257aa2119e95d607754f3d190820ddfd7488 /hw/vga_int.h
parentvmware: setup PCI BAR 2 for FIFO as per vmware spec (diff)
downloadqemu-kvm-3c547d7bb7889182d5bcecbb3edea4c71774c6a3.tar.gz
qemu-kvm-3c547d7bb7889182d5bcecbb3edea4c71774c6a3.tar.bz2
qemu-kvm-3c547d7bb7889182d5bcecbb3edea4c71774c6a3.zip
Make sure to enable dirty tracking of VBE vram mapping
Apparently, VBE maps the VGA vram to a fixed physical location. KVM requires that all mappings of the VGA vram have dirty tracking enabled on them. Any access to the VGA vram through the VBE mapping currently fails to result in dirty page tracking updates causing a black screen. This is the true root cause of VMware VGA not working correctly under KVM and likely also an issue with some of the std-vga black screen issues too. Cirrus does not enable VBE so it would not be a problem when using Cirrus. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Rebased-by: Dave Airlie <airlied@redhat.com> (cherry picked from commit f0138a63a41fe26bcef61d031ae53d872d12a992)
Diffstat (limited to 'hw/vga_int.h')
-rw-r--r--hw/vga_int.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/vga_int.h b/hw/vga_int.h
index c03c220f3..b5302c15b 100644
--- a/hw/vga_int.h
+++ b/hw/vga_int.h
@@ -71,8 +71,8 @@
uint16_t vbe_regs[VBE_DISPI_INDEX_NB]; \
uint32_t vbe_start_addr; \
uint32_t vbe_line_offset; \
- uint32_t vbe_bank_mask;
-
+ uint32_t vbe_bank_mask; \
+ int vbe_mapped;
#else
#define VGA_STATE_COMMON_BOCHS_VBE
@@ -217,6 +217,7 @@ void vga_draw_cursor_line_32(uint8_t *d1, const uint8_t *src1,
unsigned int color_xor);
int vga_ioport_invalid(VGACommonState *s, uint32_t addr);
+void vga_init_vbe(VGACommonState *s);
extern const uint8_t sr_mask[8];
extern const uint8_t gr_mask[16];