On Wed, Mar 11, 2009 at 11:20:53PM +0000, Steve Calfee wrote: > I am trying to understand how a USB driver gets assigned to a device. Have you read the documentation on how this happens in the book, Linux Device Drivers, third edition, which is free online? > It seems that a udev rule does a modprobe for a driver to handle a device. > In most cases the module is already in-kernel and this step does nothing. Not really true, lots of times the module is not present. > The module/driver probe routine is called by the kernel, only if there is a > match in its registered usb_device_id table. If more than one driver > matches, the first one installed gets called first. In 2.6.16, if the probe > "failed" (returned non-zero), no more modules were probed. I think this is > broken, and I am now trying 2.6.28, maybe it does the right thing and > continues looking for a driver that wants a device. > > I have a different situation, but a classic issue is if a user wants to > have ub handle one device and usb-storage handle others. How can this be > done? udev loads the driver, but the driver itself grabs the devices. The > first module loaded will hog all the devices. USBIP will also sooner or > later hit this problem, some devices might need to be local and some placed > remotely. Presumably separate drivers will be needed. See the libusual code for how this is handled. > So right now, a Linux USB driver will in-kernel determine if it wants to > bind to a particular device. This is weakly controlled by userspace by the > order of module registering (usually by order of insmod). But there is no > way for userspace to determine a mapping between devices and drivers. Is > there a udev solution for this? Not really, but I fail to see the problem that you are trying to solve here. What exactly are you trying to do? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html