Re: putting future iwlwifi firmware into intel/ ?

Mario Limonciello
2024-04-17T13:58:21Z

On 4/17/24 07:45, Johannes Berg wrote:
> On Wed, 2024-04-17 at 07:42 -0500, Mario Limonciello wrote:
>>
>> On 4/17/24 07:39, Johannes Berg wrote:
>>> On Wed, 2024-04-17 at 07:31 -0500, Mario Limonciello wrote:
>>>>
>>>> On 4/17/24 06:18, Johannes Berg wrote:
>>>>> Hi,
>>>>>
>>>>> Since I was just looking at some firmware related thing (files for the
>>>>> hardware that might be shared between Intel BT and WiFi), I noticed that
>>>>> just over 30% of the files/dirs in the top-level firmware tree are
>>>>> iwlwifi-* files.
>>>>>
>>>>> While we can't move the files that older drivers might consume, we could
>>>>> e.g. change the driver to look up future versions/future hardware under
>>>>> intel/ instead? Would that be worth doing?
>>>>>
>>>>> johannes
>>>>>
>>>>
>>>> How about moving them all now and then creating compat symlinks for
>>>> older kernels at linux-firmware 'make install' time?
>>>>
>>>
>>> Didn't realize there even was a 'make install' time :-)
>>>
>>> But then I guess it'd be simpler in the driver since we could just
>>> unconditionally add the intel/ prefix to the request_firmware call.
>>>
>>> johannes
>>
>> Do both. All the stuff already there add the compat symlinks in linux
>> firmware so that current and older kernels work with older hardware.
>>
>> Any "new firmware" only put in the new path, and add commits to the
>> kernel to look for "all" firmware in the new path.
>>
>> Should hopefully cover everything without too much pain then.
>
> Yeah, I guess. Though not actually sure, do we need to support new
> kernel + old firmware install?
>
> johannes

I'd say you should. Here's a few examples of why:

1) Kernel documentation says so. See
https://github.com/torvalds/linux/blob/master/Documentation/driver-api/firmware/firmware-usage-guidelines.rst

2) Let's say you change this in latest linux-firmware and kernel 6.10
but don't do a symlink. A user upgrades to 6.10 and latest
linux-firmware but finds a regression. They're asked to come bisect it,
but their kernel 6.9 can no longer work with wifi due to "missing"
firmware. The bisect gets WAY more painful.

3) Some distros do "HWE" kernels (for example Ubuntu). This means they
could do a HWE-6.10 or HWE-6.11 but expect that the exact same
linux-firmware package works on all of them. They could uprev their
linux-firmware to the one matching this change but then their "LTS"
kernel stops working.

So yes; do the symlinks when you move directories. It's one line in
WHENCE per file that you want a symlink.