[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240717184603.GA4188230@nvidia.com>
Date: Wed, 17 Jul 2024 15:46:03 -0300
From: Jason Gunthorpe <jgg@...dia.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: iommu@...ts.linux.dev, kvm@...r.kernel.org,
linux-kernel@...r.kernel.org, Kevin Tian <kevin.tian@...el.com>
Subject: [GIT PULL] Please pull IOMMUFD subsystem changes
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@nvidia.com/
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@amd.com
- Draft vBTM support for SMMUv3:
https://lore.kernel.org/linux-iommu/20240208151837.35068-1-shameerali.kolothum.thodi@huawei.com/
- Draft RISCV nesting support:
https://lore.kernel.org/all/20240507142600.23844-1-zong.li@sifive.com/
- Grace command queue passthrough iommufd support:
https://lore.kernel.org/all/cover.1712978212.git.nicolinc@nvidia.com/
RFC patches for PASID support in iommufd & vfio:
https://lore.kernel.org/r/20240628090557.50898-1-yi.l.liu@intel.com
https://lore.kernel.org/r/20240412082121.33382-1-yi.l.liu@intel.com/
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@intel.com/
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
Download attachment "signature.asc" of type "application/pgp-signature" (229 bytes)
Powered by blists - more mailing lists