On Wed, Dec 18, 2024 at 05:08:30PM +0530, Manivannan Sadhasivam wrote: > On Wed, Dec 18, 2024 at 09:40:45AM +0100, Johan Hovold wrote: > > I've tracked down the hang to a deadlock on the parent device lock. > > > > Driver core takes the parent device lock before calling shutdown(), and > > then mhi_pci_shutdown() waits indefinitely for the recovery thread to > > finish. > Thanks for tracking the deadlock. I think we should use pci_try_reset_function() > instead of pci_reset_function() in mhi_pci_recovery_work(). > > If the pci_dev_lock() is already taken, it will return with -EAGAIN and we do > not need to worry in that case since the host is going to be powered off anyway > (and so the device). That may work. But note that I've now also seen this deadlock during suspend (i.e. when the device is not going away). The pci_try_reset_function() should avoid the deadlock here too, but we'll end up in funny state. Now I'd also like to know why I'm suddenly seeing these runtime PM resume errors of this modem. Haven't seen them before 6.13-rc, and I'm not sure that it's really the firmware that is crashing left and right all of a sudden. Johan