[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Qemu-devel][PATCH] configure: introduce --enable-xen-fb-backend



On 04/14/2017 03:12 AM, Stefano Stabellini wrote:
On Tue, 11 Apr 2017, Oleksandr Andrushchenko wrote:
From: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>

For some use cases when Xen framebuffer/input backend
is not a part of Qemu it is required to disable it,
because of conflicting access to input/display devices.
Introduce additional configuration option for explicit
input/display control.
In these cases when you don't want xenfb, why don't you just remove
"vfb" from the xl config file? QEMU only starts the xenfb backend when
requested by the toolstack.

Is it because you have an alternative xenfb backend? If so, is it really
fully xenfb compatible, or is it a different protocol? If it is a
different protocol, I suggest you rename your frontend/backend PV device
name to something different from "vfb".

Well, offending part is vkbd actually (for multi-touch
we run our own user-space backend which supports
kbd/ptr/mtouch), but vfb and vkbd is the same backend
in QEMU. So, I am ok for vfb, but just want vkbd off
So, there are 2 options:
1. At compile time remove vkbd and still allow vfb
2. Remove xenfb completely, if acceptable (this is my case)
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>
---
  configure                 | 18 ++++++++++++++++++
  hw/display/Makefile.objs  |  2 +-
  hw/xen/xen_backend.c      |  2 ++
  hw/xenpv/xen_machine_pv.c |  4 ++++
  4 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 476210b1b93f..b805cb908f03 100755
--- a/configure
+++ b/configure
@@ -220,6 +220,7 @@ xen=""
  xen_ctrl_version=""
  xen_pv_domain_build="no"
  xen_pci_passthrough=""
+xen_fb_backend=""
  linux_aio=""
  cap_ng=""
  attr=""
@@ -909,6 +910,10 @@ for opt do
    ;;
    --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
    ;;
+  --disable-xen-fb-backend) xen_fb_backend="no"
+  ;;
+  --enable-xen-fb-backend) xen_fb_backend="yes"
+  ;;
    --disable-brlapi) brlapi="no"
    ;;
    --enable-brlapi) brlapi="yes"
@@ -1368,6 +1373,7 @@ disabled with --disable-FEATURE, default is enabled if 
available:
    virtfs          VirtFS
    xen             xen backend driver support
    xen-pci-passthrough
+  xen-fb-backend  framebuffer/input backend support
    brlapi          BrlAPI (Braile)
    curl            curl connectivity
    fdt             fdt device tree
@@ -2213,6 +2219,15 @@ if test "$xen_pv_domain_build" = "yes" &&
               "which requires Xen support."
  fi
+if test "$xen_fb_backend" != "no"; then
+   if test "$xen" = "yes"; then
+     xen_fb_backend=yes
+   else
+     error_exit "User requested feature Xen framebufer backend support" \
+                " but this feature requires Xen support."
+   fi
+fi
+
  ##########################################
  # Sparse probe
  if test "$sparse" != "no" ; then
@@ -5444,6 +5459,9 @@ if test "$xen" = "yes" ; then
    if test "$xen_pv_domain_build" = "yes" ; then
      echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
    fi
+  if test "$xen_fb_backend" = "yes" ; then
+    echo "CONFIG_XEN_FB_BACKEND=y" >> $config_host_mak
+  fi
  fi
  if test "$linux_aio" = "yes" ; then
    echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs
index 063889beaf4a..f5ec97ed4f48 100644
--- a/hw/display/Makefile.objs
+++ b/hw/display/Makefile.objs
@@ -5,7 +5,7 @@ common-obj-$(CONFIG_JAZZ_LED) += jazz_led.o
  common-obj-$(CONFIG_PL110) += pl110.o
  common-obj-$(CONFIG_SSD0303) += ssd0303.o
  common-obj-$(CONFIG_SSD0323) += ssd0323.o
-common-obj-$(CONFIG_XEN_BACKEND) += xenfb.o
+common-obj-$(CONFIG_XEN_FB_BACKEND) += xenfb.o
common-obj-$(CONFIG_VGA_PCI) += vga-pci.o
  common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c
index d1190041ae12..5146cbba6ca5 100644
--- a/hw/xen/xen_backend.c
+++ b/hw/xen/xen_backend.c
@@ -582,7 +582,9 @@ void xen_be_register_common(void)
      xen_set_dynamic_sysbus();
xen_be_register("console", &xen_console_ops);
+#ifdef CONFIG_XEN_FB_BACKEND
      xen_be_register("vkbd", &xen_kbdmouse_ops);
+#endif
      xen_be_register("qdisk", &xen_blkdev_ops);
  #ifdef CONFIG_USB_LIBUSB
      xen_be_register("qusb", &xen_usb_ops);
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 79aef4ecc37b..b731344c3f0a 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -68,7 +68,9 @@ static void xen_init_pv(MachineState *machine)
      }
xen_be_register_common();
+#ifdef CONFIG_XEN_FB_BACKEND
      xen_be_register("vfb", &xen_framebuffer_ops);
+#endif
      xen_be_register("qnic", &xen_netdev_ops);
/* configure framebuffer */
@@ -95,8 +97,10 @@ static void xen_init_pv(MachineState *machine)
      /* config cleanup hook */
      atexit(xen_config_cleanup);
+#ifdef CONFIG_XEN_FB_BACKEND
      /* setup framebuffer */
      xen_init_display(xen_domid);
+#endif
  }
static void xenpv_machine_init(MachineClass *mc)
--
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.