From: German Monroy Date: Tue, 15 May 2012 00:14:19 +0000 (-0700) Subject: x86: Call idle notifiers X-Git-Tag: firefly_0821_release~7613^2~74 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b595a66a0be0e99da8854d4ff7693193e6ac1a81;p=firefly-linux-kernel-4.4.55.git 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 --- diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index fcdb1b34aa1c..12dae34bbe1d 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();