linux-uconsole/drivers/base/power
Prasad Sodagudi c63df77c40 PM: sleep: core: Avoid setting power.must_resume to false
commit 4a9344cd0a upstream.

There are variables(power.may_skip_resume and dev->power.must_resume)
and DPM_FLAG_MAY_SKIP_RESUME flags to control the resume of devices after
a system wide suspend transition.

Setting the DPM_FLAG_MAY_SKIP_RESUME flag means that the driver allows
its "noirq" and "early" resume callbacks to be skipped if the device
can be left in suspend after a system-wide transition into the working
state. PM core determines that the driver's "noirq" and "early" resume
callbacks should be skipped or not with dev_pm_skip_resume() function by
checking power.may_skip_resume variable.

power.must_resume variable is getting set to false in __device_suspend()
function without checking device's DPM_FLAG_MAY_SKIP_RESUME settings.
In problematic scenario, where all the devices in the suspend_late
stage are successful and some device can fail to suspend in
suspend_noirq phase. So some devices successfully suspended in suspend_late
stage are not getting chance to execute __device_suspend_noirq()
to set dev->power.must_resume variable to true and not getting
resumed in early_resume phase.

Add a check for device's DPM_FLAG_MAY_SKIP_RESUME flag before
setting power.must_resume variable in __device_suspend function.

Fixes: 6e176bf8d4 ("PM: sleep: core: Do not skip callbacks in the resume phase")
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-26 14:08:58 +02:00
..
clock_ops.c PM / clk: Remove error message on out-of-memory condition 2019-05-28 19:40:21 +02:00
common.c PM / Domains: Introduce dev_pm_domain_start() 2019-11-13 11:41:50 +01:00
domain.c PM: domains: Fix build error for genpd notifiers 2020-10-20 19:40:54 +02:00
domain_governor.c PM: domains: Fix up terminology with parent/child 2020-07-09 14:24:00 +02:00
generic_ops.c drivers: base: power: add proper SPDX identifiers on files that did not have them. 2019-04-04 20:03:40 +02:00
main.c PM: sleep: core: Avoid setting power.must_resume to false 2021-09-26 14:08:58 +02:00
Makefile PM / QoS: Initial kunit test 2019-11-29 12:04:49 +01:00
power.h drivers/base/power: add dpm_sysfs_change_owner() 2020-02-26 20:07:25 -08:00
qos-test.c kunit: allow kunit tests to be loaded as a module 2020-01-09 16:42:29 -07:00
qos.c PM / QoS: Restore DEV_PM_QOS_MIN/MAX_FREQUENCY 2019-11-29 12:04:50 +01:00
runtime.c PM: runtime: Fix unpaired parent child_count for force_resume 2021-05-19 10:12:51 +02:00
sysfs.c drivers core: Miscellaneous changes for sysfs_emit 2020-10-02 13:12:07 +02:00
trace.c PM: base: power: don't try to use non-existing RTC for storing data 2021-09-22 12:27:54 +02:00
wakeirq.c PM / wakeirq: remove unnecessary parentheses 2019-11-13 11:31:08 +01:00
wakeup.c PM: sleep: wakeup: Skip wakeup_source_sysfs_remove() if device is not there 2020-03-25 11:15:55 +01:00
wakeup_stats.c drivers core: Miscellaneous changes for sysfs_emit 2020-10-02 13:12:07 +02:00