aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-05-22 04:37:06 -0400
committerIngo Molnar <mingo@kernel.org>2014-05-22 04:37:06 -0400
commitec6e7f4082aa0c6c4334149e74673b6ed736fb63 (patch)
tree0facf7775816261ffeeb9bb61468f9075d63cfb6 /kernel
parent65c2ce70046c779974af8b5dfc25a0df489089b5 (diff)
parenta6220fc19afc07fe77cfd16f5b8e568615517091 (diff)
Merge branch 'pm-cpuidle' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm into sched/core
Pull scheduling related CPU idle updates from Rafael J. Wysocki. Conflicts: kernel/sched/idle.c Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/power/suspend.c2
-rw-r--r--kernel/sched/idle.c13
2 files changed, 6 insertions, 9 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)
54 54
55static void freeze_enter(void) 55static void freeze_enter(void)
56{ 56{
57 cpuidle_use_deepest_state(true);
57 cpuidle_resume(); 58 cpuidle_resume();
58 wait_event(suspend_freeze_wait_head, suspend_freeze_wake); 59 wait_event(suspend_freeze_wait_head, suspend_freeze_wake);
59 cpuidle_pause(); 60 cpuidle_pause();
61 cpuidle_use_deepest_state(false);
60} 62}
61 63
62void freeze_wake(void) 64void freeze_wake(void)
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 34083c9ac976..25b9423abce9 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -98,10 +98,11 @@ static void cpuidle_idle_call(void)
98 rcu_idle_enter(); 98 rcu_idle_enter();
99 99
100 /* 100 /*
101 * Check if the cpuidle framework is ready, otherwise fallback 101 * Ask the cpuidle framework to choose a convenient idle state.
102 * to the default arch specific idle method 102 * Fall back to the default arch idle method on errors.
103 */ 103 */
104 if (cpuidle_enabled(drv, dev)) { 104 next_state = cpuidle_select(drv, dev);
105 if (next_state < 0) {
105use_default: 106use_default:
106 /* 107 /*
107 * We can't use the cpuidle framework, let's use the default 108 * We can't use the cpuidle framework, let's use the default
@@ -115,12 +116,6 @@ use_default:
115 goto exit_idle; 116 goto exit_idle;
116 } 117 }
117 118
118 /*
119 * Ask the governor to choose an idle state it thinks
120 * it is convenient to go to. There is *always* a
121 * convenient idle state
122 */
123 next_state = cpuidle_select(drv, dev);
124 119
125 /* 120 /*
126 * The idle task must be scheduled, it is pointless to 121 * The idle task must be scheduled, it is pointless to