Firmware image missing in kernel tree can be found here: git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git Current mainline kernel sources outputs: /usr/src/linux-3-git/drivers/net/ethernet/broadcom/bnx2.c: #define DRV_MODULE_NAME "bnx2" #define DRV_MODULE_VERSION "2.2.1" #define DRV_MODULE_RELDATE "Dec 18, 2011" #define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-6.2.3.fw" // missing #define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-6.0.15.fw" #define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-6.2.1b.fw" // missing #define FW_RV2P_FILE_09_Ax "bnx2/bnx2-rv2p-09ax-6.0.17.fw" #define FW_RV2P_FILE_09 "bnx2/bnx2-rv2p-09-6.0.17.fw" /usr/src/linux-3-git/firmware/Makefile: fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ bnx2/bnx2-rv2p-09-6.0.17.fw \ bnx2/bnx2-rv2p-09ax-6.0.17.fw \ bnx2/bnx2-mips-06-6.2.1.fw \ bnx2/bnx2-rv2p-06-6.0.15.fw ls -l /usr/src/linux-3-git/firmware/bnx2/ | awk '{print $9}': bnx2-mips-06-6.2.1.fw.ihex bnx2-mips-09-6.2.1a.fw.ihex bnx2-rv2p-06-6.0.15.fw.ihex bnx2-rv2p-09-6.0.17.fw.ihex bnx2-rv2p-09ax-6.0.17.fw.ihex Attachment contains complete git bisect trace, kernel configuration. Please fix & verify this issue in mainline. Thank you for your time.
Created attachment 72222 [details] git bisect, kernel configuration git bisect, kernel configuration
Could somebody check this, please ? Thank you for your time.
No change, in kernels 3.3.0-rc1+ - 3.5-rc2.
This issue should be simple to fix, since the relevant firmware is available in linux-firmware (albeit in binary form). Also, bug #42756 is probably related.
The kernel policy is that firmware should no longer be added to the kernel tree. Users should download the linux-firmware tree and copy all firmware files to /lib/firmware.
So perhaps the unused firmware above should be removed?
This has just bitten me. (Custom linux distro, using CONFIG_FIRMWARE_IN_KERNEL under the assumption it would pull in any needed firmware files, upgraded kernel, and lost ethernet access because bnx2 changed from a module whose firmware was included to one that isn't included) I've read the rationale for using /lib/firmware, but I can't afford to add 57MB to my initrd. I want a way to include only the firmware of the drivers I'm actually using, and enumerating them in EXTRA_FIRMWARE is not a proper solution, as it would require me to research and update that line each time I enable new modules. I really think there should be some way to preserve the old behavior of getting the firmware you need when you select CONFIG_FIRMWARE_IN_KERNEL.