Bug 1572349

Summary: Broadcom 4312 doesn't work with 4.17 kernels
Product: [Fedora] Fedora Reporter: Bruno Wolff III <bruno>
Component: kernelAssignee: Kernel Maintainer List <kernel-maint>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: airlied, bruno, bskeggs, eb30750, ewk, fedora-kernel-wireless-b43, gabriel, giuseppe.catastini, hdegoede, ichavero, ioan.camil.bancioiu, itamar, jarodwilson, jcline, jeff.backus, jforbes, jglisse, john.j5live, jonathan, josef, jwmitche, kernel-maint, larry.finger, linville, massi.ergosum, mchehab, mjg59, red, steved, yulinux
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-09-14 01:22:34 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1489998    
Attachments:
Description Flags
journalctl output from a 4.17 boot
none
Configure file used for both builds
none
Config file used to build from bc2dbc5420e82560e650f8531ceca597441ca171
none
Wifi output comparing kernel 4.16.12.fc27 to 4.18.19.fc27 none

Description Bruno Wolff III 2018-04-26 19:01:08 UTC
User-Agent:       
Build Identifier: 

When booting with 4.17 kernels the wireless device doesn't seem to be available. When booting with a 4.16 kernel things work as expected. Last tested with kernel-4.17.0-0.rc2.git1.2.fc29.i686.
lspci output:
0c:00.0 Network controller: Broadcom Limited BCM4312 802.11b/g LP-PHY (rev 01)
	Subsystem: Dell Wireless 1397 WLAN Mini-Card
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at f69fc000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [58] Vendor Specific Information: Len=78 <?>
	Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [d0] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [13c] Virtual Channel
	Capabilities: [160] Device Serial Number 73-21-a1-ff-ff-44-70-f1
	Capabilities: [16c] Power Budgeting <?>
	Kernel driver in use: b43-pci-bridge
	Kernel modules: ssb


Reproducible: Always

Comment 1 Bruno Wolff III 2018-04-26 19:11:53 UTC
Created attachment 1427381 [details]
journalctl output from a 4.17 boot

Comment 2 Larry Finger 2018-04-26 21:59:25 UTC
I do not have a BCM4312, but I have a BCM4306 and a BCM4318. Both work on Ubuntu with 4.17.0-rc1. I don't think there were any changes between rc1 and rc2, but I'm building the latter and will report back if -rc2 does break b43.

Have you checked to see if rfkill is blocking wifi? See if 'rfkill list' shows anything blocked.

Comment 3 Larry Finger 2018-04-27 02:48:16 UTC
When I built 4.17-rc2, it did not work here either. I have started a bisection to locate the bad commit. Unfortunately, the machine in questi0on is a PowerBook G4, thus it will take a while even though there are only 8 builds needed. I will report the bad commit, and I hope a fix.

Comment 4 Bruno Wolff III 2018-04-27 15:56:06 UTC
I'm pretty sure it didn't work on at least one other 4.17 kernel before rc2. I don't have it with me and can't test 4.17 kernels until I get home. I can start testing Linus' kernels over the weekend, but it will go slowly. I wasn't sure if a driver got dropped or something that might have been Fedora related.

Comment 5 Larry Finger 2018-04-27 16:27:13 UTC
My kernels are all from Linus's source. I was not looking forward to that bisection, and retested 4.17-rc2. This time it worked. My only conclusion is that I did not wait long enough for NetworkManager to start the interface.

In short, there does not appear to be anything wrong with kernels from mainline. The driver has certainly not been dropped. I cannot say anything about Fedora's setup.

Comment 6 Bruno Wolff III 2018-04-28 10:37:35 UTC
I tried a Linus 4.17-rc2+ kernel and am seeing the same problem. rfkill list shows no blocks. ip link shows wlan0 as existing. But no APs show up when using the GUI wireless connection interface. So it looks like I'll need to do a bisect.

Comment 7 Bruno Wolff III 2018-04-30 11:47:08 UTC
I'm only going to get two or three builds a day. I'm going to include the bisect log below, but there are probably too many steps left to eyeball the commits. But if someone else starts a bisect of their own it will give them a starting point.
git bisect start
# bad: [0644f186fc9d77bb5bd198369e59fb28927a3692] Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
git bisect bad 0644f186fc9d77bb5bd198369e59fb28927a3692
# good: [0adb32858b0bddf4ada5f364a84ed60b196dbcda] Linux 4.16
git bisect good 0adb32858b0bddf4ada5f364a84ed60b196dbcda
# bad: [9abf8acea297b4c65f5fa3206e2b8e468e730e84] Merge tag 'tty-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
git bisect bad 9abf8acea297b4c65f5fa3206e2b8e468e730e84
# good: [bb2407a7219760926760f0448fddf00d625e5aec] Merge tag 'docs-4.17' of git://git.lwn.net/linux
git bisect good bb2407a7219760926760f0448fddf00d625e5aec
# bad: [093ba72914b696521e4885756a68a3332782c8de] inet: frags: add a pointer to struct netns_frags
git bisect bad 093ba72914b696521e4885756a68a3332782c8de
# good: [7083a45ad0df78546b3a735f0090b075efdf44e3] ibmvnic: Fix recent errata commit
git bisect good 7083a45ad0df78546b3a735f0090b075efdf44e3

Comment 8 Bruno Wolff III 2018-05-02 14:50:17 UTC
I'm including an updated bisect log. I'm down to about 36 possible commits. Tonight I'm going to see if I can get away without make clean to finish things off.
git bisect start
# bad: [0644f186fc9d77bb5bd198369e59fb28927a3692] Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
git bisect bad 0644f186fc9d77bb5bd198369e59fb28927a3692
# good: [0adb32858b0bddf4ada5f364a84ed60b196dbcda] Linux 4.16
git bisect good 0adb32858b0bddf4ada5f364a84ed60b196dbcda
# bad: [9abf8acea297b4c65f5fa3206e2b8e468e730e84] Merge tag 'tty-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
git bisect bad 9abf8acea297b4c65f5fa3206e2b8e468e730e84
# good: [bb2407a7219760926760f0448fddf00d625e5aec] Merge tag 'docs-4.17' of git://git.lwn.net/linux
git bisect good bb2407a7219760926760f0448fddf00d625e5aec
# bad: [093ba72914b696521e4885756a68a3332782c8de] inet: frags: add a pointer to struct netns_frags
git bisect bad 093ba72914b696521e4885756a68a3332782c8de
# good: [7083a45ad0df78546b3a735f0090b075efdf44e3] ibmvnic: Fix recent errata commit
git bisect good 7083a45ad0df78546b3a735f0090b075efdf44e3
# bad: [bc67a0daf8f3bc6fa8fcb68090f3c444de7f951c] ipmr: Make vif fib notifiers common
git bisect bad bc67a0daf8f3bc6fa8fcb68090f3c444de7f951c
# good: [872619d8cf810c17279335ef531a2a34f3b4e589] tipc: step sk->sk_drops when rcv buffer is full
git bisect good 872619d8cf810c17279335ef531a2a34f3b4e589
# good: [da18ab32d78b6414267d3e5c8c9b5ab34a6d3321] tipc: tipc_disc_addr_trial_msg() can be static
git bisect good da18ab32d78b6414267d3e5c8c9b5ab34a6d3321
# skip: [716b840c76417e608af3a8d354028604045ec46f] rsi: handle BT traffic in driver
git bisect skip 716b840c76417e608af3a8d354028604045ec46f
# bad: [070f2d7e264acd6316fc24092b7f51a18c75ac9c] net: Drop NETDEV_UNREGISTER_FINAL
git bisect bad 070f2d7e264acd6316fc24092b7f51a18c75ac9c

Comment 9 Bruno Wolff III 2018-05-04 18:46:37 UTC
I've been slowed down by a lot of commits not building. I get errors like:
ERROR: "__udivdi3" [drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko] undefined!
I finally got another build completed, but can't test it remotely. Most likely the problem I'm looking for will be on the broken build side of this commit. 
Is there a config setting that I might use to avoid the building problem while still letting me test for the problem I'm looking for?

My current git bisect log is:
git bisect start
# bad: [0644f186fc9d77bb5bd198369e59fb28927a3692] Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
git bisect bad 0644f186fc9d77bb5bd198369e59fb28927a3692
# good: [0adb32858b0bddf4ada5f364a84ed60b196dbcda] Linux 4.16
git bisect good 0adb32858b0bddf4ada5f364a84ed60b196dbcda
# bad: [9abf8acea297b4c65f5fa3206e2b8e468e730e84] Merge tag 'tty-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
git bisect bad 9abf8acea297b4c65f5fa3206e2b8e468e730e84
# good: [bb2407a7219760926760f0448fddf00d625e5aec] Merge tag 'docs-4.17' of git://git.lwn.net/linux
git bisect good bb2407a7219760926760f0448fddf00d625e5aec
# bad: [093ba72914b696521e4885756a68a3332782c8de] inet: frags: add a pointer to struct netns_frags
git bisect bad 093ba72914b696521e4885756a68a3332782c8de
# good: [7083a45ad0df78546b3a735f0090b075efdf44e3] ibmvnic: Fix recent errata commit
git bisect good 7083a45ad0df78546b3a735f0090b075efdf44e3
# bad: [bc67a0daf8f3bc6fa8fcb68090f3c444de7f951c] ipmr: Make vif fib notifiers common
git bisect bad bc67a0daf8f3bc6fa8fcb68090f3c444de7f951c
# good: [872619d8cf810c17279335ef531a2a34f3b4e589] tipc: step sk->sk_drops when rcv buffer is full
git bisect good 872619d8cf810c17279335ef531a2a34f3b4e589
# good: [da18ab32d78b6414267d3e5c8c9b5ab34a6d3321] tipc: tipc_disc_addr_trial_msg() can be static
git bisect good da18ab32d78b6414267d3e5c8c9b5ab34a6d3321
# skip: [716b840c76417e608af3a8d354028604045ec46f] rsi: handle BT traffic in driver
git bisect skip 716b840c76417e608af3a8d354028604045ec46f
# bad: [070f2d7e264acd6316fc24092b7f51a18c75ac9c] net: Drop NETDEV_UNREGISTER_FINAL
git bisect bad 070f2d7e264acd6316fc24092b7f51a18c75ac9c
# skip: [09e93f28aa8d37a07d0c2ad742d085a21d845cda] mt76x2: remove warnings in mt76x2_mac_write_txwi()
git bisect skip 09e93f28aa8d37a07d0c2ad742d085a21d845cda
# skip: [f63b4c971f5fb1310f145785c3b2b77651ef129e] wl1251: Update wl->nvs_len after wl->nvs is valid
git bisect skip f63b4c971f5fb1310f145785c3b2b77651ef129e
# skip: [4b5adc736828dc25ca33e263ad8c0b9dcd3bf325] brcmfmac: move allocation of control rx buffer to brcmf_sdio_bus_preinit()
git bisect skip 4b5adc736828dc25ca33e263ad8c0b9dcd3bf325
# bad: [c2b72e8e10abfb54099828f8fdc68b8b0174e4e4] fsl/fman: remove unnecessary set_dma_ops() call and HAS_DMA dependency
git bisect bad c2b72e8e10abfb54099828f8fdc68b8b0174e4e4
# skip: [882164a4a928bcaa53280940436ca476e6b1db8e] ssb: Prevent build of PCI host features in module
git bisect skip 882164a4a928bcaa53280940436ca476e6b1db8e
# skip: [8100091d02487ff267af0d410ceb9eefebc8ea03] bcma: Replace mdelay with usleep_range in bcma_pmu_resources_init
git bisect skip 8100091d02487ff267af0d410ceb9eefebc8ea03
# skip: [262f2b53f67936b59cc8dfc6f3899ab8905bf1ed] brcmfmac: call brcmf_attach() just before calling brcmf_bus_started()
git bisect skip 262f2b53f67936b59cc8dfc6f3899ab8905bf1ed
# skip: [6942bdc4bf577e6fedff03111d10763a07622734] rtlwifi: enable mac80211 fast-tx support
git bisect skip 6942bdc4bf577e6fedff03111d10763a07622734
# skip: [6942bdc4bf577e6fedff03111d10763a07622734] rtlwifi: enable mac80211 fast-tx support
git bisect skip 6942bdc4bf577e6fedff03111d10763a07622734
# skip: [551e1ef4d29134ff1bb01869d522dbae0438032e] mt76: add mt76_init_stream_cap routine
git bisect skip 551e1ef4d29134ff1bb01869d522dbae0438032e
# skip: [1ca72c3047aa1146fe22b1e79be713ac90572827] rtlwifi: Add Support VHT to spec_ver
git bisect skip 1ca72c3047aa1146fe22b1e79be713ac90572827
# skip: [0542503c4c164c65cd1567b0f2b3f887af6c81eb] brcmfmac: move brcmf_attach() function in core.c
git bisect skip 0542503c4c164c65cd1567b0f2b3f887af6c81eb
# skip: [a24853aab59184ebd19c5e078c7b29e1c316e3a1] ssb: use put_device() if device_register fail
git bisect skip a24853aab59184ebd19c5e078c7b29e1c316e3a1
# skip: [24114a5f9470f75b47bdd6d40f4fc784326a9b58] mt76: initialize available_antennas_{tx,rx} info
git bisect skip 24114a5f9470f75b47bdd6d40f4fc784326a9b58
# skip: [81b813ed2fde96fd28cee477281b724ea4a28dcc] rtlwifi: Add rate section and its related definition and comment
git bisect skip 81b813ed2fde96fd28cee477281b724ea4a28dcc

The built, but untested commit is:
996bfed118748c128ad4b6c05c09fd2f5fdfa1b4 Merge tag 'wireless-drivers-next-for-davem-2018-03-24' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next

Comment 10 Bruno Wolff III 2018-05-05 14:04:11 UTC
I turned off the mlxsw module in .config and I can build commits in the range I was having trouble in before. I have one good test since doing so. Though it is possible that not building that module could suppress the bug I'm looking for. Hopefully I'll be able to finish the bisect this weekend.

Comment 11 Bruno Wolff III 2018-05-06 06:07:19 UTC
The bad commit appears to be:
882164a4a928bcaa53280940436ca476e6b1db8e ssb: Prevent build of PCI host features in module

I'm going to check and see if the problem has been fixed in Linus' tree since I started the bisect. If it hasn't, I'll test reverting the bad commit to see if that will fix things.

Comment 12 Bruno Wolff III 2018-05-06 15:25:20 UTC
The problem appears to still be present in: ee946c36be21dcfe044f1c432cd6c6a33682e244 Merge tag 'platform-drivers-x86-v4.17-2' of git://git.infradead.org/linux-platform-drivers-x86

Comment 13 Bruno Wolff III 2018-05-06 16:57:02 UTC
Reverting 882164a4a928bcaa53280940436ca476e6b1db8e from ee946c36be21dcfe044f1c432cd6c6a33682e244 fixes wireless, so we can be very sure something in 882164a4a928bcaa53280940436ca476e6b1db8e is triggering the problem I am seeing.

Comment 14 Larry Finger 2018-05-06 17:30:49 UTC
This is not a bug, but rather a configuration problem. That commit really did fix a bug, and it needs to be kept. It seems, however, that it did introduce another error.

To help figure out what is wrong, please post the configuration used for a "good" and "bad" kernel.

Comment 15 Bruno Wolff III 2018-05-06 18:16:22 UTC
Created attachment 1432414 [details]
Configure file used for both builds

I used this when I built from ee946c36be21dcfe044f1c432cd6c6a33682e244 with and without 882164a4a928bcaa53280940436ca476e6b1db8e reverted. So it covers both a good and a bad build. The file was touched by the second build, but I wasn't asked any questions, so in theory it shouldn't have been changed.

Comment 16 Larry Finger 2018-05-07 15:04:24 UTC
Your assumption that the configuration file did not change is incorrect. Kmake can silently add or subtract variables. When I took your posted configuration file, copied it ti .config on my system (with commit 882164a4a928 included) and did a 'make oldconfig', the following differences resulted:
--- fedora_config_before      2018-05-06 19:06:25.532129517 -0500
+++ fedora_config_after       2018-05-06 19:13:27.270729563 -0500
@@ -2900,7 +2898,6 @@ CONFIG_B43_BUSES_BCMA_AND_SSB=y
 # CONFIG_B43_BUSES_BCMA is not set
 # CONFIG_B43_BUSES_SSB is not set
 CONFIG_B43_PCI_AUTOSELECT=y
-CONFIG_B43_PCICORE_AUTOSELECT=y
 CONFIG_B43_SDIO=y
 CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
@@ -4279,8 +4275,6 @@ CONFIG_SSB_PCMCIAHOST=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
 # CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_DRIVER_PCICORE=y
 CONFIG_SSB_DRIVER_GPIO=y
 CONFIG_BCMA_POSSIBLE=y
 CONFIG_BCMA=m

The change also affected configuration parameters for B44 and B43LEGACY, but they are not important here. In fact, the removal of SSB_DRIVER_PCICORE is the most important change as it causes driver ssb to ignore the PCI cores of the device, which completely destroys the possibility for b43 to communicate.

I will try to find a proper solution for the faulty commit. In the meantime, change CONFIG_SSB from "m" to "y". That will also restore your system.

Comment 17 Bruno Wolff III 2018-05-07 15:49:41 UTC
I'll test this (CONFIG_SSB=y) with rc4. It should be done by the time I get home. Worst case Fedora can change their config to avoid the problem. I'm still keeping a 4.16 Fedora kernel on the machine, so I don't need something quickly. I just don't want to be locked out of future kernels as that will eventually be a problem.

Comment 18 Bruno Wolff III 2018-05-07 23:27:13 UTC
I tested CONFIG_SSB=y with rc4 and wireless worked normally.

Comment 19 Justin M. Forbes 2018-05-08 12:02:40 UTC
Excellent, thanks for tracking this down, I know it took a while. I will get the change in todays rawhide build.

Comment 20 Larry Finger 2018-05-08 14:44:18 UTC
I think the "final" fix is likely to be

diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig
index 9371651d8017..8e1579fa5fbc 100644
--- a/drivers/ssb/Kconfig
+++ b/drivers/ssb/Kconfig
@@ -117,7 +117,7 @@ config SSB_SERIAL
 
 config SSB_DRIVER_PCICORE_POSSIBLE
        bool
-       depends on SSB_PCIHOST && SSB = y
+       depends on SSB && (PCI = y || PCI = SSB)
        default y
 
 config SSB_DRIVER_PCICORE

In any case, setting CONFIG_SSB=y will work.

My BCM43XX cards are all PCMCIA-based PCI cards and they do not show this problem.

Thanks for your help.

Comment 21 Bruno Wolff III 2018-05-08 17:55:23 UTC
I'll test Larry's fix, building a new kernel during the day. I'll also make sure to test normal Fedora kernels as soon as there is one available.
Your welcome for my testing effort. I really should be doing more work for Fedora.
Thank you for getting fixes upstream and deployed.

Comment 22 Bruno Wolff III 2018-05-08 23:31:48 UTC
I tested Larry's fix with CONFIG_SSB=m and it worked fine.

Comment 23 Bruno Wolff III 2018-05-09 14:29:10 UTC
I wasn't sure about the timing of when the other fix was applied to Fedora's kernel config and was sure kernel-4.17.0-0.rc4.git1.1.fc29 had it and I didn't test it last night. But looking at the Josh's git tree, it looks like it was there. So I'll get the latest rawhide kernel tested tonight.

Comment 24 Bruno Wolff III 2018-05-09 23:28:11 UTC
I ended up testing this with 4.17.0-0.rc4.git1.2.fc29.i686 from the rawhide nodebug repo and it worked fine.
I don't know if you want to wait for Larry's fix to get upstream to close this (in case you want to go back to CONFIg_SSB=m) so I'm going to leave it open.

Comment 26 Bruno Wolff III 2018-05-24 03:05:44 UTC
The commits are in Dave Miller's net tree now. Once I seem them in Linus' tree I'll test building it with CONFIG_SSB=m with an otherwise Fedora config file.

Comment 27 Bruno Wolff III 2018-05-26 05:25:29 UTC
The fix is now in Linus' tree. I'll get a build done overnight to test them.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ebd27d3317c6521a9511f779ea96dc943c4e8003

Comment 28 Bruno Wolff III 2018-05-26 15:03:32 UTC
Created attachment 1441952 [details]
Config file used to build from bc2dbc5420e82560e650f8531ceca597441ca171

I built the latest Linus kernel (bc2dbc5420e82560e650f8531ceca597441ca171) last night using a config file based off of config-4.17.0-0.rc6.git2.1.fc29.i686 with CONFIG_SSB=m and it worked normally.
So you should be able to go back to CONFIG_SSB=m now if you want.

Comment 29 Giuseppe Catastini 2018-07-02 16:45:18 UTC
I've just checked that the bug is still present in last available fc28 kernel, kernel-4.17.3-200.fc28.x86_64

Last available 4.16 kernel instead works great (kernel-4.16.15-300.fc28.x86_64) and lspci provides:
09:00.0 Ethernet controller: Broadcom Limited NetLink BCM5784M Gigabit Ethernet PCIe (rev 10)
0c:00.0 Network controller: Broadcom Limited BCM4312 802.11b/g LP-PHY (rev 01)

I hope this info can be useful.

Comment 30 Bruno Wolff III 2018-07-02 20:23:56 UTC
4.17.0-0.rc7.git1.2.fc29.i686 works for me. After that kernel i386 builds were dropped for a while and recent 4.18 builds have some other problem that I haven't looked at in detail. So I can't tell if the problem was reintroduced after being fixed. Still that would be unusual. In Fedora 29 CONFIG_SSB=Y which hides the problem. I don't know if that got done in Fedora 28. Possibly you are seeing a different problem.

Comment 31 Paul Lambert 2018-07-05 02:25:36 UTC
Kernel 4.17.3-100.fc27.x86_64 breaks Broadcom network 4356 and bluetooth 43142.  

Both Kconfig patches are configured per comment #25

Comment 32 Paul Lambert 2018-07-07 13:35:55 UTC
Installed kernel 4.17.4 no change in wifi, still does not work.  Wifi module does not load due to module verification failure.

The severity of this bug needs to be changed to high.



Jul  7 09:09:27 BRSINC-01Fed kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
Jul  7 09:09:27 BRSINC-01Fed systemd[1]: Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
Jul  7 09:09:27 BRSINC-01Fed kernel: acer_wmi: Acer Laptop ACPI-WMI Extras
Jul  7 09:09:27 BRSINC-01Fed kernel: acer_wmi: Unsupported machine has AMW0_GUID1, unable to load
Jul  7 09:09:27 BRSINC-01Fed kernel: uvcvideo: Found UVC 1.00 device HP TrueVision HD (04f2:b56c)
Jul  7 09:09:27 BRSINC-01Fed kernel: uvcvideo 2-2:1.0: Entity type for entity Extension 4 was not initialized!
Jul  7 09:09:27 BRSINC-01Fed kernel: uvcvideo 2-2:1.0: Entity type for entity Processing 2 was not initialized!
Jul  7 09:09:27 BRSINC-01Fed kernel: uvcvideo 2-2:1.0: Entity type for entity Camera 1 was not initialized!
Jul  7 09:09:27 BRSINC-01Fed kernel: input: HP TrueVision HD: HP TrueVision as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/input/input12
Jul  7 09:09:27 BRSINC-01Fed kernel: usbcore: registered new interface driver uvcvideo
Jul  7 09:09:27 BRSINC-01Fed kernel: USB Video Class driver (1.1.1)
Jul  7 09:09:27 BRSINC-01Fed systemd[1]: Starting Load/Save RF Kill Switch Status...
Jul  7 09:09:27 BRSINC-01Fed kernel: eth0: Broadcom BCM4365 802.11 Hybrid Wireless Controller 6.30.223.271 (r587334)

Comment 33 Larry Finger 2018-07-07 15:10:36 UTC
I do not see any BCM4312 mention in the posted excerpt of the log. The 4365 does  not use b43, which is the basis of this thread. The bug reported and fixed here cannot be causing your problem. Without having the PCI ID for the device, I cannot even tell you what driver is appropriate.

You need to create a new bug. When you do, I suggest that you post the entire output of dmesg, and the output of 'lspci -nn'.

Comment 34 Paul Lambert 2018-07-09 03:36:37 UTC
The bug reported in comment 31 and 32 has been moved to bug 1599138

Comment 35 Camil Bancioiu 2018-08-08 06:19:19 UTC
Broadcom WiFi still broken in 4.7.11, on Fedora 27, for a BCM4322 module in my Dell laptop. Currently using 4.16.16, the last version where WiFi worked.

Comment 36 Davide Repetto 2018-08-23 17:21:47 UTC
bug 1599138 is very much related to this one

Comment 37 J. W. Mitchell 2018-09-25 17:03:51 UTC
I have been having this same issue on my old Dell laptop for quite a while now.  All Fedora kernels 4.17.x and 4.18.x have had problems with the Broadcom BCM4322, and I have had to run a 4.16 kernel to keep my wifi working.  I am running Fedora 28 with the broadcom-wl rpmfusion-nonfree package version 6.30.223.271-6.fc28 installed.  Over the weekend, I spent some time trying to figure out what was going on, and I tried the following to arrive at a solution.

When I run lspci, I see the BCM4322 as follows:

  $ lspci
  [...]
  04:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)
  [...]

  So I then looked at the system logs for both a working 4.16.18 and a non-working 4.18.9 kernel, pulling references to the PCI adapter 04.00.0:

  $ grep '04:00.0' log-4.16.18.txt (journalctl -b 0)
  Sep 22 06:30:31 bear-republic kernel: pci 0000:04:00.0: [14e4:432b] type 00 class 0x028000
  Sep 22 06:30:31 bear-republic kernel: pci 0000:04:00.0: reg 0x10: [mem 0xf8000000-0xf8003fff 64bit]
  Sep 22 06:30:31 bear-republic kernel: pci 0000:04:00.0: enabling Extended Tags
  Sep 22 06:30:31 bear-republic kernel: pci 0000:04:00.0: supports D1 D2
  Sep 22 06:30:31 bear-republic kernel: pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
  Sep 22 06:30:50 bear-republic kernel: wl 0000:04:00.0 wlp4s0: renamed from eth0
  Sep 22 06:30:54 bear-republic NetworkManager[954]: <info>  [1537615854.3421] rfkill0: found WiFi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/ieee80211/phy0/rfkill0) (driver wl)
  Sep 22 06:30:54 bear-republic ModemManager[767]: <info>  Couldn't check support for device at '/sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0': not supported by any plugin

  $ grep '04:00.0' log-4.18.9.txt (journalctl -b 0)
  Sep 23 08:10:17 bear-republic kernel: pci 0000:04:00.0: [14e4:432b] type 00 class 0x028000
  Sep 23 08:10:17 bear-republic kernel: pci 0000:04:00.0: reg 0x10: [mem 0xf8000000-0xf8003fff 64bit]
  Sep 23 08:10:17 bear-republic kernel: pci 0000:04:00.0: enabling Extended Tags
  Sep 23 08:10:17 bear-republic kernel: pci 0000:04:00.0: supports D1 D2
  Sep 23 08:10:17 bear-republic kernel: pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
  Sep 23 08:10:17 bear-republic kernel: ssb: Sonics Silicon Backplane found on PCI device 0000:04:00.0

The first 5 entries are the same in both logs, but line 6 shows output from the wl module in 4.16.18, and line 6 of the 4.18.9 kernel shows output from ssb.  It turns out the the 4.16 kernels were configuring ssb as a module, while the 4.17 and 4.18 kernels are including it directly in the kernel:

  $ grep CONFIG_SSB /boot/config-4.16.18-200.fc28.x86_64
  CONFIG_SSB_POSSIBLE=y
  CONFIG_SSB=m
  CONFIG_SSB_SPROM=y
  CONFIG_SSB_BLOCKIO=y
  CONFIG_SSB_PCIHOST_POSSIBLE=y
  CONFIG_SSB_PCIHOST=y
  CONFIG_SSB_B43_PCI_BRIDGE=y
  CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
  CONFIG_SSB_PCMCIAHOST=y
  CONFIG_SSB_SDIOHOST_POSSIBLE=y
  CONFIG_SSB_SDIOHOST=y
  # CONFIG_SSB_DEBUG is not set
  CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
  CONFIG_SSB_DRIVER_PCICORE=y
  CONFIG_SSB_DRIVER_GPIO=y
  # CONFIG_USB_HCD_SSB is not set

  $ grep CONFIG_SSB /boot/config-4.18.9-200.fc28.x86_64
  CONFIG_SSB_POSSIBLE=y
  CONFIG_SSB=y
  CONFIG_SSB_SPROM=y
  CONFIG_SSB_BLOCKIO=y
  CONFIG_SSB_PCIHOST_POSSIBLE=y
  CONFIG_SSB_PCIHOST=y
  CONFIG_SSB_B43_PCI_BRIDGE=y
  CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
  CONFIG_SSB_PCMCIAHOST=y
  CONFIG_SSB_SDIOHOST_POSSIBLE=y
  CONFIG_SSB_SDIOHOST=y
  # CONFIG_SSB_DEBUG is not set
  CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
  CONFIG_SSB_DRIVER_PCICORE=y
  CONFIG_SSB_DRIVER_GPIO=y
  # CONFIG_USB_HCD_SSB is not set

