Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
>=gentoo-sources-4.14.52 breaks Dell bt Broadcom BCM2046B1
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
MickKi
Veteran
Veteran


Joined: 08 Feb 2004
Posts: 1157

PostPosted: Wed Jul 04, 2018 3:17 pm    Post subject: >=gentoo-sources-4.14.52 breaks Dell bt Broadcom BCM2046B Reply with quote

There's been a change in the 4.14.x and later kernel sources which causes the BCM2046B1 mini-card on an old Dell XPS to malfunction. WiFi provided by BCM4312 802.11b/g LP-PHY works, but the bluetooth functionality is broken.

Something has changed with regards to USB drivers in the kernel structure, because I notice a race condition whereby the kernel binds and then unbinds the USB hub, followed by udev trying to bind it. This race condition pegs the CPU and overheats the PC. When I try to shutdown the PC I have to wait for a long time because udev will not respond to shut down gracefully. This is the never ending loop 'udevadm monitor' shows:
Code:
KERNEL[641.691683] bind     /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
KERNEL[641.691914] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
UDEV  [641.692324] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
KERNEL[641.695675] bind     /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
KERNEL[641.695893] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
UDEV  [641.696318] bind     /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
KERNEL[641.699951] bind     /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
KERNEL[641.700164] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
UDEV  [641.700566] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6.2/2-1.6.2:1.0 (usb)
...


The 4.14.52 kernel config was created with 'make oldconfig' from 4.9.95, which as I said works fine without any kernel/udev race conditions. If I do not build CONFIG_USB_PCI the race condition does not occur, but as expected I have no USB capability.

Any idea what has changed in the kernel to cause this problem and how I could overcome it? I've installed 4.15.x and 4.16.x, but the same problem remains.

The mini-card containing the bluetooth device is as follows:
Code:
                 *-usb:1
                      description: USB hub
                      product: BCM2046B1
                      vendor: Broadcom
                      physical id: 6
                      bus info: usb@2:1.6
                      version: 1.00
                      capabilities: usb-2.00
                      configuration: driver=hub maxpower=94mA slots=3 speed=12Mbit/s
                    *-usb:0
                         description: Keyboard
                         product: Integrated Keyboard
                         vendor: Dell Computer Corp.
                         physical id: 1
                         bus info: usb@2:1.6.1
                         version: 1.00
                         capabilities: usb-2.00
                         configuration: driver=usbhid maxpower=2mA speed=12Mbit/s
                    *-usb:1 UNCLAIMED
                         description: Mouse
                         product: Integrated Touchpad / Trackstick
                         vendor: Dell Computer Corp.
                         physical id: 2
                         bus info: usb@2:1.6.2
                         version: 1.00
                         capabilities: usb-2.00
                         configuration: maxpower=2mA speed=12Mbit/s
                    *-usb:2
                         description: Bluetooth wireless interface
                         product: Dell Wireless 370 Bluetooth Mini-card
                         vendor: Dell Computer Corp
                         physical id: 3
                         bus info: usb@2:1.6.3
                         version: 4.56
                         capabilities: bluetooth usb-2.00
                         configuration: driver=btusb maxpower=100mA speed=12Mbit/s



dmesg does not report any errors when activating the bt device:
Code:
[   14.926053] usb 2-1.6.3: new full-speed USB device number 7 using ehci-pci
[   15.009383] usb 2-1.6.3: New USB device found, idVendor=413c, idProduct=8156
[   15.009387] usb 2-1.6.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   15.009389] usb 2-1.6.3: Product: Dell Wireless 370 Bluetooth Mini-card
[   15.009391] usb 2-1.6.3: Manufacturer: Dell Computer Corp
[   15.245472] Bluetooth: Core ver 2.22
[   15.245475] Bluetooth: Starting self testing
[   15.257603] Bluetooth: ECDH test passed in 11839 usecs
[   15.262175] Bluetooth: SMP test passed in 1991 usecs
[   15.262180] Bluetooth: Finished self testing
[   15.262197] NET: Registered protocol family 31
[   15.262198] Bluetooth: HCI device and connection manager initialized
[   15.262202] Bluetooth: HCI socket layer initialized
[   15.262204] Bluetooth: L2CAP socket layer initialized
[   15.262214] Bluetooth: SCO socket layer initialized
[   15.394626] usbcore: registered new interface driver btusb


