Hi Larry, > I know that changing the request_firmware() call to request_firmware_nowait() > solves the problem; however, that gives some trouble for driver b43legacy as it > loads 3 or 4 firmware files depending on the hardware version. When I launch the > 3 or 4 nowait requests, I get an error because the system is trying to start > several tasks with the same name. > > Would it be OK to load the first file with the nowait version, and issue a > request_firmware() for the others from the callback routine? I think that would > not cause any problems, but I would like to get confirmation from an expert. That should work -- I just looked at the firmware code and it spawns a new thread for every "nowait" request (and it calls the callback in that thread's context), so it won't block against itself. > Similarly, if I were to create a work queue, init and schedule it from > module_init(), and then use synchronous loads to get the firmware from the work > queue callback, would that get around the boot problem? I know it works as I > have trial patches; however, my version of udev is not one affected. This method > is very easy to implement, but again I would like confirmation from an expert. We discussed that before, and technically it should work, I'm just a bit worried about udev treating asynchronous and synchronous requests differently and that causing issues, but somebody who knows udev better will have to comment on that. johannes _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel