Public bug reported:
[Impact]
On some cold boots, the Intel PCIe Bluetooth controller (btintel_pcie) is
declared dead
and Bluetooth does not work. hci0 stays down for the rest of the session.
Seen on a Dell system (CID: 202608-39584) running linux-oem-7.0.
Error log:
Bluetooth: hci0: Controller in error state
Bluetooth: hci0: Timeout (3000 ms) on alive interrupt, alive context:
intel_reset1
Bluetooth: hci0: Failed to send frame (-62)
Bluetooth: hci0: Failed to send Intel Reset command
Bluetooth: hci0: Intel Soft Reset failed (-62)
Measured on the affected system: 10 of 60 cold boots hit the error. 4 of those
10
left hci0 down.
The driver treats bit 12 of the boot stage register as a fatal error. The
hardware documents that bit as a warning only. When the controller sets it, the
driver starts a soft reset on a controller that was fine, and the reset fails.
[Fix]
Cherry-pick of upstream commit 5917dd39db2b ("Bluetooth: btintel_pcie: treat
boot
stage bit 12 as warning"), in v7.1 (first seen in v7.1-rc3).
It renames the bit to DEVICE_WARNING and removes it from
btintel_pcie_in_error().
Only the abort handler bit (bit 13) is an error now. A set warning bit is logged
and the boot continues. It also prints the boot stage value in the error
message.
Fixes: 190377500fde ("Bluetooth: btintel_pcie: Dump debug registers on error"),
in v6.16.
[Test Plan]
Power off and power on the machine 60 times (full power loss, not reboot):
$ sudo systemctl poweroff
After each boot check: $ journalctl -b -k | grep -E "Controller in error
state|Soft Reset failed"
$ hciconfig hci0 | grep "UP RUNNING"
Without patch: 10 of 60 boots show "Controller in error state" and the
Soft Reset failure. 4 of 60 leave hci0 down.
With patch: 0 of 60 boots show an error. hci0 is UP RUNNING every time.
On 7 of 60 boots the new line shows up and the controller works:
Bluetooth: hci0: Controller device warning (boot_stage: 0xa0db1003)
[Where problems could occur]
Could break error handling in the btintel_pcie driver.
If a real fatal error ever sets only bit 12, the driver will no longer treat it
as
an error. It will not run the error path or the soft reset. Bluetooth would then
fail later (command timeouts, hci0 not coming up) instead of at the first error.
Errors that set bit 13 (abort handler) are handled as before.
The change only touches btintel_pcie.c and btintel_pcie.h. It does not touch
other Intel Bluetooth transports (btusb).
** Affects: linux (Ubuntu)
Importance: Undecided
Status: New
** Affects: linux-oem-7.0 (Ubuntu)
Importance: Undecided
Status: New
** Affects: linux (Ubuntu Resolute)
Importance: Undecided
Assignee: AceLan Kao (acelankao)
Status: In Progress
** Affects: linux-oem-7.0 (Ubuntu Resolute)
Importance: Undecided
Assignee: AceLan Kao (acelankao)
Status: In Progress
** Also affects: linux-oem-7.0 (Ubuntu)
Importance: Undecided
Status: New
** Also affects: linux (Ubuntu Resolute)
Importance: Undecided
Status: New
** Also affects: linux-oem-7.0 (Ubuntu Resolute)
Importance: Undecided
Status: New
** Changed in: linux (Ubuntu Resolute)
Status: New => In Progress
** Changed in: linux-oem-7.0 (Ubuntu Resolute)
Status: New => In Progress
** Changed in: linux (Ubuntu Resolute)
Assignee: (unassigned) => AceLan Kao (acelankao)
** Changed in: linux-oem-7.0 (Ubuntu Resolute)
Assignee: (unassigned) => AceLan Kao (acelankao)
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2170908
Title:
Intel Bluetooth stops working on some cold boots on Dell systems
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170908/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs