On Sun, 21 Jun 2009, Rafael J. Wysocki wrote: > > Seriously, there _are_ places where drivers get bound to device before > > those devices are registered. This happens for example in USB when a > > bunch of related interfaces are present in the same physical device. > > When the first interface is registered, its driver binds itself to all > > the others even though they haven't been registered yet. > > Well, the suspend functions could be protected against that under the > assumption that no suspend is possible for resume_counter = 0 (then, the "good > to go" value would be -1). > > Still, the resume functions start from acquring a spinlock, which is not going > to work if that spinlock is uninitialized. The initialization needs to be improved. Most of the code in pm_runtime_init() should be called from device_pm_init(), and the rest should be moved into a separate pm_runtime_add() routine to be called from device_pm_add(). One of the things pm_runtime_add() could do is change the status from RPM_UNREGISTERED to RPM_ACTIVE. Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm