Thread (8 messages) 8 messages, 5 authors, 2012-07-24

Re: calling request_firmware() from module init will not work with recent/future udev versions

From: Kay Sievers <hidden>
Date: 2012-01-16 12:05:40
Also in: linux-wireless

Possibly related (same subject, not in this thread)

On Mon, Jan 16, 2012 at 09:57, Johannes Berg [off-list ref] wrote:
On Sun, 2012-01-15 at 16:33 +0100, Kay Sievers wrote:
Let's say you have iwlwifi, built into the kernel, and an
initramfs that doesn't contain the iwlwifi firmware.
What will happen (last I checked anyway) is this: iwlwifi will do an
async firmware request, and the udev in initramfs will say "don't have
it", thus unbinding and you have to sysfs bind or module reload.
Right, currently. if no firmware is found, udev will write "-1" to the
"loading" file in /sys, which will cancel the kernel's firmware
request.
What I'm was asking then is this: Can udev know that it is running from
initramfs (presumably that can't be too hard) and simply not reply to
async requests it doesn't have firmware for? Then once the real root is
mounted it could satisfy (or not) firmware requests from the real root.
We can surely change it to not cancel the firmware request.

Either by making it aware that we run from initramfs, or by never
cancelling any firmware request and just leave it hanging around for
forever?

We need to decide what's the best model here, if we want a timeout at
all, if yes, how large it should be, and if and when we should cancel
requests.

Kay
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help