Comment 38 for bug 296710

Revision history for this message
Scott James Remnant (Canonical) (canonical-scott) wrote :

Ok, now I've looked into it, ehci_hcd, uhci_hcd and ohci_hcd have ZERO overlap in terms of device support. There is no way that any device would result in more than one of these modules being loaded in any given modprobe invocation, so modules.order would not apply (as I said above):

        This obviously doesn't count if hardware not supported by ehci-hcd is found first,
        but then that would also be true of building the module into the kernel.

Since you have USB-1 hardware and USB-2 hardware, and the USB-1 hardware is being detected first, you are fundamentally suffering from the problem I described above:

 * a laptop with only USB 1.0 Host Control Devices is booted

 * we'll only load ohci_hcd/uhci_hcd because those are all we need

 * hours/days/weeks later, the laptop owner plugs in a pccard that provides a USB 2.0 interface

 * we now load the ehci_hcd driver, and get that kernel warning

So there is no way to fix this from userspace.

Given that there's no overlap between module aliases, it baffles me as to why the kernel needs an ordering requirement at all? ehci_hcd should only take over those cards with an interface of 0x20, uhci_hcd with an interface of 0x00 and ohci_hcd with an interface of 0x10.

I'm marking the userspace parts of this as Won't Fix and will ask a Kernel Developer to weigh in on the kernel side.