summaryrefslogtreecommitdiff
path: root/hw/vga.c
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2009-12-20 16:59:28 +0200
committerAvi Kivity <avi@redhat.com>2009-12-20 16:59:28 +0200
commit70641b6d90f49d4c1553b213a94e73a17a2060ef (patch)
treedb7bab2b27a1553475e8df1374e98e8947bbd5a5 /hw/vga.c
parentbfa5727e9ea7bcdf9de02aa4c5b985e31e81c632 (diff)
parentf0138a63a41fe26bcef61d031ae53d872d12a992 (diff)
Merge commit 'f0138a63a41fe26bcef61d031ae53d872d12a992' into upstream-merge
* commit 'f0138a63a41fe26bcef61d031ae53d872d12a992': (23 commits) Make sure to enable dirty tracking of VBE vram mapping vmware: setup PCI BAR 2 for FIFO as per vmware spec qdev: improve property error reporting. fix vga names in default_list usb-host: check mon before using it. usb-net: use qdev for -usbdevice Check rom_load_all() return value. defaults: update device_list[] defaults: split default_drive monitor: Catch printing to non-existent monitor monitor: Avoid readline functions in QMP monitor: do_balloon(): Check for errors monitor: Use 'device' in eject QDict: Fix size update qdev: Improve uni-north device names Avoid permanently disabled QEMU monitor when UNIX migration fails Fix loading of ELF multiboot kernels Revert "Rename DriveInfo.onerror to on_write_error" (fix mismerge) qemu-io: Fix memory leak Fix thinko in linuxboot.S ... Conflicts: hw/vga.c Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'hw/vga.c')
-rw-r--r--hw/vga.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/hw/vga.c b/hw/vga.c
index 49567e0d5..c27da8509 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -1583,6 +1583,14 @@ static void vga_sync_dirty_bitmap(VGACommonState *s)
cpu_physical_sync_dirty_bitmap(isa_mem_base + 0xa0000, 0xa8000);
cpu_physical_sync_dirty_bitmap(isa_mem_base + 0xa8000, 0xb0000);
}
+
+#ifdef CONFIG_BOCHS_VBE
+ if (s->vbe_mapped) {
+ cpu_physical_sync_dirty_bitmap(VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+ VBE_DISPI_LFB_PHYSICAL_ADDRESS + s->vram_size);
+ }
+#endif
+
vga_dirty_log_start(s);
}
@@ -1626,6 +1634,13 @@ void vga_dirty_log_start(VGACommonState *s)
}
s2 = 1;
}
+
+#ifdef CONFIG_BOCHS_VBE
+ if (kvm_enabled() && s->vbe_mapped) {
+ kvm_log_start(VBE_DISPI_LFB_PHYSICAL_ADDRESS, s->vram_size);
+ }
+#endif
+
}
/*
@@ -2332,6 +2347,15 @@ void vga_init(VGACommonState *s)
qemu_register_coalesced_mmio(isa_mem_base + 0x000a0000, 0x20000);
}
+void vga_init_vbe(VGACommonState *s)
+{
+#ifdef CONFIG_BOCHS_VBE
+ /* XXX: use optimized standard vga accesses */
+ cpu_register_physical_memory(VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+ VGA_RAM_SIZE, s->vram_offset);
+ s->vbe_mapped = 1;
+#endif
+}
/********************************************************/
/* vga screen dump */