Bug 1378966

Summary: b43 module fails to load
Product: [Fedora] Fedora Reporter: monochromec <monochromec>
Component: kernelAssignee: Kernel Maintainer List <kernel-maint>
Status: CLOSED INSUFFICIENT_DATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 24CC: gansalmon, ichavero, itamar, jonathan, kernel-maint, madhu.chinakonda, mchehab
Target Milestone: ---Flags: jforbes: needinfo?
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-04-28 17:27:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description monochromec 2016-09-23 17:03:16 UTC
Description of problem:

b43 module fails to load on kernel version 4.7.4-200 with the following error 
message:

Broadcom 43xx driver loaded [ Features: PNLS ]
[    3.757838] b43 ssb0:0: Direct firmware load for b43/lp0initvals15.fw failed with error -2
[    3.758038] b43 ssb0:0: Direct firmware load for b43-open/ucode15.fw failed with error -2
[    3.758194] b43 ssb0:0: Direct firmware load for b43-open/ucode15.fw failed with error -2
[    3.759413] b43-phy0 ERROR: Firmware file "b43/lp0initvals15.fw" not found
[    3.759508] b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
[    3.759610] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

Version-Release number of selected component (if applicable):

4.7.4-200


How reproducible:

Reboot and observe kernel messages.

Steps to Reproduce:
1.
2.
3.

Actual results:

Cf. above.

Expected results:

b43 loading correctly.

Additional info:

The correct firmware has been installed of course as this doesn't happen on kernels 4.6.7-300 and 4.7.2-201. Due to the nature of the bug, I suspect a kernel-internal race condition (?).

Comment 1 monochromec 2016-09-23 17:04:08 UTC
Let me know if you need additional information.

Comment 2 monochromec 2016-10-06 04:27:07 UTC
Found the root cause. As suspected, it's somewhat of a timing problem. :-)

When constructing the corresponding initramfs, dracut queries the module via modinfo -F for firmware as required by the module. B43 only reports a small, generic set of files due to the b43-fwcutter issue, so some firmware files 
are subsequently missing from the initramfs image. This is the issue.

Workaround: defer firmware loading until the real FS is mounted via eliminating /usr/lib/firmware/b43 from the initramfs image (this is what the previous kernel initramfs does as outlined above). 

Brutal hack: "modprobe -r b43; modprobe b43" in rc.local and enabling the systemd.rc-local service (as the root FS is mounted at that stage).

Maybe upstream could look at option #1?

Comment 3 Justin M. Forbes 2017-04-11 15:02:12 UTC
*********** MASS BUG UPDATE **************

We apologize for the inconvenience.  There are a large number of bugs to go through and several of them have gone stale.  Due to this, we are doing a mass bug update across all of the Fedora 24 kernel bugs.

Fedora 25 has now been rebased to 4.10.9-100.fc24.  Please test this kernel update (or newer) and let us know if you issue has been resolved or if it is still present with the newer kernel.

If you have moved on to Fedora 26, and are still experiencing this issue, please change the version to Fedora 26.

If you experience different issues, please open a new bug report for those.

Comment 4 Justin M. Forbes 2017-04-28 17:27:00 UTC
*********** MASS BUG UPDATE **************
This bug is being closed with INSUFFICIENT_DATA as there has not been a response in 2 weeks. If you are still experiencing this issue, please reopen and attach the 
relevant data from the latest kernel you are running and any data that might have been requested previously.