1. 26 3月, 2017 1 次提交
    • R
      bhyve: add xhci tablet support · daecaea0
      Roman Bogorodskiy 提交于
      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:
      
       - Introduces a new capability bit for XHCI support in bhyve
       - Adds an XHCI controller and tabled support with 1:1 mapping
         between them
       - Adds a couple of unit tests
      daecaea0
  2. 12 3月, 2017 1 次提交
    • F
      bhyve: add video support · 04664327
      Fabian Freyer 提交于
      bhyve supports 'gop' video device that allows clients to connect
      to VMs using VNC clients. This commit adds support for that to
      the bhyve driver:
      
       - Introducr 'gop' video device type
       - Add capabilities probing for the 'fbuf' device that's
         responsible for graphics
       - Update command builder routines to let users configure
         domain's VNC via gop graphics.
      Signed-off-by: NRoman Bogorodskiy <bogorodskiy@gmail.com>
      04664327
  3. 07 2月, 2017 1 次提交
    • R
      bhyve: fix virtio disk addresses · 66c21aee
      Roman Bogorodskiy 提交于
      Like it usually happens, I fixed one thing and broke another:
      in 803966c7 address allocation was fixed for SATA disks, but
      broke that for virtio disks, because it dropped disk address
      assignment completely. It's not needed for SATA disks anymore,
      but still needed for the virtio ones.
      
      Bring that back and add a couple of tests to make sure it won't
      happen again.
      66c21aee
  4. 31 1月, 2017 1 次提交
    • R
      bhyve: fix SATA address allocation · 803966c7
      Roman Bogorodskiy 提交于
      As bhyve for a long time didn't have a notion of the explicit SATA
      controller and created a controller for each drive, the bhyve driver
      in libvirt acted in a similar way and didn't care about the SATA
      controllers and assigned PCI addresses to drives directly, as
      the generated command will look like this anyway:
      
       2:0,ahci-hd,somedisk.img
      
      This no longer makes sense because:
      
       1. After commit c07d1c1c it's not possible to assign
          PCI addresses to disks
       2. Bhyve now supports multiple disk drives for a controller,
          so it's going away from 1:1 controller:disk mapping, so
          the controller object starts to make more sense now
      
      So, this patch does the following:
      
       - Assign PCI address to SATA controllers (previously we didn't do this)
       - Assign disk addresses instead of PCI addresses for disks. Now, when
         building a bhyve command, we take PCI address not from the disk
         itself but from its controller
       - Assign addresses at XML parsing time using the
         assignAddressesCallback. This is done mainly for being able to
         verify address allocation via xml2xml tests
       - Adjust existing bhyvexml2{xml,argv} tests to chase the new
         address allocation
      
      This patch is largely based on work of Fabian Freyer.
      803966c7
  5. 11 1月, 2017 2 次提交
  6. 29 8月, 2016 1 次提交
    • R
      bhyve: fix disks address allocation · 25ee22bd
      Roman Bogorodskiy 提交于
      As bhyve currently doesn't use controller addressing and simply
      uses 1 implicit controller for 1 disk device, the scheme looks the
      following:
      
       pci addrees -> (implicit controller) -> disk device
      
      So in fact we identify disk devices by pci address of implicit
      controller and just pass it this way to bhyve in a form:
      
       -s pci_addr,ahci-(cd|hd),/path/to/disk
      
      Therefore, we cannot use virDeviceInfoPCIAddressWanted() because it
      does not expect that disk devices might need PCI address assignment.
      
      As a result, if a disk was specified without address, it will not be
      generated and domain will to start.
      
      Until proper controller addressing is implemented in the bhyve
      driver, force each disk to have PCI address generated if it was not
      specified by user.
      25ee22bd
  7. 21 5月, 2016 1 次提交
  8. 02 5月, 2016 1 次提交
    • M
      Change virDevicePCIAddress to virPCIDeviceAddress · c36b1f7b
      Martin Kletzander 提交于
      We had both and the only difference was that the latter also included
      information about multifunction setting.  The problem with that was that
      we couldn't use functions made for only one of the structs (e.g.
      parsing).  To consolidate those two structs, use the one in virpci.h,
      include that in domain_conf.h and add the multifunction member in it.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      c36b1f7b
  9. 15 4月, 2016 1 次提交
    • L
      conf/qemu: change the way VIR_PCI_CONNECT_TYPE_* flags work · d1cc4605
      Laine Stump 提交于
      The flags used to determine which devices could be plugged into which
      controllers were quite confusing, as they tried to create classes of
      connections, then put particular devices into possibly multiple
      classes, while sometimes setting multiple flags for the controllers
      themselves. The attempt to have a single flag indicate, e.g. that a
      root-port or a switch-downstream-port could connect was not only
      confusing, it was leading to a situation where it would be impossible
      to specify exactly the right combinations for a new controller.
      
      The solution is for the VIR_PCI_CONNECT_TYPE_* flags to have a 1:1
      correspondence with each type of PCI controller, plus a flag for a PCI
      endpoint device and another for a PCIe endpoint device (the only
      exception to this is that pci-bridge and pcie-expander-bus controllers
      have their upstream connection classified as
      VIR_PCI_CONNECT_TYPE_PCI_DEVICE since they can be plugged into
      *exactly* the same ports as any endpoint device).  Each device then
      has a single flag for connect type (plus the HOTPLUG flag if that
      device can e hotplugged), and each controller sets the CONNECT bits
      for all controllers that can be plugged into it, as well as for either
      type of endpoint device that can be plugged in (and the HOTPLUG flag
      if it can accept hotplugged devices).
      
      With this change, it is *slightly* easier to understand the matching
      of connections (as long as you remember that the flag for a
      device/upstream-facing connection of a controller is the same as that
      device's type, while the flags for a controller's downstream
      connections is the OR of all device types that can be plugged into
      that controller). More importantly, it will be possible to correctly
      specify what can be plugged into a pcie-switch-expander-bus, when
      support for it is added.
      d1cc4605
  10. 13 11月, 2014 1 次提交
  11. 13 6月, 2014 1 次提交
    • R
      bhyve: implement PCI address allocation · aad479dc
      Roman Bogorodskiy 提交于
      Automatically allocate PCI addresses for devices instead
      of hardcoding them in the driver code. The current
      allocation schema is to dedicate an entire slot for each devices.
      
      Also, allow having arbitrary number of devices.
      aad479dc