1. 25 7月, 2013 1 次提交
    • A
      vfio: Don't overreact to DEL_DEVICE · de9c7602
      Alex Williamson 提交于
      BUS_NOTIFY_DEL_DEVICE triggers IOMMU drivers to remove devices from
      their iommu group, but there's really nothing we can do about it at
      this point.  If the device is in use, then the vfio sub-driver will
      block the device_del from completing until it's released.  If the
      device is not in use or not owned by a vfio sub-driver, then we
      really don't care that it's being removed.
      
      The current code can be triggered just by unloading an sr-iov driver
      (ex. igb) while the VFs are attached to vfio-pci because it makes an
      incorrect assumption about the ordering of driver remove callbacks
      vs the DEL_DEVICE notification.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      de9c7602
  2. 26 6月, 2013 1 次提交
    • A
      vfio: Limit group opens · 6d6768c6
      Alex Williamson 提交于
      vfio_group_fops_open attempts to limit concurrent sessions by
      disallowing opens once group->container is set.  This really doesn't
      do what we want and allow for inconsistent behavior, for instance a
      group can be opened twice, then a container set giving the user two
      file descriptors to the group.  But then it won't allow more to be
      opened.  There's not much reason to have the group opened multiple
      times since most access is through devices or the container, so
      complete what the original code intended and only allow a single
      instance.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      6d6768c6
  3. 20 6月, 2013 1 次提交
  4. 05 6月, 2013 1 次提交
  5. 01 5月, 2013 1 次提交
    • A
      vfio: Set container device mode · 664e9386
      Alex Williamson 提交于
      Minor 0 is the VFIO container device (/dev/vfio/vfio).  On it's own
      the container does not provide a user with any privileged access.  It
      only supports API version check and extension check ioctls.  Only by
      attaching a VFIO group to the container does it gain any access.  Set
      the mode of the container to allow access.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      664e9386
  6. 29 4月, 2013 1 次提交
  7. 26 4月, 2013 1 次提交
  8. 11 3月, 2013 1 次提交
  9. 28 2月, 2013 1 次提交
  10. 15 2月, 2013 2 次提交
    • A
      vfio: whitelist pcieport · 2b489a45
      Alex Williamson 提交于
      pcieport does nice things like manage AER and we know it doesn't do
      DMA or expose any user accessible devices on the host.  It also keeps
      the Memory, I/O, and Busmaster bits enabled, which is pretty handy
      when trying to use anyting below it.  Devices owned by pcieport cannot
      be given to users via vfio, but we can tolerate them not being owned
      by vfio-pci.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      2b489a45
    • A
      vfio: Protect vfio_dev_present against device_del · e014e944
      Alex Williamson 提交于
      vfio_dev_present is meant to give us a wait_event callback so that we
      can block removing a device from vfio until it becomes unused.  The
      root of this check depends on being able to get the iommu group from
      the device.  Unfortunately if the BUS_NOTIFY_DEL_DEVICE notifier has
      fired then the device-group reference is no longer searchable and we
      fail the lookup.
      
      We don't need to go to such extents for this though.  We have a
      reference to the device, from which we can acquire a reference to the
      group.  We can then use the group reference to search for the device
      and properly block removal.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      e014e944
  11. 08 12月, 2012 2 次提交
  12. 27 9月, 2012 2 次提交
  13. 22 8月, 2012 4 次提交
  14. 31 7月, 2012 2 次提交
    • A
      vfio: Type1 IOMMU implementation · 73fa0d10
      Alex Williamson 提交于
      This VFIO IOMMU backend is designed primarily for AMD-Vi and Intel
      VT-d hardware, but is potentially usable by anything supporting
      similar mapping functionality.  We arbitrarily call this a Type1
      backend for lack of a better name.  This backend has no IOVA
      or host memory mapping restrictions for the user and is optimized
      for relatively static mappings.  Mapped areas are pinned into system
      memory.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      73fa0d10
    • A
      vfio: VFIO core · cba3345c
      Alex Williamson 提交于
      VFIO is a secure user level driver for use with both virtual machines
      and user level drivers.  VFIO makes use of IOMMU groups to ensure the
      isolation of devices in use, allowing unprivileged user access.  It's
      intended that VFIO will replace KVM device assignment and UIO drivers
      (in cases where the target platform includes a sufficiently capable
      IOMMU).
      
      New in this version of VFIO is support for IOMMU groups managed
      through the IOMMU core as well as a rework of the API, removing the
      group merge interface.  We now go back to a model more similar to
      original VFIO with UIOMMU support where the file descriptor obtained
      from /dev/vfio/vfio allows access to the IOMMU, but only after a
      group is added, avoiding the previous privilege issues with this type
      of model.  IOMMU support is also now fully modular as IOMMUs have
      vastly different interface requirements on different platforms.  VFIO
      users are able to query and initialize the IOMMU model of their
      choice.
      
      Please see the follow-on Documentation commit for further description
      and usage example.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      cba3345c