Re: will these methods work with firmware loading?

"Arend van Spriel" <[email protected]>
Newsgroups gmane.linux.hotplug.devel,gmane.linux.kernel,gmane.linux.kernel.wireless.general
Message-ID <[email protected]>
On 02/19/2012 07:40 PM, Larry Finger wrote:
> I sent a previous messages to most of these lists, but got no answer, thus a
> second try.
>
> When a driver loads firmware synchronously in the module_init() path using
> request_firmware(), then there is trouble with timeouts when booting.
>
> 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.

Yep, the nowait api just kicks off a kernel thread for the firmware request.

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

No expert, but that is what I did although the chaining of firmware 
requests does not feel great. Especially for handling error flows. 
Johannes Berg and Kay Sievers mentioned need to unbind/rebind the driver 
upon failed firmware load, but I don't like the idea of building a 
timer-controlled retry mechanism.

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

What boot problem are you referring to? The blocking modprobe? For that 
problem I would say yes. Also here the problem of handling error flows 
exist. If the driver is kicked of during boot with a initramfs missing 
the firmware, should we retry until the real root is mounted?

Gr. AvS

--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.