summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2011-12-18 16:40:50 +0200
committerAvi Kivity <avi@redhat.com>2011-12-20 14:14:08 +0200
commitc65adf9bcdc9c3212d62696f1b52c8ce0f98dd7f (patch)
treea1ee6bc4ac3b3669a1d305536f3d6f1964f28135
parent04097f7c5957273c578f72b9bd603ba6b1d69e33 (diff)
xen, vga: add API for registering the framebuffer
Xen currently uses the name of a memory region to determine whether it is the framebuffer. Replace with an explicit API. Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r--hw/vga.c2
-rw-r--r--hw/xen.h3
-rw-r--r--xen-all.c6
-rw-r--r--xen-stub.c4
4 files changed, 15 insertions, 0 deletions
diff --git a/hw/vga.c b/hw/vga.c
index ca79aa157d..7e1dd5ac80 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -28,6 +28,7 @@
#include "vga_int.h"
#include "pixel_ops.h"
#include "qemu-timer.h"
+#include "xen.h"
//#define DEBUG_VGA
//#define DEBUG_VGA_MEM
@@ -2222,6 +2223,7 @@ void vga_common_init(VGACommonState *s, int vga_ram_size)
s->is_vbe_vmstate = 0;
#endif
memory_region_init_ram(&s->vram, NULL, "vga.vram", vga_ram_size);
+ xen_register_framebuffer(&s->vram);
s->vram_ptr = memory_region_get_ram_ptr(&s->vram);
s->vram_size = vga_ram_size;
s->get_bpp = vga_get_bpp;
diff --git a/hw/xen.h b/hw/xen.h
index f9f66e83ef..b46879c6f7 100644
--- a/hw/xen.h
+++ b/hw/xen.h
@@ -49,6 +49,9 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
struct MemoryRegion *mr);
#endif
+struct MemoryRegion;
+void xen_register_framebuffer(struct MemoryRegion *mr);
+
#if defined(CONFIG_XEN) && CONFIG_XEN_CTRL_INTERFACE_VERSION < 400
# define HVM_MAX_VCPUS 32
#endif
diff --git a/xen-all.c b/xen-all.c
index bd89889502..51315ce1aa 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -33,6 +33,7 @@
#endif
static MemoryRegion ram_memory, ram_640k, ram_lo, ram_hi;
+static MemoryRegion *framebuffer;
/* Compatibility with older version */
#if __XEN_LATEST_INTERFACE_VERSION__ < 0x0003020a
@@ -982,3 +983,8 @@ void destroy_hvm_domain(void)
xc_interface_close(xc_handle);
}
}
+
+void xen_register_framebuffer(MemoryRegion *mr)
+{
+ framebuffer = mr;
+}
diff --git a/xen-stub.c b/xen-stub.c
index 5fa400faae..d403d864b3 100644
--- a/xen-stub.c
+++ b/xen-stub.c
@@ -44,3 +44,7 @@ int xen_init(void)
{
return -ENOSYS;
}
+
+void xen_register_framebuffer(MemoryRegion *mr)
+{
+}