On Fri, May 15, 2020 at 08:55:42PM +0800, Lu Baolu wrote: > It seems that we can do like this: > > [1] mutex_lock(&group->lock) > [2] for_each_group_device(device_lock()) > [3] if (for_each_group_device(!device_is_bound())) > change_default_domain() > [4] for_each_group_device_reverse(device_unlock()) > [5] mutex_unlock(&group->lock)
The problem here is that I am pretty sure we also have: device_lock() /* from device/driver core code */ -> bus_notifier() -> iommu_bus_notifier() -> ... -> mutex_lock(&group->lock) Which would cause lock-inversion with the above code. Joerg _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu