@@ -66,9 +66,6 @@ static inline void xen_be_unmap_grant_ref(struct XenLegacyDevice *xendev,
return xen_be_unmap_grant_refs(xendev, ptr, &ref, 1);
}
-/* backend drivers not included in all machines */
-extern const struct XenDevOps xen_framebuffer_ops; /* xenfb.c */
-
/* configuration (aka xenbus setup) */
void xen_config_cleanup(void);
int xen_config_dev_vfb(int vdev, const char *type);
@@ -29,6 +29,7 @@
#include "ui/input.h"
#include "ui/console.h"
+#include "sysemu/sysemu.h"
#include "hw/xen/xen-legacy-backend.h"
#include "hw/xen/interface/io/fbif.h"
@@ -996,8 +997,12 @@ static const GraphicHwOps xenfb_ops = {
.ui_info = xenfb_ui_info,
};
-static void xen_vkbd_register_backend(void)
+static void xen_ui_register_backend(void)
{
xen_be_register("vkbd", &xen_kbdmouse_ops);
+
+ if (vga_interface_type == VGA_XENFB) {
+ xen_be_register("vfb", &xen_framebuffer_ops);
+ }
}
-xen_backend_init(xen_vkbd_register_backend);
+xen_backend_init(xen_ui_register_backend);
@@ -50,8 +50,6 @@ static void xen_init_pv(MachineState *machine)
break;
}
- xen_be_register("vfb", &xen_framebuffer_ops);
-
/* configure framebuffer */
if (vga_interface_type == VGA_XENFB) {
xen_config_dev_vfb(0, "vnc");