[PATCH v7 3/5] iommu: Add iommu_driver_get_domain_for_dev() helper
Jason Gunthorpe
jgg at nvidia.com
Tue Nov 25 11:21:44 PST 2025
On Fri, Nov 21, 2025 at 05:57:30PM -0800, Nicolin Chen wrote:
> 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 at intel.com>
> Reviewed-by: Lu Baolu <baolu.lu at linux.intel.com>
> Signed-off-by: Nicolin Chen <nicolinc at nvidia.com>
> ---
> include/linux/iommu.h | 1 +
> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 5 ++--
> drivers/iommu/iommu.c | 28 +++++++++++++++++++++
> 3 files changed, 32 insertions(+), 2 deletions(-)
Reviewed-by: Jason Gunthorpe <jgg at nvidia.com>
Jason
More information about the linux-arm-kernel
mailing list