On Tue, 17 May 2011, Greg KH wrote: > On Tue, May 17, 2011 at 02:46:26PM -0700, Sarah Sharp wrote: > > I see that ehci-hcd.c has a warning in when either the UHCI or OHCI > > driver is loaded before the EHCI driver: > > > > set_bit(USB_EHCI_LOADED, &usb_hcds_loaded); > > if (test_bit(USB_UHCI_LOADED, &usb_hcds_loaded) || > > test_bit(USB_OHCI_LOADED, &usb_hcds_loaded)) > > printk(KERN_WARNING "Warning! ehci_hcd should always be loaded" > > " before uhci_hcd and ohci_hcd, not after\n"); > > > > What actually prevents the UHCI or OHCI driver from being loaded before > > the EHCI driver? Is it left up to userspace? > > Yes. Hopefully all of the distros now have properly modprobe rules to > load these before the ehci driver, otherwise we would be getting the > kernel warnings sent to us :) Right. In kernels where the drivers are compiled in rather than being built as modules, the binding takes place in the right order because PCI functions are probed in order of function number, and an EHCI controller is always the highest-numbered function in its slot (this is required by the EHCI spec). > > Since PCI devices can be initialized in parallel, even if the EHCI > > driver is loaded first, that doesn't guarantee that the PCI probe for > > the EHCI controller actually finishes before the UHCI/OHCI PCI probe, > > right? > > I didn't think that PCI devices were initialized in parallel all that > often, so this might be pretty rare. In particular, the pci_scan_child_bus() and pci_scan_slot() routines in drivers/pci/probe.c don't contain any parallelization. As a matter of fact, it's generally not so terrible if the drivers get loaded in the wrong order. What happens is a few devices connect first at full speed to the OHCI or UHCI controller, and then when ehci-hcd starts up, the device is disconnected and then reconnected at high speed (if the device supports it) or at full speed again. This disconnection/reconnection sequence is awkward, looks funny in the logs, and can cause problems for a few devices. But mostly it doesn't matter. Alan Stern -- 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