On Mon, 2006-09-04 at 15:31 +0100, David Given wrote:
Jon Masters wrote: [...]
Well, if they're in the standard initcall table then the driver init functions are called in the order the drivers were built into the kernel
- directory order during compile and subsequent built-in.o processing.
Any USB devices will only have their drivers inited after the USB bus has been enumerated, which happens in the background.
Hmmm. The device will be detected then, but the driver is still built-in and its init function should therefore still run when the init calls are processed. It's a question of probing vs. just being built-in.
This means that block devices frequently only show up *after* the kernel tries to mount them, which is a pain. There is a kernel option to deal with this --- rootdelay --- which causes the kernel to pause for the specified number of seconds before mounting. You could try fiddling with that...
That's a different issue. That's waiting on enumeration, which is not correctly handled at the moment IMHO (without udev hack jobs). And rootdelay is widely regarded as a huge giant ugly hack :-)
Jon.