]> www.infradead.org Git - users/dwmw2/linux.git/commit
iommu: Add attach handle to struct iopf_group
authorLu Baolu <baolu.lu@linux.intel.com>
Tue, 2 Jul 2024 06:34:37 +0000 (14:34 +0800)
committerWill Deacon <will@kernel.org>
Thu, 4 Jul 2024 12:46:18 +0000 (13:46 +0100)
commit06cdcc32d65759d42c6340700796e2906045b6a5
tree771b01a3c93cecd2fd6401c86379fa5a34937117
parent3e7f57d1ef3f5fbed58974fae38d35e430f57d35
iommu: Add attach handle to struct iopf_group

Previously, the domain that a page fault targets is stored in an
iopf_group, which represents a minimal set of page faults. With the
introduction of attach handle, replace the domain with the handle
so that the fault handler can obtain more information as needed
when handling the faults.

iommu_report_device_fault() is currently used for SVA page faults,
which handles the page fault in an internal cycle. The domain is retrieved
with iommu_get_domain_for_dev_pasid() if the pasid in the fault message
is valid. This doesn't work in IOMMUFD case, where if the pasid table of
a device is wholly managed by user space, there is no domain attached to
the PASID of the device, and all page faults are forwarded through a
NESTING domain attaching to RID.

Add a static flag in iommu ops, which indicates if the IOMMU driver
supports user-managed PASID tables. In the iopf deliver path, if no
attach handle found for the iopf PASID, roll back to RID domain when
the IOMMU driver supports this capability.

iommu_get_domain_for_dev_pasid() is no longer used and can be removed.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/20240702063444.105814-4-baolu.lu@linux.intel.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/io-pgfault.c
drivers/iommu/iommu-sva.c
drivers/iommu/iommu.c
include/linux/iommu.h