Re: Regression in kernel 3.8-rc1 bisected to commit adfa79d: I nowget many "unable to enumerate USB device" messages

From: Larry Finger
Date: Thu Dec 27 2012 - 10:46:37 EST


On 12/26/2012 09:56 PM, Alan Stern wrote:
This looks like a matter of getting modules to load in the right order.
Apparently your OHCI controller doesn't work right if the EHCI driver
isn't present. Before the troublesome commit, this meant ehci-hcd had
to be loaded before ohci-hcd. Now it means ehci-hcd and ehci-pci both
have to be loaded before ohci-hcd.

In the dmesg log you provided, ehci-hcd was loaded before ohci-hcd but
ehci-pci was loaded after. Of course, when everything is built into
the kernel (not as modules) then questions of loading order don't
arise.

You can test this hypothesis by booting a kernel without that commit
and blacklisting ehci-hcd, so that it doesn't get loaded automatically.
See if the errors start to come, and see if they stop when you load
ehci-hcd manually.

I could not do exactly the experiment that you wanted, as ehci-hcd was loaded even though it was blacklisted. Rather than solve that problem, I generated a kernel from just before commit adfa79d with ohci-hcd built in and ehci-hcd as a module. This one generated the errors, but they stopped when ehci-hcd loaded. I also tested a 3.8-rc1 kernel with ehci-hcd and ehcd-pci built in and ohci-hcd as a module. No errors for that one. Your hypothesis looks correct.

I hope there is some way to force ehci-pci to load as soon as ehci-hcd is loaded, and before ohci-hcd loads, but if there is not, I know how to prevent the errors on my system even though this solution won't help the users of distro kernels. At least this time the errors stop once all 3 modules are loaded, and the number of error outputs is limited.

Thanks,

Larry

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/