Bug 42689

Summary: Broadcom bnx2 firmware missing
Product: Drivers Reporter: Steve (stefan.bosak)
Component: NetworkAssignee: drivers_network (drivers_network)
Status: NEW ---    
Severity: blocking CC: davem, mchan, mconrad, szg00000
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.3.0-rc1+ (affected since 3.2.0-rc4+) Subsystem:
Regression: Yes Bisected commit-id:
Attachments: git bisect, kernel configuration

Description Steve 2012-01-29 22:49:37 UTC
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.
Comment 1 Steve 2012-01-29 22:53:36 UTC
Created attachment 72222 [details]
git bisect, kernel configuration

git bisect, kernel configuration
Comment 2 Steve 2012-06-11 20:10:54 UTC
Could somebody check this, please ?

Thank you for your time.
Comment 3 Steve 2012-06-11 20:12:12 UTC
No change, in kernels 3.3.0-rc1+ -  3.5-rc2.
Comment 4 Maxim Kammerer 2012-07-25 01:12:19 UTC
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.
Comment 5 Michael Chan 2012-07-25 01:15:38 UTC
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.
Comment 6 Maxim Kammerer 2012-07-25 01:42:14 UTC
So perhaps the unused firmware above should be removed?
Comment 7 mconrad 2013-12-16 23:37:02 UTC
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.