Line 2 shows the difference:  CONFIG_SSB=m for the 4.16.18 kernel, while CONFIG_SSB=y for 4.18.9 kernel.  So I thought I would build the 4.18.9 kernel with CONFIG_SSB=m and give it a try.

I downloaded the source RPM from koji (kernel-4.18.9-200.fc28.src.rpm) and updated the SOURCE/kernel-[arch].config files with CONFIG_SSB=m, rebuilt the source archive, and used mock to build a new kernel.  After reinstalling the 4.18.9 RPMs and rebooting, I now have wifi working with the latest kernel.

I am not sure if there is a problem with the SSB component that is causing this problem, but when built as a module, it is not loaded when I boot my system, and the wl module works correctly for the BCM4322.  But when SSB is included directly in the kernel, things go bad for the BCM4322 wifi and wl does not work.

Comment 38 Larry Finger 2018-09-26 00:27:47 UTC
The problem is not that ssb is configured with "y" or "m", but that you have both wl and ssb/b43 installed on your computer. Both are configured to respond to the PCI IDs of that BCM4322. The results are not deterministic. Whether it works depends on which device gets control first.

When you generated the new kernel, I suspect that you did not reinstall wl. If you had, you would have seen that having SSB as a module did not make any difference.

I have just tested 4.19.0-rc5 with SSB being configured with y or m. Both worked.

I am not sure why SSB is configured into the kernel with Fedora builds. My thinking is that it should be a module. After all, only a minor fraction of Linux users have this hardware.

This bug should be closed as INVALID, the problem is caused by installing both wl and ssb/b43 without blacklisting one of them.

Comment 39 Paul Lambert 2018-09-26 01:08:05 UTC
Here is the the lsmod output for kerner 4.12.16.fc27.  You can see that both B43 and wl drivers are available.  My system has booted the correct driver "wl" for over 3 years.  There are no blacklist entries in conf file /etc/yum/pluginconf.d/blacklist.conf.  

[root@BRSINC-01Fed Sources]# lsmod | grep b43
b43                   454656  0
bcma                   61440  1 b43
mac80211              892928  1 b43
ssb                    81920  1 b43
cfg80211              737280  3 wl,b43,mac80211
mmc_core              172032  5 b43,sdhci,ssb,sdhci_pci,cqhci

[root@BRSINC-01Fed Sources]# lsmod | grep wl
wl                   6459392  0
cfg80211              737280  3 wl,b43,mac80211


Are you suggesting that I have just been "lucky" for over 3 years that the wl driver was loaded before the b43 driver.  I think not but rather the kernel is bypassing the wl driver due to the error below detailed in dmesg

[  +0.009925] wl: loading out-of-tree module taints kernel.
[  +0.000006] wl: module license 'MIXED/Proprietary' taints kernel.
[  +0.000001] Disabling lock debugging due to kernel taint
[  +0.007829] wl: module verification failed: signature and/or required key missing - tainting kernel

This was reported on 7/7/2018 in comment #32 yet there has been no response regarding this error.  The kernel is loading wl driver but does not use it due to tainting. 

Can someone following this bug confirm this same error?

Comment 40 Larry Finger 2018-09-26 04:25:42 UTC
(In reply to Paul Lambert from comment #39)
> Are you suggesting that I have just been "lucky" for over 3 years that the
> wl driver was loaded before the b43 driver.  I think not but rather the
> kernel is bypassing the wl driver due to the error below detailed in dmesg

With wl, a single driver is loaded upon matching the PCI ID. For ssb/b43, matching the PCI ID caused ssb to load. Then after some decoding of the PCI registers, then b43 was triggered. As long as both wl and ssb are modules, then wl would win. As soon as ssb became part of the kernel, then it got a significant head start and wl lost. It worked based on the exact nature of the specifics of the drivers. I would call that luck.

It is never safe to have two drivers that trigger on the same PCI ID without blacklisting the one you do not want.

Comment 41 Davide Repetto 2018-09-26 09:22:57 UTC
> It is never safe to have two drivers that trigger on the same PCI ID without
> blacklisting the one you do not want.

The problem is that as long as ssb is compiled in, there is no way to blacklist it, or to unload it and it will always take over.
That solved by rebuilding the kernel with ssb as a module (as it should be, anyway).

I've been actively looking for ways to disable/blacklist the built in ssb, but I couldn't find one.

Comment 42 Camil Bancioiu 2018-09-26 10:19:09 UTC
(In reply to Larry Finger from comment #40)
> (In reply to Paul Lambert from comment #39)
> > Are you suggesting that I have just been "lucky" for over 3 years that the
> > wl driver was loaded before the b43 driver.  I think not but rather the
> > kernel is bypassing the wl driver due to the error below detailed in dmesg
> 
> With wl, a single driver is loaded upon matching the PCI ID. For ssb/b43,
> matching the PCI ID caused ssb to load. Then after some decoding of the PCI
> registers, then b43 was triggered. As long as both wl and ssb are modules,
> then wl would win. As soon as ssb became part of the kernel, then it got a
> significant head start and wl lost. It worked based on the exact nature of
> the specifics of the drivers. I would call that luck.
> 
> It is never safe to have two drivers that trigger on the same PCI ID without
> blacklisting the one you do not want.

Well, since `ssb` and `b43` can't be blacklisted, I decided to leave `wl` behind and switch to `b43`. It worked and here's how I did it.

When removing `wl` and enabling `b43`, there's output in `dmesg` which complains about missing firmware. As a solution, I installed `b43-fwcutter` from the repository, then installed the Broadcom firmware as described [here](http://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#other_distros). Then I made sure that `b43` was NOT blacklisted anywhere and I removed the package `broadcom-wl` completely (`kmods-wl` too).

With the firmware files in place and `wl` out of the way, the `b43` driver loaded properly with `modprobe b43` and the WiFi worked. Because `wl` doesn't exist anymore on my system, there is no more conflict at boot time and `b43` loads everytime.

Comment 43 Larry Finger 2018-09-26 15:06:04 UTC
To me, that is the "correct" solution. As I see it, wl should only be used for those devices that are not handled by either b43, bcmsmac, or bcmfmac.

The firmware is not included in Linux because Broadcom has refused to allow redistribution of said firmware. The only way for a user to get it is to extract it from one of the drivers that Broadcom was forced to publish after they were caught in a GPL violation. Program fwcutter is our code that extracts the individual firmware pieces from their binary blob.

Comment 44 Davide Repetto 2018-09-26 17:35:15 UTC
(In reply to Larry Finger from comment #43)
> To me, that is the "correct" solution. As I see it, wl should only be used
> for those devices that are not handled by either b43, bcmsmac, or bcmfmac.

None of the b43, bcmsmac, or bcmfmac work for macbooks 4.1. I've tried them all.
So, on those machines, disabling the ssb at boot is paramount to a working wifi.
It's either a custom kernel or one that somehow allows to disable the ssb.

Imho, the current situation with ssb (compiled in and always on) is sub optimal because it breaks a years long, perfectly legitimate use case.

The kernel has a mantra of never-ever breaking existing use-cases. I believe our builds should strive in that direction too. Unless, of course, there are compelling reasons not to.

Comment 45 Larry Finger 2018-09-26 18:12:30 UTC
I agree, but it is not the kernel that is breaking things here. It is the configuration that Fedora is using. There are no reasons that I know about that force "CONFIG_SSB = y". There was a bug introduced by the ARM people that forced them to briefly force that condition, but it was fixed. Perhaps the Fedora configuration got changed at that time, but never changed back.

I am not surprised that your macbook needed to use wl. Apple has frequently used hardware that was unlike anything used by other vendors. Without you posting a PCI ID for that device, I could not comment further. As I said, wl should be the last resort, but that is the beauty of Linux. You can do what you want. Only the bug in the Fedora configuration got in the way.

Comment 46 Justin M. Forbes 2018-09-26 18:49:52 UTC
(In reply to Larry Finger from comment #45)
> I agree, but it is not the kernel that is breaking things here. It is the
> configuration that Fedora is using. There are no reasons that I know about
> that force "CONFIG_SSB = y". There was a bug introduced by the ARM people
> that forced them to briefly force that condition, but it was fixed. Perhaps
> the Fedora configuration got changed at that time, but never changed back.
> 
> I am not surprised that your macbook needed to use wl. Apple has frequently
> used hardware that was unlike anything used by other vendors. Without you
> posting a PCI ID for that device, I could not comment further. As I said, wl
> should be the last resort, but that is the beauty of Linux. You can do what
> you want. Only the bug in the Fedora configuration got in the way.

Umm, no the change was a direct result of the comments in this bug, you might also want to look back at your comment #20 on May 8 (the day that this was changed):

> I think the "final" fix is likely to be
> 
> diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig
> index 9371651d8017..8e1579fa5fbc 100644
> --- a/drivers/ssb/Kconfig
> +++ b/drivers/ssb/Kconfig
> @@ -117,7 +117,7 @@ config SSB_SERIAL
>  
>  config SSB_DRIVER_PCICORE_POSSIBLE
>         bool
> -       depends on SSB_PCIHOST && SSB = y
> +       depends on SSB && (PCI = y || PCI = SSB)
>         default y
>  
>  config SSB_DRIVER_PCICORE
> 
> In any case, setting CONFIG_SSB=y will work.


Anyway, your patch made it unnecessary, but it had already been changed, and I didn't see a need to change it back at the time.  If it is causing a problem now, it can certainly be changed back.

Comment 47 Jeremy Cline 2018-09-26 18:58:07 UTC
*** Bug 1599138 has been marked as a duplicate of this bug. ***

Comment 48 Davide Repetto 2018-09-27 09:34:30 UTC
(In reply to Larry Finger from comment #45)
> I am not surprised that your macbook needed to use wl. Apple has frequently
> used hardware that was unlike anything used by other vendors. Without you
> posting a PCI ID for that device, I could not comment further. As I said, wl
> should be the last resort, but that is the beauty of Linux. You can do what
> you want. Only the bug in the Fedora configuration got in the way.

You can find that info (and a bit more) going on from comment 14 on Bug 1599138, which Jeremy Cline just marked as a duplicate of this one.

Here's a direct link to that comment:
https://bugzilla.redhat.com/show_bug.cgi?id=1599138#c15



(In reply to Justin M. Forbes from comment #46)
> If it is causing a problem now, it can certainly be changed back.

Yeah, that would be useful for a couple mac models and possibly for some other strange broadcom configs.

Comment 49 Paul Lambert 2018-09-27 17:29:21 UTC
Created attachment 1487829 [details]
Wifi output comparing kernel 4.16.12.fc27 to 4.18.19.fc27

My Broadcom wifi device is 4365 and uses on the WL driver.  Any Fedora kernel starting with 4.17.xx does not recognize my wifi device.  When I bring up settings and select wifi there is none.  

I have extracted the pertinent setting data for both kernel 4.16.12 where wifi works and kernel 4.18.19 where is does not.

The main difference I see is that in kernel 4.18.19 the bcma driver is loaded along with bcm43xx-fwcutter.  This is does not work with WL.  Additionally, the output from dmesg shows

[  +0.047087] bcma: bus0: Found chip with id 43142, rev 0x01 and package 0x08
[  +0.000049] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x28, class 0x0)
[  +0.000043] bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x21, class 0x0)
[  +0.000058] bcma: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x16, class 0x0)
[  +0.000068] bcma: bus0: Core 3 found: UNKNOWN (manuf 0x43B, id 0x368, rev 0x00, class 0x0)
[  +0.011198] bcma: bus0: Bus registered

The bcma driver should not be loading for wl Broadcom wifi.  Kernel 4.17 and later are not allowing the wl driver to load because as soon as the loader sees 43142 it assumes that it is a b43 device.  I believe this is the root problem as the "Core 3" device is showing an unknown type when in fact is most likely my wl wifi device.  

from kernel 4.12.16.fc27
02:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43142 802.11b/g/n [14e4:4365] (rev 01)
	Subsystem: Hewlett-Packard Company Device [103c:804a]
	Flags: bus master, fast devsel, latency 0, IRQ 39
	Memory at f0b00000 (64-bit, non-prefetchable) [size=32K]
	Capabilities: <access denied>
	Kernel driver in use: wl
	Kernel modules: wl

The kernel loading logic for Broadcom needs to essentially duplicate the established complex table for Broadcom wifi devices.  Or, is there a simpler way by editing a .conf driver boot file?

Comment 50 Larry Finger 2018-09-27 18:35:49 UTC
Is bcma a module or is it built into the kernel? You could find that with "lsmod" or by checking CONFIG_BCMA in the kernel configuration file. That may be in /proc/config.gz os as a conf* file in /boot. I do not run Fedora, thus I do not know which method you need to use.

If bcma is a module, the correct way is to blacklist it in some file in /etc/modprobe.d/. If it is built into the kernel, then the Fedora kernel configuration needs to be changed. As we have no idea what the wl driver is doing, then we cannot duplicate the detection mechanism.

Comment 51 Paul Lambert 2018-09-27 20:14:31 UTC
SOLVED: 

BCMA is a module.  The Fedora kernel configuration module file is config-4.18.9-100.fc27.x86_64
located in /boot. 

The solution is to blacklist the bcma module by adding a file to the directory /etc/modprobe.d/ that contains "blacklist bcma." 

I first identified the CONFIG_SSB entry in the 4.12.16.fc27.  This value was CONFIG_SSB=m
I then set this entry from y to m in the kernel configuration file for 4.18.9.fc27.  This made no difference as the wl wifi was still not recognized.  

Next I blacklisted the bcma driver and the wl wifi device was recognized and successfully connected.
Finally, I re-edited the kernel configuration file for 4.18.9.fc27 and changed CONFIG_SSB=m back to CONFIG_SSB=y and rebooted.  The wl wifi device was recognized and successfully connected.

The short story is to know your wifi hardware and blacklist the drivers that will NOT work.  
Use lspci -nn -d: | grep Broadcom and find the PCI ID [14e4:4365] (rev 01).  Then find one of the many Broadcom PCI.ID lookup tables to find which driver are used for this PIC ID (4365).  Run lsmod | grep -e b43 -e bcm.  Then blacklist the others such as bcma, b43, bcmfmac and bcmsmac that are returned by the lsmod command.

Comment 52 Larry Finger 2018-09-27 20:49:50 UTC
Congratulations. Be aware that you always need to blacklist the in-kernel driver whenever an external one uses the same PCI ID.

Note that changing the conf file in /boot does not change anything other than that file. It is a record of the configuration that was used to compile that kernel. To change what is actually in a kernel, you would need to install the kernel source, copy that configuration file to the kernel source directory as .config, edit .config to make your changes (or run "make xconfig"), then run "make" and "sudo make modules_install install", and finally reboot into the new kernel that you just built. Part of what your distro does is insulate you from that whole process.

Comment 53 J. W. Mitchell 2018-09-28 16:06:04 UTC
As others have suggested, it seems logical go back to CONFIG_SSB=m, as compiling SSB into the kernel breaks some configurations that need wl.  Unless, of course, there is another usage case that *requires* CONFIG_SSB=y.  Barring that, it seems that maximum flexibility is achieved when SSB is built as a module.

Comment 54 Jeremy Cline 2018-09-28 17:37:50 UTC
CONFIG_SSB is set to be a module in the next kernel builds (4.19.0-rc6 in Rawhide, 4.18.11 on stable releases)

Comment 55 Benjamin Masse 2018-10-01 17:22:58 UTC
Running pending testing 4.18.11 on MacBook Pro 5,3 with Wifi working again.

Comment 56 Paul Lambert 2018-10-28 19:01:14 UTC
This bug is related to and most likely simlar to Bug 1622367.  In fact bugs have been filed for all Linux distros regarding the failure of the kernel 4.17 and later breaking Broadcom wifi and bluetooth wireless devices.

If interested see my Comments #2 & #3 in bug 1622367

Comment 57 Bruno Wolff III 2021-09-14 01:22:34 UTC
I think this can be closed now. The original problem got resolved and the bug report got hijacked for another problem and it looks like it got resolved as well.

Comment 58 Larry Finger 2021-09-14 15:26:19 UTC
I agree.