Linux-mediatek Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Bluetooth: btmtk: fix subsystem reset error reporting
@ 2026-08-15 11:56 Ismail Tarim
  2026-08-15 11:56 ` [PATCH v2 1/2] Bluetooth: btmtk: Do not report success when subsys reset fails Ismail Tarim
  2026-08-15 11:56 ` [PATCH v2 2/2] Bluetooth: btmtk: Do not discard the subsystem reset timeout Ismail Tarim
  0 siblings, 2 replies; 3+ messages in thread
From: Ismail Tarim @ 2026-08-15 11:56 UTC (permalink / raw)
  To: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth
  Cc: Jing Cai, Sean Wang, Chris Lu, linux-mediatek, linux-kernel,
	Ismail Tarim

Two bugs in btmtk_usb_subsys_reset() that make it report success to its
caller when the subsystem reset has actually failed.

Patch 1 covers the case where the post-reset chip id reads back as zero:
the function logs "subsys reset fail." and then returns 0.

Patch 2 restores propagation of the MTK_BT_RST_DONE poll timeout, which
has been silently overwritten since commit 3dcb122b3064 ("Bluetooth:
btusb: mediatek: return error for failed reg access") started assigning
err at the chip id read.

Found while investigating an MT7902 [13d3:3579] whose controller stops
responding and never returns to the USB bus. On that device the failing
path can be reached on demand by requesting a coredump, since btmtk asks
for a reset once the dump completes:

  # echo 1 > /sys/class/bluetooth/hci0/device/coredump

The captured firmware coredump shows the controller asserting inside its
ROM rather than in the downloadable blob, which is consistent with the
failure surviving a firmware update:

  <ASSERT> system/rom/transport/tra_usb3.c #764 - BTSYS, id=0x4 idle

Both patches only correct the error reporting; neither changes the
recovery behaviour or makes that controller recoverable. They are a
prerequisite for anything that wants to react to a failed reset, since
today the failure is not visible to the caller.

Compile tested on x86_64 (W=1, no new warnings); checkpatch --strict clean.

Changes in v2:
- 1/2: shorten the subject so the CI gitlint check passes (was 81 > 80).
- 1/2: document how the failing path can be reached on demand.
- No functional change; the diff is identical to v1.

v1: https://lore.kernel.org/linux-bluetooth/20260815110119.11301-1-ismailtarim7@gmail.com/

Ismail Tarim (2):
  Bluetooth: btmtk: Do not report success when subsys reset fails
  Bluetooth: btmtk: Do not discard the subsystem reset timeout

 drivers/bluetooth/btmtk.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)


base-commit: 15ef2f78c49d20d53ec7c0f1c9b40b02e089f2d6
-- 
2.55.0



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-15 11:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-15 11:56 [PATCH v2 0/2] Bluetooth: btmtk: fix subsystem reset error reporting Ismail Tarim
2026-08-15 11:56 ` [PATCH v2 1/2] Bluetooth: btmtk: Do not report success when subsys reset fails Ismail Tarim
2026-08-15 11:56 ` [PATCH v2 2/2] Bluetooth: btmtk: Do not discard the subsystem reset timeout Ismail Tarim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox