cpufreq interactive governor: fix crash on CPU shutdown
authorTodd Poynor <toddpoynor@google.com>
Fri, 24 Dec 2010 01:33:07 +0000 (17:33 -0800)
committerColin Cross <ccross@android.com>
Tue, 14 Jun 2011 16:09:41 +0000 (09:09 -0700)
commit9b6f4a382dda68d41cbbd739095db3fd36f55f6b
tree53966c0b5229c14572daa0327069f4cb6ccad5a2
parent320faa1750fb0d8a7312f194c62beb952afddcab
cpufreq interactive governor: fix crash on CPU shutdown

Don't reference the saved copy of the CPU's cpufreq policy
pointer after the governor has been stopped for the CPU.

When the governor is stopped for a CPU:

* Use del_timer_sync() to wait for a currently-running timer
function to stop.

* Delete the timer when the governor is stopped for the
associated CPU, not when the last CPU is stopped.

* Flush any speed down work ongoing.

* Reset the timestamp that is used to tell if the timer function
has had a chance to run since last idle exit.

Check the governor enabled flag for the CPU before re-arming the
timer from within the timer function and at idle exit (in case
stopping the governor at runtime).

Check the governor enabled flag for the CPU in the worker
function and thread before using the policy pointer.  (There is
still a tiny window in the thread that needs more work to close.)

Change-Id: Ifaddf7a495a8dae15a579a57bdc654f7c47f6ada
Signed-off-by: Todd Poynor <toddpoynor@google.com>
drivers/cpufreq/cpufreq_interactive.c