summaryrefslogtreecommitdiff
path: root/rust/kernel/ptr
diff options
context:
space:
mode:
authorShuai Zhang <shuai.zhang@oss.qualcomm.com>2026-04-10 17:54:43 +0800
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2026-04-13 09:19:42 -0400
commitc347ca17d62a32c25564fee0ca3a2a7bc2d5fd6f (patch)
treebc19e8e054e2b3560493c4971f1d4aa6cc655257 /rust/kernel/ptr
parent76388eae1da94f6c29886c7e49bce1d5abf88734 (diff)
Bluetooth: hci_qca: Fix missing wakeup during SSR memdump handling
When a Bluetooth controller encounters a coredump, it triggers the Subsystem Restart (SSR) mechanism. The controller first reports the coredump data and, once the upload is complete, sends a hw_error event. The host relies on this event to proceed with subsequent recovery actions. If the host has not finished processing the coredump data when the hw_error event is received, it waits until either the processing is complete or the 8-second timeout expires before handling the event. The current implementation clears QCA_MEMDUMP_COLLECTION using clear_bit(), which does not wake up waiters sleeping in wait_on_bit_timeout(). As a result, the waiting thread may remain blocked until the timeout expires even if the coredump collection has already completed. Fix this by clearing QCA_MEMDUMP_COLLECTION with clear_and_wake_up_bit(), which also wakes up the waiting thread and allows the hw_error handling to proceed immediately. Test case: - Trigger a controller coredump using: hcitool cmd 0x3f 0c 26 - Tested on QCA6390. - Capture HCI logs using btmon. - Verify that the delay between receiving the hw_error event and initiating the power-off sequence is reduced compared to the timeout-based behavior. Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Diffstat (limited to 'rust/kernel/ptr')
0 files changed, 0 insertions, 0 deletions