linux-uconsole/drivers/base/power
Mark Brown adb665056a cpufreq: suspend governors on system suspend/hibernate
This patch adds cpufreq suspend/resume calls to dpm_{suspend|resume}()
for handling suspend/resume of cpufreq governors.

Lan Tianyu (Intel) & Jinhyuk Choi (Broadcom) found an issue where the
tunables configuration for clusters/sockets with non-boot CPUs was
lost after system suspend/resume, as we were notifying governors with
CPUFREQ_GOV_POLICY_EXIT on removal of the last CPU for that policy
which caused the tunables memory to be freed.

This is fixed by preventing any governor operations from being
carried out between the device suspend and device resume stages of
system suspend and resume, respectively.

We could have added these callbacks at dpm_{suspend|resume}_noirq()
level, but there is an additional problem that the majority of I/O
devices is already suspended at that point and if cpufreq drivers
want to change the frequency before suspending, then that not be
possible on some platforms (which depend on peripherals like i2c,
regulators, etc).

Reported-and-tested-by: Lan Tianyu <tianyu.lan@intel.com>
Reported-by: Jinhyuk Choi <jinchoi@broadcom.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[rjw: Changelog]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry-picked from 2f0aea9363)
Signed-off-by: Mark Brown <broonie@linaro.org>
2014-04-23 23:54:52 +01:00
..
clock_ops.c base: power - use clk_prepare_enable and clk_prepare_disable 2012-11-15 00:36:43 +01:00
common.c PM: Avoid calling kfree() under spinlock in dev_pm_put_subsys_data() 2013-05-12 14:04:40 +02:00
domain.c PM / Runtime: Improve prepare handling at system suspend for genpd 2013-04-12 13:34:57 +02:00
domain_governor.c PM / Domains: Fix computation of maximum domain off time 2012-05-11 21:11:44 +02:00
generic_ops.c PM / Runtime: Asyncronous idle|suspend devices at system resume 2013-04-12 13:34:57 +02:00
main.c cpufreq: suspend governors on system suspend/hibernate 2014-04-23 23:54:52 +01:00
Makefile PM / Domains: Add device stop governor function (v4) 2011-12-01 21:47:40 +01:00
opp.c PM / OPP: add documentation to RCU head in struct opp 2013-04-05 14:22:59 +02:00
power.h PM / QoS: Remove device PM QoS sysfs attributes at the right place 2013-03-04 14:23:12 +01:00
qos.c PM / QoS: Avoid possible deadlock related to sysfs access 2013-04-02 01:25:24 +02:00
runtime.c PM / Runtime: Asyncronous idle|suspend parent devices at removal 2013-04-12 13:34:57 +02:00
sysfs.c PM / QoS: Remove device PM QoS sysfs attributes at the right place 2013-03-04 14:23:12 +01:00
trace.c drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. 2011-10-31 19:31:38 -04:00
wakeup.c PM: Introduce suspend state PM_SUSPEND_FREEZE 2013-02-09 22:30:44 +01:00