[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