Merge tag 'vfio-v6.0-rc1' of https://github.com/awilliam/linux-vfio
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2022 15:59:35 +0000 (08:59 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2022 15:59:35 +0000 (08:59 -0700)
Pull VFIO updates from Alex Williamson:

 - Cleanup use of extern in function prototypes (Alex Williamson)

 - Simplify bus_type usage and convert to device IOMMU interfaces (Robin
   Murphy)

 - Check missed return value and fix comment typos (Bo Liu)

 - Split migration ops from device ops and fix races in mlx5 migration
   support (Yishai Hadas)

 - Fix missed return value check in noiommu support (Liam Ni)

 - Hardening to clear buffer pointer to avoid use-after-free (Schspa
   Shi)

 - Remove requirement that only the same mm can unmap a previously
   mapped range (Li Zhe)

 - Adjust semaphore release vs device open counter (Yi Liu)

 - Remove unused arg from SPAPR support code (Deming Wang)

 - Rework vfio-ccw driver to better fit new mdev framework (Eric Farman,
   Michael Kawano)

 - Replace DMA unmap notifier with callbacks (Jason Gunthorpe)

 - Clarify SPAPR support comment relative to iommu_ops (Alexey
   Kardashevskiy)

 - Revise page pinning API towards compatibility with future iommufd
   support (Nicolin Chen)

 - Resolve issues in vfio-ccw, including use of DMA unmap callback (Eric
   Farman)

* tag 'vfio-v6.0-rc1' of https://github.com/awilliam/linux-vfio: (40 commits)
  vfio/pci: fix the wrong word
  vfio/ccw: Check return code from subchannel quiesce
  vfio/ccw: Remove FSM Close from remove handlers
  vfio/ccw: Add length to DMA_UNMAP checks
  vfio: Replace phys_pfn with pages for vfio_pin_pages()
  vfio/ccw: Add kmap_local_page() for memcpy
  vfio: Rename user_iova of vfio_dma_rw()
  vfio/ccw: Change pa_pfn list to pa_iova list
  vfio/ap: Change saved_pfn to saved_iova
  vfio: Pass in starting IOVA to vfio_pin/unpin_pages API
  vfio/ccw: Only pass in contiguous pages
  vfio/ap: Pass in physical address of ind to ap_aqic()
  drm/i915/gvt: Replace roundup with DIV_ROUND_UP
  vfio: Make vfio_unpin_pages() return void
  vfio/spapr_tce: Fix the comment
  vfio: Replace the iommu notifier with a device list
  vfio: Replace the DMA unmapping notifier with a callback
  vfio/ccw: Move FSM open/close to MDEV open/close
  vfio/ccw: Refactor vfio_ccw_mdev_reset
  vfio/ccw: Create a CLOSE FSM event
  ...

1  2 
Documentation/driver-api/vfio-mediated-device.rst
drivers/vfio/pci/vfio_pci_core.c
drivers/vfio/vfio.c
include/linux/vfio_pci_core.h

Simple merge
@@@ -549,16 -554,6 +554,16 @@@ static struct vfio_group *vfio_group_fi
        if (!iommu_group)
                return ERR_PTR(-EINVAL);
  
-       if (!iommu_capable(dev->bus, IOMMU_CAP_CACHE_COHERENCY)) {
 +      /*
 +       * VFIO always sets IOMMU_CACHE because we offer no way for userspace to
 +       * restore cache coherency. It has to be checked here because it is only
 +       * valid for cases where we are using iommu groups.
 +       */
++      if (!device_iommu_capable(dev, IOMMU_CAP_CACHE_COHERENCY)) {
 +              iommu_group_put(iommu_group);
 +              return ERR_PTR(-EINVAL);
 +      }
 +
        group = vfio_group_get_from_iommu(iommu_group);
        if (!group)
                group = vfio_create_group(iommu_group, VFIO_IOMMU);
@@@ -206,11 -205,9 +205,11 @@@ static inline int vfio_pci_igd_init(str
  }
  #endif
  
 -#ifdef CONFIG_S390
 +#ifdef CONFIG_VFIO_PCI_ZDEV_KVM
- extern int vfio_pci_info_zdev_add_caps(struct vfio_pci_core_device *vdev,
-                                      struct vfio_info_cap *caps);
+ int vfio_pci_info_zdev_add_caps(struct vfio_pci_core_device *vdev,
+                               struct vfio_info_cap *caps);
 +int vfio_pci_zdev_open_device(struct vfio_pci_core_device *vdev);
 +void vfio_pci_zdev_close_device(struct vfio_pci_core_device *vdev);
  #else
  static inline int vfio_pci_info_zdev_add_caps(struct vfio_pci_core_device *vdev,
                                              struct vfio_info_cap *caps)