From: Kalle Valo <kvalo@kernel.org>
To: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
Cc: <ath11k@lists.infradead.org>, <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH v2 3/4] ath11k: Enable low power mode when WLAN is not active
Date: Wed, 31 Aug 2022 11:01:36 +0300 [thread overview]
Message-ID: <874jxsdeov.fsf@kernel.org> (raw)
In-Reply-To: <20220825111818.30869-4-quic_mpubbise@quicinc.com> (Manikanta Pubbisetty's message of "Thu, 25 Aug 2022 16:48:17 +0530")
Manikanta Pubbisetty <quic_mpubbise@quicinc.com> writes:
> Currently, WLAN chip is powered once during driver probe and is kept
> ON (powered) always even when WLAN is not active; keeping the chip
> powered ON all the time will consume extra power which is not
> desirable for a battery operated device. Same is the case with non-WoW
> suspend, chip will never be put into low power mode when the system is
> suspended resulting in higher battery drain.
>
> As per the recommendation, sending a PDEV suspend WMI command followed
> by a QMI MODE OFF command will cease all WLAN activity and put the device
> in low power mode. When WLAN interfaces are brought up, sending a QMI
> MISSION MODE command would be sufficient to bring the chip out of low
> power. This is a better approach than doing hif_power_down()/hif_power_up()
> for every WiFi ON/OFF sequence since the turnaround time for entry/exit of
> low power mode is much less. Overhead is just the time taken for sending
> QMI MODE OFF & QMI MISSION MODE commands instead of going through the
> entire chip boot & QMI init sequence.
>
> Currently the changes are applicable only for WCN6750. This can be
> extended to other targets with a future patch.
>
> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
>
> Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
With this patch 3 my regression tests on WCN6855 panic:
[ 109.009427] rmmod ath11k_pci
[ 109.437120] kworker/dying (1560) used greatest stack depth: 24704 bytes left
[ 109.446051] general protection fault, probably for non-canonical address 0xdffffc000000003e: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN
[ 109.446133] KASAN: null-ptr-deref in range [0x00000000000001f0-0x00000000000001f7]
[ 109.446211] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.0.0-rc2-wt-ath+ #683
[ 109.446315] Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021
[ 109.446393] RIP: 0010:ath11k_dp_process_rxdma_err+0x1c8/0x810 [ath11k]
[ 109.446486] Code: d2 48 63 d8 48 8b 4c 24 38 48 8d 04 5b 48 c1 e0 04 48 8d bc 01 f4 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 aa
[ 109.446557] RSP: 0018:ffffc90000007b90 EFLAGS: 00010203
[ 109.446619] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
[ 109.446677] RDX: 000000000000003e RSI: 0000000000000000 RDI: 00000000000001f4
[ 109.446734] RBP: 0000000000000000 R08: ffff88814c0e1470 R09: ffff88814c0f6678
[ 109.446792] R10: dffffc0000000000 R11: ffffed102981ecd0 R12: 0000000000000000
[ 109.446903] R13: 0000000000000040 R14: 1ffff92000000f81 R15: ffff88814c0e0000
[ 109.446961] FS: 0000000000000000(0000) GS:ffff888233600000(0000) knlGS:0000000000000000
[ 109.447020] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 109.447080] CR2: 000055570fe84cc8 CR3: 0000000152540006 CR4: 00000000003706f0
[ 109.447136] Call Trace:
[ 109.447194] <IRQ>
[ 109.447257] ? ath11k_dp_process_reo_status+0x3ce/0x560 [ath11k]
[ 109.447349] ? ath11k_dp_rx_process_wbm_err+0x17d0/0x17d0 [ath11k]
[ 109.447442] ath11k_dp_service_srng+0x358/0xab0 [ath11k]
[ 109.447536] ath11k_pcic_ext_grp_napi_poll+0x40/0x1d0 [ath11k]
[ 109.447628] __napi_poll.constprop.0+0x97/0x350
[ 109.447690] net_rx_action+0x7bf/0xbb0
[ 109.447749] ? __napi_poll.constprop.0+0x350/0x350
[ 109.447831] ? ktime_get+0x101/0x2f0
[ 109.447911] __do_softirq+0x1ca/0x897
[ 109.447989] __irq_exit_rcu+0xdb/0x180
[ 109.448049] irq_exit_rcu+0x5/0x20
[ 109.448109] sysvec_apic_timer_interrupt+0x8a/0xb0
[ 109.448168] </IRQ>
[ 109.448226] <TASK>
[ 109.448284] asm_sysvec_apic_timer_interrupt+0x16/0x20
[ 109.448343] RIP: 0010:cpuidle_enter_state+0x1ef/0x9a0
[ 109.448407] Code: 00 00 8b 73 04 bf ff ff ff ff e8 8c f0 ff ff 31 ff e8 75 16 47 fe 80 7c 24 08 00 0f 85 a1 01 00 00 e8 75 7d 6a fe fb 45 85 f6 <0f> 88 6f 02 00 00 4d 63 ee 4b 8d 44 6d 00 49 8d 44 85 00 48 8d 7c
[ 109.448477] RSP: 0018:ffffffffb9407db8 EFLAGS: 00000202
[ 109.448540] RAX: 0000000000124987 RBX: ffff888114966400 RCX: 1ffffffff738a3e1
[ 109.448600] RDX: 0000000000000000 RSI: ffffffffb8a71bc0 RDI: ffffffffb8bec9c0
[ 109.448659] RBP: ffffffffb986efa0 R08: 0000000000000001 R09: ffffffffb9c54717
[ 109.448715] R10: fffffbfff738a8e2 R11: 00000000000002ec R12: 000000197b7a6a19
[ 109.448774] R13: 0000000000000002 R14: 0000000000000002 R15: ffff888114966404
[ 109.448871] ? cpuidle_enter_state+0x1eb/0x9a0
[ 109.448947] ? finish_task_switch.isra.0+0x120/0x870
[ 109.449006] cpuidle_enter+0x45/0xa0
[ 109.449065] cpuidle_idle_call+0x274/0x3f0
[ 109.449125] ? arch_cpu_idle_exit+0x30/0x30
[ 109.449187] ? tsc_verify_tsc_adjust+0x86/0x2d0
[ 109.449247] ? lockdep_hardirqs_off+0x90/0xd0
[ 109.449306] do_idle+0xe0/0x140
[ 109.449363] cpu_startup_entry+0x14/0x20
[ 109.449423] rest_init+0x135/0x1e0
[ 109.449482] arch_call_rest_init+0xa/0xb
[ 109.449542] start_kernel+0x391/0x3af
[ 109.449606] secondary_startup_64_no_verify+0xce/0xdb
[ 109.449671] </TASK>
[ 109.449729] Modules linked in: ath11k_pci(-) ath11k mac80211 libarc4 cfg80211 qmi_helpers qrtr_mhi mhi qrtr nvme nvme_core
[ 109.449846] ---[ end trace 0000000000000000 ]---
[ 109.449927] RIP: 0010:ath11k_dp_process_rxdma_err+0x1c8/0x810 [ath11k]
[ 109.450073] Code: d2 48 63 d8 48 8b 4c 24 38 48 8d 04 5b 48 c1 e0 04 48 8d bc 01 f4 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 aa
[ 109.450147] RSP: 0018:ffffc90000007b90 EFLAGS: 00010203
[ 109.450212] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
[ 109.450275] RDX: 000000000000003e RSI: 0000000000000000 RDI: 00000000000001f4
[ 109.450337] RBP: 0000000000000000 R08: ffff88814c0e1470 R09: ffff88814c0f6678
[ 109.450401] R10: dffffc0000000000 R11: ffffed102981ecd0 R12: 0000000000000000
[ 109.450465] R13: 0000000000000040 R14: 1ffff92000000f81 R15: ffff88814c0e0000
[ 109.450531] FS: 0000000000000000(0000) GS:ffff888233600000(0000) knlGS:0000000000000000
[ 109.450595] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 109.450661] CR2: 000055570fe84cc8 CR3: 0000000152540006 CR4: 00000000003706f0
[ 109.450723] Kernel panic - not syncing: Fatal exception in interrupt
[ 109.450794] Kernel Offset: 0x34e00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 109.450837] Rebooting in 10 seconds..
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
WARNING: multiple messages have this Message-ID (diff)
From: Kalle Valo <kvalo@kernel.org>
To: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
Cc: <ath11k@lists.infradead.org>, <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH v2 3/4] ath11k: Enable low power mode when WLAN is not active
Date: Wed, 31 Aug 2022 11:01:36 +0300 [thread overview]
Message-ID: <874jxsdeov.fsf@kernel.org> (raw)
In-Reply-To: <20220825111818.30869-4-quic_mpubbise@quicinc.com> (Manikanta Pubbisetty's message of "Thu, 25 Aug 2022 16:48:17 +0530")
Manikanta Pubbisetty <quic_mpubbise@quicinc.com> writes:
> Currently, WLAN chip is powered once during driver probe and is kept
> ON (powered) always even when WLAN is not active; keeping the chip
> powered ON all the time will consume extra power which is not
> desirable for a battery operated device. Same is the case with non-WoW
> suspend, chip will never be put into low power mode when the system is
> suspended resulting in higher battery drain.
>
> As per the recommendation, sending a PDEV suspend WMI command followed
> by a QMI MODE OFF command will cease all WLAN activity and put the device
> in low power mode. When WLAN interfaces are brought up, sending a QMI
> MISSION MODE command would be sufficient to bring the chip out of low
> power. This is a better approach than doing hif_power_down()/hif_power_up()
> for every WiFi ON/OFF sequence since the turnaround time for entry/exit of
> low power mode is much less. Overhead is just the time taken for sending
> QMI MODE OFF & QMI MISSION MODE commands instead of going through the
> entire chip boot & QMI init sequence.
>
> Currently the changes are applicable only for WCN6750. This can be
> extended to other targets with a future patch.
>
> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
>
> Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
With this patch 3 my regression tests on WCN6855 panic:
[ 109.009427] rmmod ath11k_pci
[ 109.437120] kworker/dying (1560) used greatest stack depth: 24704 bytes left
[ 109.446051] general protection fault, probably for non-canonical address 0xdffffc000000003e: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN
[ 109.446133] KASAN: null-ptr-deref in range [0x00000000000001f0-0x00000000000001f7]
[ 109.446211] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.0.0-rc2-wt-ath+ #683
[ 109.446315] Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021
[ 109.446393] RIP: 0010:ath11k_dp_process_rxdma_err+0x1c8/0x810 [ath11k]
[ 109.446486] Code: d2 48 63 d8 48 8b 4c 24 38 48 8d 04 5b 48 c1 e0 04 48 8d bc 01 f4 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 aa
[ 109.446557] RSP: 0018:ffffc90000007b90 EFLAGS: 00010203
[ 109.446619] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
[ 109.446677] RDX: 000000000000003e RSI: 0000000000000000 RDI: 00000000000001f4
[ 109.446734] RBP: 0000000000000000 R08: ffff88814c0e1470 R09: ffff88814c0f6678
[ 109.446792] R10: dffffc0000000000 R11: ffffed102981ecd0 R12: 0000000000000000
[ 109.446903] R13: 0000000000000040 R14: 1ffff92000000f81 R15: ffff88814c0e0000
[ 109.446961] FS: 0000000000000000(0000) GS:ffff888233600000(0000) knlGS:0000000000000000
[ 109.447020] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 109.447080] CR2: 000055570fe84cc8 CR3: 0000000152540006 CR4: 00000000003706f0
[ 109.447136] Call Trace:
[ 109.447194] <IRQ>
[ 109.447257] ? ath11k_dp_process_reo_status+0x3ce/0x560 [ath11k]
[ 109.447349] ? ath11k_dp_rx_process_wbm_err+0x17d0/0x17d0 [ath11k]
[ 109.447442] ath11k_dp_service_srng+0x358/0xab0 [ath11k]
[ 109.447536] ath11k_pcic_ext_grp_napi_poll+0x40/0x1d0 [ath11k]
[ 109.447628] __napi_poll.constprop.0+0x97/0x350
[ 109.447690] net_rx_action+0x7bf/0xbb0
[ 109.447749] ? __napi_poll.constprop.0+0x350/0x350
[ 109.447831] ? ktime_get+0x101/0x2f0
[ 109.447911] __do_softirq+0x1ca/0x897
[ 109.447989] __irq_exit_rcu+0xdb/0x180
[ 109.448049] irq_exit_rcu+0x5/0x20
[ 109.448109] sysvec_apic_timer_interrupt+0x8a/0xb0
[ 109.448168] </IRQ>
[ 109.448226] <TASK>
[ 109.448284] asm_sysvec_apic_timer_interrupt+0x16/0x20
[ 109.448343] RIP: 0010:cpuidle_enter_state+0x1ef/0x9a0
[ 109.448407] Code: 00 00 8b 73 04 bf ff ff ff ff e8 8c f0 ff ff 31 ff e8 75 16 47 fe 80 7c 24 08 00 0f 85 a1 01 00 00 e8 75 7d 6a fe fb 45 85 f6 <0f> 88 6f 02 00 00 4d 63 ee 4b 8d 44 6d 00 49 8d 44 85 00 48 8d 7c
[ 109.448477] RSP: 0018:ffffffffb9407db8 EFLAGS: 00000202
[ 109.448540] RAX: 0000000000124987 RBX: ffff888114966400 RCX: 1ffffffff738a3e1
[ 109.448600] RDX: 0000000000000000 RSI: ffffffffb8a71bc0 RDI: ffffffffb8bec9c0
[ 109.448659] RBP: ffffffffb986efa0 R08: 0000000000000001 R09: ffffffffb9c54717
[ 109.448715] R10: fffffbfff738a8e2 R11: 00000000000002ec R12: 000000197b7a6a19
[ 109.448774] R13: 0000000000000002 R14: 0000000000000002 R15: ffff888114966404
[ 109.448871] ? cpuidle_enter_state+0x1eb/0x9a0
[ 109.448947] ? finish_task_switch.isra.0+0x120/0x870
[ 109.449006] cpuidle_enter+0x45/0xa0
[ 109.449065] cpuidle_idle_call+0x274/0x3f0
[ 109.449125] ? arch_cpu_idle_exit+0x30/0x30
[ 109.449187] ? tsc_verify_tsc_adjust+0x86/0x2d0
[ 109.449247] ? lockdep_hardirqs_off+0x90/0xd0
[ 109.449306] do_idle+0xe0/0x140
[ 109.449363] cpu_startup_entry+0x14/0x20
[ 109.449423] rest_init+0x135/0x1e0
[ 109.449482] arch_call_rest_init+0xa/0xb
[ 109.449542] start_kernel+0x391/0x3af
[ 109.449606] secondary_startup_64_no_verify+0xce/0xdb
[ 109.449671] </TASK>
[ 109.449729] Modules linked in: ath11k_pci(-) ath11k mac80211 libarc4 cfg80211 qmi_helpers qrtr_mhi mhi qrtr nvme nvme_core
[ 109.449846] ---[ end trace 0000000000000000 ]---
[ 109.449927] RIP: 0010:ath11k_dp_process_rxdma_err+0x1c8/0x810 [ath11k]
[ 109.450073] Code: d2 48 63 d8 48 8b 4c 24 38 48 8d 04 5b 48 c1 e0 04 48 8d bc 01 f4 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 aa
[ 109.450147] RSP: 0018:ffffc90000007b90 EFLAGS: 00010203
[ 109.450212] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
[ 109.450275] RDX: 000000000000003e RSI: 0000000000000000 RDI: 00000000000001f4
[ 109.450337] RBP: 0000000000000000 R08: ffff88814c0e1470 R09: ffff88814c0f6678
[ 109.450401] R10: dffffc0000000000 R11: ffffed102981ecd0 R12: 0000000000000000
[ 109.450465] R13: 0000000000000040 R14: 1ffff92000000f81 R15: ffff88814c0e0000
[ 109.450531] FS: 0000000000000000(0000) GS:ffff888233600000(0000) knlGS:0000000000000000
[ 109.450595] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 109.450661] CR2: 000055570fe84cc8 CR3: 0000000152540006 CR4: 00000000003706f0
[ 109.450723] Kernel panic - not syncing: Fatal exception in interrupt
[ 109.450794] Kernel Offset: 0x34e00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 109.450837] Rebooting in 10 seconds..
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply other threads:[~2022-08-31 8:08 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-25 11:18 [PATCH v2 0/4] ath11k: Enable low power mode when WLAN is not active Manikanta Pubbisetty
2022-08-25 11:18 ` Manikanta Pubbisetty
2022-08-25 11:18 ` [PATCH v2 1/4] ath11k: Fix double free issue during SRNG deinit Manikanta Pubbisetty
2022-08-25 11:18 ` Manikanta Pubbisetty
2022-08-25 14:59 ` Jeff Johnson
2022-08-25 14:59 ` Jeff Johnson
2022-08-29 5:31 ` Manikanta Pubbisetty
2022-08-29 5:31 ` Manikanta Pubbisetty
2022-08-25 11:18 ` [PATCH v2 2/4] ath11k: Move hardware initialization logic to start() Manikanta Pubbisetty
2022-08-25 11:18 ` Manikanta Pubbisetty
2022-08-25 11:18 ` [PATCH v2 3/4] ath11k: Enable low power mode when WLAN is not active Manikanta Pubbisetty
2022-08-25 11:18 ` Manikanta Pubbisetty
2022-08-31 8:01 ` Kalle Valo [this message]
2022-08-31 8:01 ` Kalle Valo
2022-09-01 8:13 ` Manikanta Pubbisetty
2022-09-01 8:13 ` Manikanta Pubbisetty
2022-09-02 13:18 ` Kalle Valo
2022-09-02 13:18 ` Kalle Valo
2022-09-02 13:25 ` Manikanta Pubbisetty
2022-09-02 13:25 ` Manikanta Pubbisetty
2022-11-21 10:56 ` Manikanta Pubbisetty
2022-11-21 10:56 ` Manikanta Pubbisetty
2022-08-25 11:18 ` [PATCH v2 4/4] ath11k: Fix failed to parse regulatory event print Manikanta Pubbisetty
2022-08-25 11:18 ` Manikanta Pubbisetty
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874jxsdeov.fsf@kernel.org \
--to=kvalo@kernel.org \
--cc=ath11k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_mpubbise@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.