1. 09 8月, 2014 2 次提交
  2. 05 8月, 2014 1 次提交
  3. 31 5月, 2014 1 次提交
  4. 27 2月, 2014 1 次提交
  5. 06 8月, 2013 1 次提交
    • A
      vfio: add external user support · 6cdd9782
      Alexey Kardashevskiy 提交于
      VFIO is designed to be used via ioctls on file descriptors
      returned by VFIO.
      
      However in some situations support for an external user is required.
      The first user is KVM on PPC64 (SPAPR TCE protocol) which is going to
      use the existing VFIO groups for exclusive access in real/virtual mode
      on a host to avoid passing map/unmap requests to the user space which
      would made things pretty slow.
      
      The protocol includes:
      
      1. do normal VFIO init operation:
      	- opening a new container;
      	- attaching group(s) to it;
      	- setting an IOMMU driver for a container.
      When IOMMU is set for a container, all groups in it are
      considered ready to use by an external user.
      
      2. User space passes a group fd to an external user.
      The external user calls vfio_group_get_external_user()
      to verify that:
      	- the group is initialized;
      	- IOMMU is set for it.
      If both checks passed, vfio_group_get_external_user()
      increments the container user counter to prevent
      the VFIO group from disposal before KVM exits.
      
      3. The external user calls vfio_external_user_iommu_id()
      to know an IOMMU ID. PPC64 KVM uses it to link logical bus
      number (LIOBN) with IOMMU ID.
      
      4. When the external KVM finishes, it calls
      vfio_group_put_external_user() to release the VFIO group.
      This call decrements the container user counter.
      Everything gets released.
      
      The "vfio: Limit group opens" patch is also required for the consistency.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      6cdd9782
  6. 11 3月, 2013 1 次提交
  7. 13 10月, 2012 1 次提交
  8. 31 7月, 2012 3 次提交
    • A
      vfio: Add PCI device driver · 89e1f7d4
      Alex Williamson 提交于
      Add PCI device support for VFIO.  PCI devices expose regions
      for accessing config space, I/O port space, and MMIO areas
      of the device.  PCI config access is virtualized in the kernel,
      allowing us to ensure the integrity of the system, by preventing
      various accesses while reducing duplicate support across various
      userspace drivers.  I/O port supports read/write access while
      MMIO also supports mmap of sufficiently sized regions.  Support
      for INTx, MSI, and MSI-X interrupts are provided using eventfds to
      userspace.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      89e1f7d4
    • 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