On Mon, May 14, 2012 at 04:04:24PM +0200, Thomas Bächler wrote:
Am 14.05.2012 15:50, schrieb Dave Reisner:
In the past, udev needed to run before the modules listed in MODULES= from mkinitcpio.conf were loaded. Otherwise, firmware loading would fail, and almost everyone with MODULES="radeon" would be very unhappy! I know that some things have changed regarding firmware loading since then, but this is likely still an issue in some form - and even if it isn't, it is a good idea to have a firmware helper present before doing anything.
Excellent point -- was curious about this myself. I asked Kay about it:
08:50 kay » it will be catched with the coldplug run, yes 08:50 kay » but if udev runs in intramfs, and there is no firmware file, the request will be canceled
That should be taken care of.
08:51 falconindy » yeah, this is initramfs 08:51 falconindy » so settle will play catchup and things will just work (hopefully) 08:57 kay » settle? 08:57 kay » trigger will 08:58 falconindy » even better 08:58 kay » but if udev from initramfs still runs and there is no firmware file, all is discarded
So it seems to me that we're covered here since we assume that the firmware is present (or else its a bug in mkinitcpio). I'd like to get someone with perhaps a radeon to confirm this via my working branch and a modified udev hook (I can provide this), but I guess the worst case scenario is that we file a bug.
Back in the day (haha), udev still worked with modules waiting for firmware in module_init. But running 'modprobe foobar; udevd --daemon' would wait for the timeout and start udev afterwards.
Hmmm, so this problem would be visible via the same broken modules that cropped up when udev removed the timeout handling (mostly wifi drivers). I've got a user testing this for me and reporting that radeon doesn't work properly. Even though the driver looks like it does an async firmware request, it blocks for 60 seconds before timing out and saying failed to load firmware (even though the provided path exists).
Starting udev before module loading is safe and also works with old versions. If these bugs are all fixed, then Kay is of course correct.
I'm more inclined to think that this is module specific than udev specific. Either way, probably best to leave the udev startup where it is and just move out the cleanup. Boooo. d