Re: [GIT *] Allow request_firmware() to be satisfied from in-kernel, use it in more drivers.

Jeff Garzik
2008-07-15T21:40:30Z

Linus Torvalds wrote:
>
> On Tue, 15 Jul 2008, Jeff Garzik wrote:
>> Kernel 2.6.26. Older userland w/ initrd requirement, plus module w/
>> compiled-in firmware.
>>
>> Simply dropping 2.6.27 into that situation will produce an unbootable system,
>> since the firmware would not get copied into the initrd.
>
> Umm. Neither would the module.

Sure it would.

Normal kernel build with modules, older userland (with older initrd).

'make modules_install && make install' will
* install modules in /lib
* install firmware in /lib [2.6.27 only]
* install kernel
* update grub
* rebuild initrd

Do this, under both 2.6.26 and 2.6.27.

2.6.26 will put a working driver into initrd.

2.6.27 will put a dead driver into initrd (because no firmware got
copied into initrd image).

> Or are you rebuilding the module into the initrd? If so, why didn't you do
> the firmware too and my "load directly from file" idea which is pretty
> simple? IOW, what's the fundamnetal problem here?

The firmware doesn't get copied into the initrd, because it is an
automated process (older mkinitrd) that is unaware of the need to copy
the firmware into the initrd.

Do the same build process on 2.6.26 and 2.6.27, and you WILL get
different results on older userlands, for the same simple reason: the
scripts do not know to copy the firmware when they copy the kernel module.

> But hey, if you _do_ the "link it together", go ahead. I don't see why

Great! I will :)

> it's so magically superior, but I wanted it for the compiled-in driver
> case, so it's not fundamentally different from that either.

It's not magically superior, just a necessary tool that helps avoid a
whole class of regressions, keeps us working on older userland, etc., etc.

Jeff