diff options
author | German Monroy <german.monroy@intel.com> | 2012-05-14 17:14:19 -0700 |
---|---|---|
committer | Todd Poynor <toddpoynor@google.com> | 2012-07-16 13:40:02 -0700 |
commit | b595a66a0be0e99da8854d4ff7693193e6ac1a81 (patch) | |
tree | 1db35408480f51f01acf817ded31f86f2aa9d732 /arch | |
parent | 66943ea3526d56b35880f962094ae29b1ded1d06 (diff) | |
download | kernel_samsung_crespo-b595a66a0be0e99da8854d4ff7693193e6ac1a81.zip kernel_samsung_crespo-b595a66a0be0e99da8854d4ff7693193e6ac1a81.tar.gz kernel_samsung_crespo-b595a66a0be0e99da8854d4ff7693193e6ac1a81.tar.bz2 |
x86: Call idle notifiers
BZ: 35303
Google patched the idle loop for x86-64 (commit 1fd57f722c) and for ARM
(commit 41fa406c26), but they forgot x86-32.
This is preventing their interactive governor from upshifting CPU
frequencies in intel's SOC platforms (e.g. Medfield, etc.).
Fixing that.
NOTE: The notifier calls are not located in the same exact place in the
idle loop for x86-64 and ARM. The notifier is called inside the
`while(!need_resched)' loop in x86-64 and outside of it in ARM. Since
Google has likely tuned this governor for ARM, leaving it as in ARM.
Change-Id: Ibefd0c8f08e4b4c24c4a5c32dcdc574f9090b2b9
Signed-off-by: German Monroy <german.monroy@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/process_32.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index fcdb1b3..12dae34 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@ -98,6 +98,7 @@ void cpu_idle(void) /* endless idle loop with no priority at all */ while (1) { tick_nohz_stop_sched_tick(1); + idle_notifier_call_chain(IDLE_START); while (!need_resched()) { check_pgt_cache(); @@ -112,6 +113,7 @@ void cpu_idle(void) pm_idle(); start_critical_timings(); } + idle_notifier_call_chain(IDLE_END); tick_nohz_restart_sched_tick(); preempt_enable_no_resched(); schedule(); |