On Wed, Aug 9, 2023 at 1:27 AM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > 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 Tested-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx> Thank you for coming up with fixes so quickly.