On Fri, Nov 22, 2013 at 2:39 AM, Oliver Neukum <oneukum@xxxxxxx> wrote: > On Fri, 2013-11-22 at 01:07 -0800, Dan Williams wrote: >> Move all port power policy evaluation to usb_port_runtime_suspend(). >> Makes it clearer what blocks port power off and is preparation for >> follow on changes that >> 1/ make a usb_port a proper (device model) parent >> of a usb_device >> 2/ advertise to userspace what constraints are keeping a >> port powered >> 3/ changing the meaning of the usb_port runtime suspended >> state. >> 4/ add new constraints peer-port-power-state and connect_type > > It seems to me that if you use reset_resume() you must > check whether all children further down in the tree support > reset_resume() in their drivers. > If a device does not support reset_resume I expect it will fail autosuspend_check(). When that happens the device will stay in the RPM_ACTIVE state. Consequently its parents and ancestors will be prevented from transitioning to RPM_SUSPENDED. I think this would have been a problem prior to "[PATCH v2 07/14] USB: make usb_ports proper parents of their child usb_devices" which makes hubs honor the runtime pm state of their descendants. Might be something powertop should look at, if it does not already, i.e. suggest moving a usb device when it is holding up a tree of devices that could otherwise sleep. -- 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