Message ID | 20250416020414.2161545-1-maharaja.kennadyrajan@oss.qualcomm.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jeff Johnson |
Headers | show |
Series | [ath-next,v2] wifi: ath12k: Prevent sending WMI commands to firmware during firmware crash | expand |
On 4/16/2025 7:34 AM, Maharaja Kennadyrajan wrote: > Currently, we encounter the following kernel call trace when a firmware > crash occurs. This happens because the host sends WMI commands to the > firmware while it is in recovery, causing the commands to fail and > resulting in the kernel call trace. > > Set the ATH12K_FLAG_CRASH_FLUSH and ATH12K_FLAG_RECOVERY flags when the > host driver receives the firmware crash notification from MHI. This > prevents sending WMI commands to the firmware during recovery. > > Call Trace: > <TASK> > dump_stack_lvl+0x75/0xc0 > register_lock_class+0x6be/0x7a0 > ? __lock_acquire+0x644/0x19a0 > __lock_acquire+0x95/0x19a0 > lock_acquire+0x265/0x310 > ? ath12k_ce_send+0xa2/0x210 [ath12k] > ? find_held_lock+0x34/0xa0 > ? ath12k_ce_send+0x56/0x210 [ath12k] > _raw_spin_lock_bh+0x33/0x70 > ? ath12k_ce_send+0xa2/0x210 [ath12k] > ath12k_ce_send+0xa2/0x210 [ath12k] > ath12k_htc_send+0x178/0x390 [ath12k] > ath12k_wmi_cmd_send_nowait+0x76/0xa0 [ath12k] > ath12k_wmi_cmd_send+0x62/0x190 [ath12k] > ath12k_wmi_pdev_bss_chan_info_request+0x62/0xc0 [ath1 > ath12k_mac_op_get_survey+0x2be/0x310 [ath12k] > ieee80211_dump_survey+0x99/0x240 [mac80211] > nl80211_dump_survey+0xe7/0x470 [cfg80211] > ? kmalloc_reserve+0x59/0xf0 > genl_dumpit+0x24/0x70 > netlink_dump+0x177/0x360 > __netlink_dump_start+0x206/0x280 > genl_family_rcv_msg_dumpit.isra.22+0x8a/0xe0 > ? genl_family_rcv_msg_attrs_parse.isra.23+0xe0/0xe0 > ? genl_op_lock.part.12+0x10/0x10 > ? genl_dumpit+0x70/0x70 > genl_rcv_msg+0x1d0/0x290 > ? nl80211_del_station+0x330/0x330 [cfg80211] > ? genl_get_cmd_both+0x50/0x50 > netlink_rcv_skb+0x4f/0x100 > genl_rcv+0x1f/0x30 > netlink_unicast+0x1b6/0x260 > netlink_sendmsg+0x31a/0x450 > __sock_sendmsg+0xa8/0xb0 > ____sys_sendmsg+0x1e4/0x260 > ___sys_sendmsg+0x89/0xe0 > ? local_clock_noinstr+0xb/0xc0 > ? rcu_is_watching+0xd/0x40 > ? kfree+0x1de/0x370 > ? __sys_sendmsg+0x7a/0xc0 > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 > > Fixes: a9b46dd2e483 ("wifi: ath12k: Add firmware coredump collection support") > Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com> Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
On Wed, 16 Apr 2025 07:34:14 +0530, Maharaja Kennadyrajan wrote: > Currently, we encounter the following kernel call trace when a firmware > crash occurs. This happens because the host sends WMI commands to the > firmware while it is in recovery, causing the commands to fail and > resulting in the kernel call trace. > > Set the ATH12K_FLAG_CRASH_FLUSH and ATH12K_FLAG_RECOVERY flags when the > host driver receives the firmware crash notification from MHI. This > prevents sending WMI commands to the firmware during recovery. > > [...] Applied, thanks! [1/1] wifi: ath12k: Prevent sending WMI commands to firmware during firmware crash commit: e9e094a9734ea3bd4d4d117c915ccf129ac61ba1 Best regards,
diff --git a/drivers/net/wireless/ath/ath12k/mhi.c b/drivers/net/wireless/ath/ath12k/mhi.c index 9c929c4ad8a8..08f44baf182a 100644 --- a/drivers/net/wireless/ath/ath12k/mhi.c +++ b/drivers/net/wireless/ath/ath12k/mhi.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. */ #include <linux/msi.h> @@ -285,8 +285,11 @@ static void ath12k_mhi_op_status_cb(struct mhi_controller *mhi_cntrl, break; } - if (!(test_bit(ATH12K_FLAG_UNREGISTERING, &ab->dev_flags))) + if (!(test_bit(ATH12K_FLAG_UNREGISTERING, &ab->dev_flags))) { + set_bit(ATH12K_FLAG_CRASH_FLUSH, &ab->dev_flags); + set_bit(ATH12K_FLAG_RECOVERY, &ab->dev_flags); queue_work(ab->workqueue_aux, &ab->reset_work); + } break; default: break;
Currently, we encounter the following kernel call trace when a firmware crash occurs. This happens because the host sends WMI commands to the firmware while it is in recovery, causing the commands to fail and resulting in the kernel call trace. Set the ATH12K_FLAG_CRASH_FLUSH and ATH12K_FLAG_RECOVERY flags when the host driver receives the firmware crash notification from MHI. This prevents sending WMI commands to the firmware during recovery. Call Trace: <TASK> dump_stack_lvl+0x75/0xc0 register_lock_class+0x6be/0x7a0 ? __lock_acquire+0x644/0x19a0 __lock_acquire+0x95/0x19a0 lock_acquire+0x265/0x310 ? ath12k_ce_send+0xa2/0x210 [ath12k] ? find_held_lock+0x34/0xa0 ? ath12k_ce_send+0x56/0x210 [ath12k] _raw_spin_lock_bh+0x33/0x70 ? ath12k_ce_send+0xa2/0x210 [ath12k] ath12k_ce_send+0xa2/0x210 [ath12k] ath12k_htc_send+0x178/0x390 [ath12k] ath12k_wmi_cmd_send_nowait+0x76/0xa0 [ath12k] ath12k_wmi_cmd_send+0x62/0x190 [ath12k] ath12k_wmi_pdev_bss_chan_info_request+0x62/0xc0 [ath1 ath12k_mac_op_get_survey+0x2be/0x310 [ath12k] ieee80211_dump_survey+0x99/0x240 [mac80211] nl80211_dump_survey+0xe7/0x470 [cfg80211] ? kmalloc_reserve+0x59/0xf0 genl_dumpit+0x24/0x70 netlink_dump+0x177/0x360 __netlink_dump_start+0x206/0x280 genl_family_rcv_msg_dumpit.isra.22+0x8a/0xe0 ? genl_family_rcv_msg_attrs_parse.isra.23+0xe0/0xe0 ? genl_op_lock.part.12+0x10/0x10 ? genl_dumpit+0x70/0x70 genl_rcv_msg+0x1d0/0x290 ? nl80211_del_station+0x330/0x330 [cfg80211] ? genl_get_cmd_both+0x50/0x50 netlink_rcv_skb+0x4f/0x100 genl_rcv+0x1f/0x30 netlink_unicast+0x1b6/0x260 netlink_sendmsg+0x31a/0x450 __sock_sendmsg+0xa8/0xb0 ____sys_sendmsg+0x1e4/0x260 ___sys_sendmsg+0x89/0xe0 ? local_clock_noinstr+0xb/0xc0 ? rcu_is_watching+0xd/0x40 ? kfree+0x1de/0x370 ? __sys_sendmsg+0x7a/0xc0 Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 Fixes: a9b46dd2e483 ("wifi: ath12k: Add firmware coredump collection support") Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com> --- v2: Added the tag in the commit title. drivers/net/wireless/ath/ath12k/mhi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) base-commit: 176f3009ae598d0523b267db319fe16f69577231