I missed two paths where __iommu_probe_device() can be called while already holding the device_lock() for the device that is to be probed. This causes a deadlock because __iommu_probe_device() will attempt to re-acquire the lock. Organize things so that these two paths can re-use the existing already held device_lock by marking the call chains based on if the lock is held or not. This is an incremental on top of Joerg's next, but it could also be handled by respinning the last patch in that series. Please let me know. Jason Gunthorpe (3): iommu: Provide iommu_probe_device_locked() iommu: Pass in the iommu_device to probe for in bus_iommu_probe() iommu: Do not attempt to re-lock the iommu device when probing drivers/acpi/scan.c | 5 ++-- drivers/iommu/iommu.c | 60 +++++++++++++++++++++++++++----------- drivers/iommu/of_iommu.c | 2 +- drivers/iommu/omap-iommu.c | 12 ++++++-- include/linux/iommu.h | 6 +++- 5 files changed, 61 insertions(+), 24 deletions(-) base-commit: 8d3740021d5d461e1ec4c17fc5625b9b4237c2f8 -- 2.41.0