On 04/13/2012 03:00 PM, Alan Stern wrote: > On Fri, 13 Apr 2012, Stephen Warren wrote: > >> On 04/13/2012 01:46 PM, Alan Stern wrote: >>> On Fri, 13 Apr 2012, Stephen Warren wrote: >>>> I've tested the patch, and can unplug a USB device, wait 10 seconds, >>>> then plug it back in, and everything works as expected. >>>> >>>> However, I don't notice /sys/devices/.../power/runtime_status ever >>>> saying anything other than active, and I can't cat autosuspend_delay_ms, >>>> so I assume I'm still not triggering the path you want me to test. I do >>>> have PM_RUNTIME turned on. Any ideas? Do I need some patch to the USB >>>> core to enable this? I tested on next-20120413 plus a few local patches. >>> >>> autosuspend_delay_ms isn't relevant here; the controller should be >>> suspended with no delay as soon as the root hub suspends. No other >>> patches should be needed; it sounds like you're doing everything right. >>> >>> If you enable CONFIG_PM_ADVANCED_DEBUG along with CONFIG_PM_RUNTIME, >>> what do all the other power/runtime_* files show? >> >> The EHCI controller's active_kids count stays at 1 all the time. I >> assume that's the root USB hub device. Looking in its power/ directory, >> I see that even when nothing is plugged in, runtime_status==enabled, >> even with no active_kids or runtime_usage: > > That does indeed sound like a bug. > >> [ 242.611209] usb 3-1: USB disconnect, device number 4 >> root@ilyich:/sys/devices/tegra-ehci.2/usb3/power# cat async >> enabled >> root@ilyich:/sys/devices/tegra-ehci.2/usb3/power# cat autosuspend_delay_ms >> 0 > > Odd... This should contain 2000. Maybe some userspace program has > changed it? Either value would be okay, however. > > You could try writing 2000 to this file, then plugging in a device and > unplugging it. The root hub should then suspend 2 seconds after you > unplug the device. There's no difference if I write 2000 to this file. I've tried turning on dynamic debug for the entire of USB. None of those fire, which I believe implies there aren't any attempted suspends of the Tegra EHCI controller that fail. I also added a few extra printks to the Tegra EHCI controller's suspend/resume functions which don't fire. Is this anything to do with it: ./ehci-hub.c:615: /* FIXME autosuspend idle root hubs */ I'm at a loss how to do anything more useful here. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html