On Fri, 17 Jan 2014, Sarah Sharp wrote: > > Allow me to propose an alternative. > > > > Let's do our best to treat root hubs the same as external hubs. This > > means that udev->lpm_capable should be set the same way in > > hub_port_init() and register_root_hub(): by calling > > usb_device_supports_lpm(), which gets the information from the BOS > > extended capabilities. > > > > In particular, xhci-hcd shouldn't go messing around with the innards of > > the root hub structure. Instead of setting lpm_capable when it knows > > how to calculate the timeout values, it should pass the necessary > > information through the ss_cap descriptor, just like an external hub > > would. Either don't provide that descriptor at all if you don't know > > the timeout values, or else set those fields in the descriptor to > > something invalid (and make usb_device_supports_lpm() test for it). > > > > And while we're at it, let's change the comment in > > usb_device_supports_lpm() that says "All USB 3.0 must support LPM". > > Not only is it ungrammatical, but as you point out, it is wrong for > > some root hubs. > > I agree your alternative is much cleaner, and I agree we should try to > treat roothubs like external hubs. I've made a patch (to be sent > shortly) that fixes this. > > However, I would like to see the original bad commit ("usbcore: set > lpm_capable field for LPM capable root hubs") reverted from the stable > kernels, since it's been backported to 3.10, 3.11, and 3.12. I would > rather go for the simple revert, since that's less likely to cause > issues than new code. Reverting Ksenia's patch from the stable kernels is okay with me. Strictly speaking, I guess this means you have to revert it from the current kernel as well, and then write your new patch to go on top of the reversion. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html