On Thu, Sep 11, 2025 at 09:46:35PM +0100, Russell King (Oracle) wrote:
On Thu, Sep 11, 2025 at 07:55:13AM -0700, Jakub Kicinski wrote:
We keep having issues with rtnl_lock taken from resume. Honestly, I'm not sure anyone has found a good solution, yet. Mostly people just don't implement runtime PM.
If we were able to pass optional context to suspend/resume we could implement conditional locking. We'd lose a lot of self-respect but it'd make fixing such bugs easier..
Normal drivers have the option of separate callbacks for runtime PM vs system suspend/resume states. It seems USB doesn't, just munging everything into one pair of suspend and resume ops without any way of telling them apart. I suggest that is part of the problem here.
However, I'm not a USB expert, so...
The USB subsystem uses only one pair of callbacks for suspend and resume because USB hardware has only one suspend state. However, the callbacks do get an extra pm_message_t parameter which they can use to distinguish between system sleep transitions and runtime PM transitions.
Alan Stern