]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
iommu: Add iommu_driver_get_domain_for_dev() helper
authorNicolin Chen <nicolinc@nvidia.com>
Mon, 15 Dec 2025 21:42:18 +0000 (13:42 -0800)
committerJoerg Roedel <joerg.roedel@amd.com>
Sat, 10 Jan 2026 09:26:43 +0000 (10:26 +0100)
commita75b2be249d60eff6015737f6c3e94935b541068
tree9cf2dcad94283db8e957773231e00aba7351b4a5
parent4a73abb965b7546864957d2bde428f1e72bc3bb5
iommu: Add iommu_driver_get_domain_for_dev() helper

There is a need to stage a resetting PCI device to temporarily the blocked
domain and then attach back to its previously attached domain after reset.

This can be simply done by keeping the "previously attached domain" in the
iommu_group->domain pointer while adding an iommu_group->resetting_domain,
which gives troubles to IOMMU drivers using the iommu_get_domain_for_dev()
for a device's physical domain in order to program IOMMU hardware.

And in such for-driver use cases, the iommu_group->mutex must be held, so
it doesn't fit in external callers that don't hold the iommu_group->mutex.

Introduce a new iommu_driver_get_domain_for_dev() helper, exclusively for
driver use cases that hold the iommu_group->mutex, to separate from those
external use cases.

Add a lockdep_assert_not_held to the existing iommu_get_domain_for_dev()
and highlight that in a kdoc.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/iommu.c
include/linux/iommu.h