Forums - The Qualcomm msm8909w SoC doesn't enter suspend mode

1 post / 0 new
The Qualcomm msm8909w SoC doesn't enter suspend mode
ofirc1
Join Date: 12 Oct 20
Posts: 1
Posted: Mon, 2020-10-12 08:09
The Qualcomm msm8909w SoC doesn't enter suspend mode
 
Hello,
I'm trying to get my Qualcomm msm8909w SoC [1] to enter sleep (to ram) state but I fail, need your advice on why it would fail / wakeup continuously.
 
 
-----------
Problem
-----------
No matter how hard I try it either:
* Keeps waking up shortly after it goes to suspend mode
(suspend_ops->enter(state)), or
* It doesn't enter sleep mode at all.
 
This is what you see from ftrace:
(/sys/kernel/debug/tracing/trace):
              sh-2073  [001] d..1 23035.549297: suspend_resume:
machine_suspend[3] begin
              sh-2073  [001] d..1 23035.549297: suspend_resume:
machine_suspend[3] end
 
Notice no diff in the timestamp, the suspend_ops->enter should have
blocked indefinitely until the next real interrupt arrives (e.g.
keyboard event / network event / power button press).
 
It's hard to tell the reason why, really. The only thing I have is the
ftrace traces (more on that at the bottom of the thread).
 
Since you won't find a call to WFI ARM instruction to sleep, and the
sleep is managed by Qualcomm's proprietary closed firmware blob, I
could really use some advice here from ARM / QCOM people on tracing
the culprit that keeps the SoC awake.

 

-------------
Call stack
-------------
#-1 arm_proprietary_secure_firmware()
    Here we are in the "ARM Secure Zone" with a proprietary closed firmware blob
    that is supposed to drive the core to a deep sleep.
    I'm guessing that under the hood it should call:
    wfi // for each core sleep mode
 
#0 scm_call_atomic1 (scm.c), (called with SCM_SVC_BOOT,
SCM_CMD_TERMINATE_PC, flag)
#1 msm_pm_collapse (msm-pm.c)
#2 __cpu_suspend_enter (sleep.S)
#3 __cpu_suspend (suspend.c)
#4 msm_pm_spm_power_collapse (msm-pm.c)
#5 msm_pm_power_collapse (msm-pm.c), (called with mode ==
MSM_PM_SLEEP_MODE_POWER_COLLAPSE)
#6 msm_cpu_pm_enter_sleep (msm-pm.c)
#7 lpm_suspend_enter (lpm-levels.c)
#8 suspend_enter (suspend.c) (called with PM_SUSPEND_MEM)
 
 
 
Appreciate your input.
  • Up0
  • Down0

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.