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

Frans Pop
2008-07-15T19:13:54Z

On Tuesday 15 July 2008, David Woodhouse wrote:
> On Tue, 2008-07-15 at 15:05 -0300, Henrique de Moraes Holschuh wrote:
> > I believe I read in the previous thread that some distros are already
> > using /lib/firmware/<kernel version>/.
> >
> > There was also the suggestion of moving the entire set of
> > kernel-packaged firmware to /lib/modules/<kernel version>/firmware,
> > probably while keeping /lib/firmware as a second place to look for
> > firmware so that we don't hose any system.
>
> You can do that right now; I expect Ubuntu will, since their userspace
> already looks like that. You just need to set $(INSTALL_FW_PATH) when
> you install the firmware (or modules).

With the disclaimer that I really haven't researched this all that much I
think we'll end up finding that a multi-level model is needed.

Something like:
- /lib/firmware: intended for externally provided firmware and local
overrides; try to load from there first (version checks may fail)
- /lib/modules/firmware: not sure if this level is necessary, but
could be useful for e.g. firmware for out-of-tree drivers
- /lib/modules/$kver/firmware or
/lib/modules/$kver/$modulepath: firmware built (and possibly packaged
together with the kernel

Some scheme like this would introduce at least some sanity when it comes
to keeping control of what is installed and provided (and may therefore
be removed) by what and to avoid the question "how the hell did that file
get there and do I still actually need it with my current kernels?".

It sounds to me like $(INSTALL_FW_PATH) is a good start, but maybe even
too flexible as it does not define a standard: it allows user spaces of
different distros to diverge which at some point will create its own
nightmares.
It's also not flexible enough as it only supports a single location for
firmware while clearly there can be different sources of firmware.

Cheers,
FJP