lsusb shows:
Code:
Bus 002 Device 004: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)

and the btusb module reports:
Code:
$ modinfo btusb
filename:       /lib/modules/4.14.52-gentoo/kernel/drivers/bluetooth/btusb.ko.gz
license:        GPL
version:        0.8
description:    Generic Bluetooth USB driver ver 0.8
author:         Marcel Holtmann <marcel@holtmann.org>
srcversion:     860368EAC1CC57225C89BB8
alias:          usb:v8087p0A5Ad*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0000p0000d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0930p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v413Cp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v13D3p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v050Dp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0B05p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0A5Cp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v04CAp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0489p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0BB4p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v105Bp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v19FFp0239d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v413Cp8197d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0C10p0000d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDBp1002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v044Ep3002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v044Ep3001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v04BFp030Ad*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v057Cp3800d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp8281d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp821Ad*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp821Fd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp821Bd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp8218d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp8215d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp8213d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0A5Cp21E1d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0E8Dp763Fd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v05ACp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v*p*d*dc*dsc*dp*icE0isc01ip01in*
alias:          usb:v*p*d*dcE0dsc01dp04ic*isc*ip*in*
alias:          usb:v*p*d*dcE0dsc01dp01ic*isc*ip*in*
alias:          of:N*T*Cusb1286,204eC*
alias:          of:N*T*Cusb1286,204e
depends:        btintel,bluetooth,btbcm
retpoline:      Y
intree:         Y
name:           btusb
vermagic:       4.14.52-gentoo SMP preempt mod_unload
signat:         PKCS#7
signer:         
sig_key:       
sig_hashalgo:   md4
parm:           disable_scofix:Disable fixup of wrong SCO buffer size (bool)
parm:           force_scofix:Force fixup of wrong SCO buffers size (bool)
parm:           reset:Send HCI reset command on initialization (bool)


Please let me know if you need more info.
_________________
Regards,
Mick
Back to top
View user's profile Send private message
MickKi
Veteran
Veteran


Joined: 08 Feb 2004
Posts: 1157

PostPosted: Sat Jul 07, 2018 6:48 pm    Post subject: Reply with quote

I compared 'lsusb -t' with the 4.9.95 and 4.14.52 kernels and they are identical:
Code:
$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 6: Dev 4, If 0, Class=Hub, Driver=hub/3p, 12M
            |__ Port 3: Dev 7, If 2, Class=Vendor Specific Class, Driver=, 12M
            |__ Port 3: Dev 7, If 0, Class=Wireless, Driver=btusb, 12M
            |__ Port 3: Dev 7, If 3, Class=Application Specific Interface, Driver=, 12M
            |__ Port 3: Dev 7, If 1, Class=Wireless, Driver=btusb, 12M
            |__ Port 1: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
            |__ Port 2: Dev 6, If 0, Class=Human Interface Device, Driver=, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 4: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M


I also compared the output of usb-devices and the only difference appears to be on the version of the ehci_hcd driver; e.g.:
Code:
T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 3
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.14
S:  Manufacturer=Linux 4.14.52-gentoo ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub


So, could it be the ehci_hcd driver is causing this bind/unbind race condition on my hardware? Is there an easy way to troubleshoot this further?
_________________
Regards,
Mick
Back to top
View user's profile Send private message
MickKi
Veteran
Veteran


Joined: 08 Feb 2004
Posts: 1157

PostPosted: Tue Jul 24, 2018 2:34 pm    Post subject: Reply with quote

It is a kernel bug after all and the result of a commit which added unnecessary bind/unbind uevents:

https://bugzilla.kernel.org/show_bug.cgi?id=199035
_________________
Regards,
Mick
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum