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