[PATCH] wifi: ath12k: Prevent sending WMI commands to firmware during firmware crash
Maharaja Kennadyrajan
mkenna at qti.qualcomm.com
Tue Apr 15 19:03:57 PDT 2025
> -----Original Message-----
> From: Maharaja Kennadyrajan <maharaja.kennadyrajan at oss.qualcomm.com>
> Sent: Wednesday, April 16, 2025 7:32 AM
> To: ath12k at lists.infradead.org
> Cc: linux-wireless at vger.kernel.org; Maharaja Kennadyrajan
> <maharaja.kennadyrajan at oss.qualcomm.com>
> Subject: [PATCH] wifi: ath12k: Prevent sending WMI commands to firmware
> during firmware crash
Ignore this patch as tag is missing in the commit title. Will add this and send in next version.
>
> WARNING: This email originated from outside of Qualcomm. Please be wary of
> any links or attachments, and do not enable macros.
>
> 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 at oss.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath12k/mhi.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> 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;
>
> base-commit: 176f3009ae598d0523b267db319fe16f69577231
> --
> 2.17.1
>
More information about the ath12k
mailing list