"Rafael J. Wysocki" <r...@sisk.pl> writes: > From: Rafael J. Wysocki <rafael.j.wyso...@intel.com> > > Currently, the PM core disables runtime PM for all devices right > after executing subsystem/driver .suspend() callbacks for them > and re-enables it right before executing subsystem/driver .resume() > callbacks for them. This may lead to problems when there are > two devices such that the .suspend() callback executed for one of > them depends on runtime PM working for the other. In that case, > if runtime PM has already been disabled for the second device, > the first one's .suspend() won't work correctly (and analogously > for resume). > > To make those issues go away, make the PM core disable runtime PM > for devices right before executing subsystem/driver .suspend_late() > callbacks for them and enable runtime PM for them right after > executing subsystem/driver .resume_early() callbacks for them. This > way the potential conflitcs between .suspend_late()/.resume_early() > and their runtime PM counterparts are still prevented from happening, > but the subtle ordering issues related to disabling/enabling runtime > PM for devices during system suspend/resume are much easier to avoid. > > Reported-and-tested-by: Jan-Matthias Braun <jan_br...@gmx.net> > Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
Yes! Of course if there are dependencies between drivers late/early callbacks, we'll still have the same problems, but those should be *very* rare compared to the suspend/resume dependencies. I haven't been able to do any testing with this yet (I'm away from my hardware for a bit), but I totally support this change. Reviewed-by: Kevin Hilman <khil...@deeprootsystems.com> Thanks! Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/