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. 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...