On Fri, 27 Jul 2012, Rafael J. Wysocki wrote: > > > > > + if (parent) > > > > > + pm_runtime_put(parent); > > > > > > > > You should use pm_runtime_put_sync(), not pm_runtime_put(). > > > > > > Hmm, why exactly? > > > > Because it's more efficient to do something directly than to run it in > > a workqueue. > > Well, depends. If that results in a power off (the parent goes into > D3 for example), we may wait as long as 10 ms for that to complete. True, but so what? You'd also have to wait 10 ms for the workqueue item to complete if pm_runtime_put() was used, plus the additional overhead of scheduling the workqueue thread. Now, if the length of time required for the probe to run were an issue then yes, the synchronous routine could make things take longer. But probing is generally done asynchronously anyway, right? And usually what matters is the time before the device becomes available, not the time for the probe to run. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html