From b595a66a0be0e99da8854d4ff7693193e6ac1a81 Mon Sep 17 00:00:00 2001 From: German Monroy Date: Mon, 14 May 2012 17:14:19 -0700 Subject: [PATCH] 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 --- arch/x86/kernel/process_32.c | 2 ++ 1 file changed, 2 insertions(+) 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(); -- 2.34.1