Re: [PATCH] firmware: Allow release-specific firmware dir

Marcel Holtmann
2008-09-11T07:44:17Z

Hi Dave,

> > It's definitely not something we should be doing upstream though.
>
> So you think it's ok that every Debian user has to learn this
> magic incantation just to use current kernels?
>
> I don't think it's nice to break things like this on people,
> especially such a large group. Getting this stuff to work is hard
> enough, and we're just putting yet another barrier into the situation
> and that can only mean less testers and contributors.
>
> I do know several people who aren't testing and contributing because
> the whole firmware shakeup is so bolixed and they really are exasperated
> after spending hours trying to get it to work.

it is that the Debian maintainer screwed this up. Upstream never
promoted kernel versioned directories for the firmware. I had a long
discussion with Dave about it at OLS and using the kernel version is
just plain wrong. The driver maintainers should version the firmware if
they break it in an API incompatible way.

To shed some light into the problem with Debian/Ubuntu. They install the
firmware in /lib/firmware/`uname -r`/ and everytime they bump their ABI
number, they have to install all the firmware again. This is just
braindead. Their udev script actually checks /lib/firmware first and
then the kernel versioned directory. So that is just fine.

Problem comes when installing let say 2.6.27 since then the firmware
will be looked up in /lib/firmware/ and /lib/firmware/2.6.27/ and
actually it will not be found. Since it is in /lib/firmware/2.6.26-xx/
or something similar.

So having the kernel install everything in /lib/firmware works just fine
with every distro. However looking for firmware that is not shipped with
the kernel, we have a problem since Debian/Ubuntu just not installs it
in the right directory. And there is nothing the kernel can do about it
since it will not touch firmware it doesn't ship. The distro has to fix
their firmware or the users have to place a copy in /lib/firmware/ where
it actually should have been in the first place.

Regards

Marcel