Changes include:
* May scale up to intermediate speeds after scaling down, rather than
scale to max speed and then only scale down until max speed needed.
* Tweaked thresholds at which max speed requested (previously CPU must
have been 100% busy since idle exit timer started, now will go max if at
least 85% busy) and default minimum sample time raised to 80ms. Tweaking
based on UI tests, still in progress.
* SMP fixes.
* Fixed attempted multiple delete of sysfs group on governor stop.
Set a just-in-case-CPU-goes-busy-again timer even if nr_running == 0 at
timer function run time, but cancel if that CPU goes idle (and don't
re-arm timer if that CPU is currently idle).
* Re-evaluate speed if a CPU goes idle while above min speed (and no timer
currently set) in case the platform requires all CPUs to be at the same
speed.
* Realtime workqueues disappeared upstream, convert speed up workqueue to
a realtime task. Average scheduling latency measured significantly less
than WQ_HIGHPRI.
* Timers are not deferrable, must wake CPU from idle, since we now
re-evaluate speed for idle CPUs.
* CPU load is computed from higher of short-term load since idle exit vs.
long-term load since last frequency change, to avoid dropping speed
during temporary dips in load on long-term-busy CPU.
* Avoid 1 CPU starting new idle exit load eval interval in a race with
timer running on another CPU.
* New fugly debugging printfs should be reworked or go away eventually.
Change-Id: I606b5c1850637c35a7814309df12362d5c044825
via: https://review.source.android.com//#change,15809