On Sun, 12 Dec 2010, Alan Stern wrote: > On Mon, 13 Dec 2010, Rafael J. Wysocki wrote: > > > From: Rafael J. Wysocki <rjw@xxxxxxx> > > > > Instead of keeping all devices in the same list during system suspend > > and resume, regardless of what suspend-resume callbacks have been > > executed for them already, use separate lists of devices that have > > had their ->prepare(), ->suspend() and ->suspend_noirq() callbacks > > executed. This will allow us to simplify the core device suspend and > > resume routines. > > Okay in principle. But there's one mistake... > > > @@ -699,8 +693,8 @@ static void dpm_complete(pm_message_t st > > INIT_LIST_HEAD(&list); > > mutex_lock(&dpm_list_mtx); > > transition_started = false; > > - while (!list_empty(&dpm_list)) { > > - struct device *dev = to_device(dpm_list.prev); > > + while (!list_empty(&dpm_prepared_list)) { > > + struct device *dev = to_device(dpm_prepared_list.prev); > > > > get_device(dev); > > if (dev->power.status > DPM_ON) { > > The parts about getting rid of "list" and putting dev back onto > dpm_list got left out. Never mind. I forgot that we need to keep using the intermediate list in order to handle new devices being registered while the resumes are taking place. Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm