Re: [PATCH 2/2] bhyve: add xhci tablet support

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

 



On 03/20/2017 05:31 PM, Roman Bogorodskiy wrote:
Along with video and VNC support, bhyve has introduced USB tablet
support as an input device. This tablet is exposed to a guest
as a device on an XHCI controller.

At present, tablet is the only supported device on the XHCI controller
in bhyve, so to make things simple, it's allowed to only have a
single XHCI controller with a single tablet device.

In detail, this commit:

 - Introduce a new capability bit for XHCI support in bhyve
 - Add an XHCI controller and tabled support with 1:1 mapping
   between them
 - Add a couple of unit tests
---
 src/bhyve/bhyve_capabilities.c                     | 15 +++++++
 src/bhyve/bhyve_capabilities.h                     |  1 +
 src/bhyve/bhyve_command.c                          | 50 ++++++++++++++++++++++
 src/bhyve/bhyve_device.c                           |  4 +-
 .../bhyvexml2argv-input-xhci-tablet.args           |  9 ++++
 .../bhyvexml2argv-input-xhci-tablet.ldargs         |  3 ++
 .../bhyvexml2argv-input-xhci-tablet.xml            | 18 ++++++++
 .../bhyvexml2argv-xhci-multiple-controllers.xml    | 19 ++++++++
 .../bhyvexml2argv-xhci-multiple-devs.xml           | 19 ++++++++
 .../bhyvexml2argv-xhci-no-devs.xml                 | 17 ++++++++
 tests/bhyvexml2argvtest.c                          | 10 ++++-
 .../bhyvexml2xmlout-input-xhci-tablet.xml          | 31 ++++++++++++++
 tests/bhyvexml2xmltest.c                           |  3 ++
 13 files changed, 197 insertions(+), 2 deletions(-)
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-input-xhci-tablet.args
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-input-xhci-tablet.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-input-xhci-tablet.xml
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-xhci-multiple-controllers.xml
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-xhci-multiple-devs.xml
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-xhci-no-devs.xml
 create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-input-xhci-tablet.xml

diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c
index f72fdea41..a34c596f0 100644
--- a/src/bhyve/bhyve_capabilities.c
+++ b/src/bhyve/bhyve_capabilities.c
@@ -286,6 +286,18 @@ bhyveProbeCapsFramebuffer(unsigned int *caps, char *binary)
                                       BHYVE_CAP_FBUF);
 }

+
+static int
+bhyveProbeCapsXHCIController(unsigned int *caps, char *binary)
+{
+    return bhyveProbeCapsDeviceHelper(caps, binary,
+                                      "-s",
+                                      "0,xhci",
+                                      "pci slot 0:0: unknown device \"xhci\"",
+                                      BHYVE_CAP_FBUF);
+}
+
+
 int
 virBhyveProbeCaps(unsigned int *caps)
 {
@@ -313,6 +325,9 @@ virBhyveProbeCaps(unsigned int *caps)
     if ((ret = bhyveProbeCapsFramebuffer(caps, binary)))
         goto out;

+    if ((ret = bhyveProbeCapsXHCIController(caps, binary)))
+        goto out;
+
  out:
     VIR_FREE(binary);
     return ret;
diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h
index 3db4f1b88..3db51af02 100644
--- a/src/bhyve/bhyve_capabilities.h
+++ b/src/bhyve/bhyve_capabilities.h
@@ -45,6 +45,7 @@ typedef enum {
     BHYVE_CAP_NET_E1000 = 1 << 2,
     BHYVE_CAP_LPC_BOOTROM = 1 << 3,
     BHYVE_CAP_FBUF = 1 << 4,
+    BHYVE_CAP_XHCI = 1 << 5,
 } virBhyveCapsFlags;

Should we perhaps turn these into virBitmap? We could have something like qemuCaps then. Because if this continues to grow, at 32 items we will hit problem on 32 bit systems. But that can be saved to a follow up patch.

ACK

Michal

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux