| From f5bc0c6909d081519f48eaaa3b91a36727136d5f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 30 Sep 2020 13:51:12 +0300 |
| Subject: ath11k: fix warning caused by lockdep_assert_held |
| |
| From: Carl Huang <cjhuang@codeaurora.org> |
| |
| [ Upstream commit 2f588660e34a982377109872757f1b99d7748d21 ] |
| |
| Fix warning caused by lockdep_assert_held when CONFIG_LOCKDEP is enabled. |
| |
| [ 271.940647] WARNING: CPU: 6 PID: 0 at drivers/net/wireless/ath/ath11k/hal.c:818 ath11k_hal_srng_access_begin+0x31/0x40 [ath11k] |
| [ 271.940655] Modules linked in: qrtr_mhi qrtr ns ath11k_pci mhi ath11k qmi_helpers nvme nvme_core |
| [ 271.940675] CPU: 6 PID: 0 Comm: swapper/6 Kdump: loaded Tainted: G W 5.9.0-rc5-kalle-bringup-wt-ath+ #4 |
| [ 271.940682] Hardware name: Dell Inc. Inspiron 7590/08717F, BIOS 1.3.0 07/22/2019 |
| [ 271.940698] RIP: 0010:ath11k_hal_srng_access_begin+0x31/0x40 [ath11k] |
| [ 271.940708] Code: 48 89 f3 85 c0 75 11 48 8b 83 a8 00 00 00 8b 00 89 83 b0 00 00 00 5b c3 48 8d 7e 58 be ff ff ff ff e8 53 24 ec fa 85 c0 75 dd <0f> 0b eb d9 90 66 2e 0f 1f 84 00 00 00 00 00 55 53 48 89 f3 8b 35 |
| [ 271.940718] RSP: 0018:ffffbdf0c0230df8 EFLAGS: 00010246 |
| [ 271.940727] RAX: 0000000000000000 RBX: ffffa12b34e67680 RCX: ffffa12b57a0d800 |
| [ 271.940735] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: ffffa12b34e676d8 |
| [ 271.940742] RBP: ffffa12b34e60000 R08: 0000000000000001 R09: 0000000000000001 |
| [ 271.940753] R10: 0000000000000001 R11: 0000000000000046 R12: 0000000000000000 |
| [ 271.940763] R13: ffffa12b34e60000 R14: ffffa12b34e60000 R15: 0000000000000000 |
| [ 271.940774] FS: 0000000000000000(0000) GS:ffffa12b5a400000(0000) knlGS:0000000000000000 |
| [ 271.940788] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 |
| [ 271.940798] CR2: 00007f8bef282008 CR3: 00000001f4224004 CR4: 00000000003706e0 |
| [ 271.940805] Call Trace: |
| [ 271.940813] <IRQ> |
| [ 271.940835] ath11k_dp_tx_completion_handler+0x9e/0x950 [ath11k] |
| [ 271.940847] ? lock_acquire+0xba/0x3b0 |
| [ 271.940876] ath11k_dp_service_srng+0x5a/0x2e0 [ath11k] |
| [ 271.940893] ath11k_pci_ext_grp_napi_poll+0x1e/0x80 [ath11k_pci] |
| [ 271.940908] net_rx_action+0x283/0x4f0 |
| [ 271.940931] __do_softirq+0xcb/0x499 |
| [ 271.940950] asm_call_on_stack+0x12/0x20 |
| [ 271.940963] </IRQ> |
| [ 271.940979] do_softirq_own_stack+0x4d/0x60 |
| [ 271.940991] irq_exit_rcu+0xb0/0xc0 |
| [ 271.941001] common_interrupt+0xce/0x190 |
| [ 271.941014] asm_common_interrupt+0x1e/0x40 |
| [ 271.941026] RIP: 0010:cpuidle_enter_state+0x115/0x500 |
| |
| Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1 |
| |
| Signed-off-by: Carl Huang <cjhuang@codeaurora.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Link: https://lore.kernel.org/r/1601463073-12106-5-git-send-email-kvalo@codeaurora.org |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/ath/ath11k/dp_tx.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/drivers/net/wireless/ath/ath11k/dp_tx.c b/drivers/net/wireless/ath/ath11k/dp_tx.c |
| index 1af76775b1a87..99cff8fb39773 100644 |
| --- a/drivers/net/wireless/ath/ath11k/dp_tx.c |
| +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c |
| @@ -514,6 +514,8 @@ void ath11k_dp_tx_completion_handler(struct ath11k_base *ab, int ring_id) |
| u32 msdu_id; |
| u8 mac_id; |
| |
| + spin_lock_bh(&status_ring->lock); |
| + |
| ath11k_hal_srng_access_begin(ab, status_ring); |
| |
| while ((ATH11K_TX_COMPL_NEXT(tx_ring->tx_status_head) != |
| @@ -533,6 +535,8 @@ void ath11k_dp_tx_completion_handler(struct ath11k_base *ab, int ring_id) |
| |
| ath11k_hal_srng_access_end(ab, status_ring); |
| |
| + spin_unlock_bh(&status_ring->lock); |
| + |
| while (ATH11K_TX_COMPL_NEXT(tx_ring->tx_status_tail) != tx_ring->tx_status_head) { |
| struct hal_wbm_release_ring *tx_status; |
| u32 desc_id; |
| -- |
| 2.27.0 |
| |