next-20210302 - build issue with linux-firmware and rtl_nic/ firmware.

From: Valdis Klētnieks
Date: Wed Mar 03 2021 - 07:10:48 EST


So my kernel build died..

UPD drivers/base/firmware_loader/builtin/rtl_nic/rtl8106e-1.fw.gen.S
make[4]: *** No rule to make target '/lib/firmware/rtl_nic/rtl8106e-1.fw', needed by 'drivers/base/firmware_loader/builtin/rtl_nic/rtl8106e-1.fw.gen.o'. Stop.
make[3]: *** [scripts/Makefile.build:514: drivers/base/firmware_loader/builtin] Error 2

I tracked it down to a linux-firmware update that shipped everything with .xz compression:

% rpm2cpio linux-firmware-20201218-116.fc34.noarch.rpm | cpio -itv | grep 8106e-1
-rw-r--r-- 1 root root 1856 Dec 19 04:43 ./usr/lib/firmware/rtl_nic/rtl8106e-1.fw
631034 blocks
% rpm2cpio linux-firmware-20210208-117.fc34.noarch.rpm | cpio -itv| grep 8106e-1
-rw-r--r-- 1 root root 848 Feb 8 16:38 ./usr/lib/firmware/rtl_nic/rtl8106e-1.fw.xz
340217 blocks

and my .config shows it's self-inflicted (no, I don't remember why it's in there):

# Firmware loader
CONFIG_EXTRA_FIRMWARE="rtl_nic/rtl8106e-1.fw"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"

But then I take a closer look at drivers/net/ethernet/realtek/r8169_main.c
#define FIRMWARE_8168D_1 "rtl_nic/rtl8168d-1.fw"
#define FIRMWARE_8168D_2 "rtl_nic/rtl8168d-2.fw"
#define FIRMWARE_8168E_1 "rtl_nic/rtl8168e-1.fw"

So now I'm mystified how this compressing all the firmware files is supposed to work...