Well, putting usb/ before net/ etc. requires that usb/host/ is the usb/stuff/ or
they'll all wait until they can probe for devices.
Host init is before device init, as that's the Makefile link order. Any device
init causes it to wait for *all* devices, so swapping them around means devices
are going to appear at any time after that - there's no device initcall to make
it block. Presumably it would be possible to have a late_initcall (which would
be early in that list if usb was earlier) that could ensure khubd had finished
[its current queue] before continuing - as if there was a device driver initcall?
If someone currently has HCD init compiled in but nothing else, then the boot
process would block unnecessarily... the initcall would need to be disabled
in that case to maintain existing behaviour - which is why it probably needs
to be a config option, which requires some mess in the Makefile or a new
initcall type.
It seems like there's always going to be a stage where there's no keyboard...
I don't know where you got that from - they're definitely all compiled in.
Whichever is first to have its initcall run is blocked, and the logs may have
been from a test of that.
--
Simon Arlott
--