summaryrefslogtreecommitdiffstats
path: root/kernel/power
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-05-05 00:51:54 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-05-07 01:49:28 +0200
commita6220fc19afc07fe77cfd16f5b8e568615517091 (patch)
tree1f79cd9dc6610db3ca394dcd4f61a3b109d1069d /kernel/power
parentcpuidle / menu: move repeated correction factor check to init (diff)
downloadlinux-a6220fc19afc07fe77cfd16f5b8e568615517091.tar.xz
linux-a6220fc19afc07fe77cfd16f5b8e568615517091.zip
PM / suspend: Always use deepest C-state in the "freeze" sleep state
If freeze_enter() is called, we want to bypass the current cpuidle governor and always use the deepest available (that is, not disabled) C-state, because we want to save as much energy as reasonably possible then and runtime latency constraints don't matter at that point, since the system is in a sleep state anyway. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Tested-by: Aubrey Li <aubrey.li@linux.intel.com>
Diffstat (limited to 'kernel/power')
-rw-r--r--kernel/power/suspend.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 8233cd4047d7..155721f7f909 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -54,9 +54,11 @@ static void freeze_begin(void)
static void freeze_enter(void)
{
+ cpuidle_use_deepest_state(true);
cpuidle_resume();
wait_event(suspend_freeze_wait_head, suspend_freeze_wake);
cpuidle_pause();
+ cpuidle_use_deepest_state(false);
}
void freeze_wake(void)