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>
/* 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();
pm_idle();
start_critical_timings();
}
+ idle_notifier_call_chain(IDLE_END);
tick_nohz_restart_sched_tick();
preempt_enable_no_resched();
schedule();