Re: [PATCH] cpufreq: skip cpufreq resume if it's not suspended
From: Rafael J. Wysocki <hidden>
Date: 2018-02-05 08:52:15
Also in:
lkml
On Monday, February 5, 2018 5:01:18 AM CET Viresh Kumar wrote:
On 02-02-18, 13:28, Bo Yan wrote:quoted
On 02/02/2018 11:34 AM, Saravana Kannan wrote:quoted
I rather have this fixed in the dpm_suspend/resume() code. This is just masking the first issue that's being caused by unbalanced error handling. If that means adding flags in dpm_suspend/resume() then that's what we should do right now and clean it up later if it can be improved. Making cpufreq more messy doesn't seem like the right answer.+1quoted
dpm_suspend and dpm_resume by themselves are not balanced in this particular case. As it's currently structured, dpm_resume can't be omitted even if dpm_suspend is skipped due to earlier failure. I think checking cpufreq_suspended flag is a reasonable compromise. If we can find a way to make dpm_suspend/dpm_resume also balanced, that will be best.I think cpufreq is just one of the users which broke. Others didn't break because: - They don't have a complicated resume part. - Or we just don't know that they broke.
No and no.
Resuming something that never suspended is just broken by design. Yeah, its much simpler in this particular case to fix cpufreq core but the suspend/resume/hibernation part is really core kernel and should be fixed to avoid such band-aids.
By design (which I admit may be confusing) it should be fine to call dpm_resume_end() after a failing dpm_suspend_start(), whatever the reason for the failure is. cpufreq_suspend/resume() don't take that into account, everybody else does. Thanks, Rafael