[GIT PULL] Please pull IOMMUFD subsystem changes

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

 



Hi Linus,

This PR includes IO fault reporting for iommufd, along with some improvements
to the dirty bitmap reporting library. Details in the tag.

For those following, these series are still progressing:

- User page table invalidation (non-Intel) has a roadmap:
 https://lore.kernel.org/linux-iommu/20231209014726.GA2945299@xxxxxxxxxx/

 There will be at least two more invalidation IOCTLs - IOMMU_DEVICE_INVALIDATE
 and IOMMU_VIOMMU_INVALIDATE in future.

- ARM SMMUv3 nested translation:
 https://github.com/jgunthorpe/linux/commits/smmuv3_nesting

- Draft AMD IOMMU nested translation:
 https://lore.kernel.org/linux-iommu/20240112000646.98001-1-suravee.suthikulpanit@xxxxxxx

- Draft vBTM support for SMMUv3:
 https://lore.kernel.org/linux-iommu/20240208151837.35068-1-shameerali.kolothum.thodi@xxxxxxxxxx/

- Draft RISCV nesting support:
 https://lore.kernel.org/all/20240507142600.23844-1-zong.li@xxxxxxxxxx/

- Grace command queue passthrough iommufd support:
 https://lore.kernel.org/all/cover.1712978212.git.nicolinc@xxxxxxxxxx/

RFC patches for PASID support in iommufd & vfio:
  https://lore.kernel.org/r/20240628090557.50898-1-yi.l.liu@xxxxxxxxx
  https://lore.kernel.org/r/20240412082121.33382-1-yi.l.liu@xxxxxxxxx/

RFC patches exploring support for the first Intel Scalable IO Virtualization
(SIOV r1) device are posted:
 https://lore.kernel.org/all/20231009085123.463179-1-yi.l.liu@xxxxxxxxx/

A lot of the iommufd support has now been merged to qemu, with more
progressing.

Thanks,
Jason

The following changes since commit f2661062f16b2de5d7b6a5c42a9a5c96326b8454:

  Linux 6.10-rc5 (2024-06-23 17:08:54 -0400)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd.git tags/for-linus-iommufd

for you to fetch changes up to 136a8066676e593cd29627219467fc222c8f3b04:

  iommufd: Put constants for all the uAPI enums (2024-07-15 09:44:54 -0300)

----------------------------------------------------------------
iommufd for 6.11 merge window

Major changes:

- The iova_bitmap logic for efficiently reporting dirty pages back to
  userspace has a few more tricky corner case bugs that have been resolved
  and backed with new tests. The revised version has simpler logic.

- Shared branch with iommu for handle support when doing domain
  attach. Handles allow the domain owner to include additional private data
  on a per-device basis.

- IO Page Fault Reporting to userspace via iommufd. Page faults can be
  generated on fault capable HWPTs when a translation is not present.
  Routing them to userspace would allow a VMM to be able to virtualize them
  into an emulated vIOMMU. This is the next step to fully enabling vSVA
  support.

----------------------------------------------------------------
Jason Gunthorpe (3):
      Merge branch 'iommufd_pri' into iommufd for-next
      iommufd: Require drivers to supply the cache_invalidate_user ops
      iommufd: Put constants for all the uAPI enums

Joao Martins (11):
      iommufd/selftest: Fix dirty bitmap tests with u8 bitmaps
      iommufd/selftest: Fix iommufd_test_dirty() to handle <u8 bitmaps
      iommufd/selftest: Add tests for <= u8 bitmap sizes
      iommufd/selftest: Fix tests to use MOCK_PAGE_SIZE based buffer sizes
      iommufd/selftest: Do not record head iova to better match iommu drivers
      iommufd/iova_bitmap: Check iova_bitmap_done() after set ahead
      iommufd/iova_bitmap: Cache mapped length in iova_bitmap_map struct
      iommufd/iova_bitmap: Move initial pinning to iova_bitmap_for_each()
      iommufd/iova_bitmap: Consolidate iova_bitmap_set exit conditionals
      iommufd/iova_bitmap: Dynamic pinning on iova_bitmap_set()
      iommufd/iova_bitmap: Remove iterator logic

Lu Baolu (13):
      iommu: Introduce domain attachment handle
      iommu: Remove sva handle list
      iommu: Add attach handle to struct iopf_group
      iommu: Extend domain attach group with handle support
      iommufd: Add fault and response message definitions
      iommufd: Add iommufd fault object
      iommufd: Fault-capable hwpt attach/detach/replace
      iommufd: Associate fault object with iommufd_hw_pgtable
      iommufd/selftest: Add IOPF support for mock device
      iommufd/selftest: Add coverage for IOPF test
      iommufd: Remove IOMMUFD_PAGE_RESP_FAILURE
      iommufd: Add check on user response code
      iommufd: Fix error pointer checking

 drivers/dma/idxd/init.c                          |   2 +-
 drivers/iommu/io-pgfault.c                       |  63 ++--
 drivers/iommu/iommu-priv.h                       |  11 +
 drivers/iommu/iommu-sva.c                        |  42 ++-
 drivers/iommu/iommu.c                            | 185 +++++++---
 drivers/iommu/iommufd/Makefile                   |   1 +
 drivers/iommu/iommufd/device.c                   |   7 +-
 drivers/iommu/iommufd/fault.c                    | 443 +++++++++++++++++++++++
 drivers/iommu/iommufd/hw_pagetable.c             |  41 ++-
 drivers/iommu/iommufd/iommufd_private.h          |  80 ++++
 drivers/iommu/iommufd/iommufd_test.h             |   8 +
 drivers/iommu/iommufd/iova_bitmap.c              | 124 +++----
 drivers/iommu/iommufd/main.c                     |   6 +
 drivers/iommu/iommufd/selftest.c                 |  70 +++-
 include/linux/iommu.h                            |  41 ++-
 include/uapi/linux/iommufd.h                     | 141 +++++++-
 tools/testing/selftests/iommu/iommufd.c          |  86 +++--
 tools/testing/selftests/iommu/iommufd_fail_nth.c |   2 +-
 tools/testing/selftests/iommu/iommufd_utils.h    |  92 ++++-
 19 files changed, 1206 insertions(+), 239 deletions(-)
 create mode 100644 drivers/iommu/iommufd/fault.c

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux