Final power management fixes for 3.15

 - Taking non-idle time into account when calculating core busy
   time was a mistake and led to a performance regression.  Since
   the problem it was supposed to address is now taken care of in
   a different way, we don't need to do it any more, so drop the
   non-idle time tracking from intel_pstate.  Dirk Brandewie.

 - Changing to fixed point math throughout the busy calculation
   introduced rounding errors that adversely affect the accuracy
   of intel_pstate's computations.  Fix from Dirk Brandewie.

 - The PID controller algorithm used by intel_pstate assumes that
   the time interval between two adjacent samples will always be the
   same which is not the case for deferable timers (used by
   intel_pstate) when the system is idle. This leads to inaccurate
   predictions and artificially increases convergence times for
   the minimum P-state.  Fix from Dirk Brandewie.

 - intel_pstate carries out computations using 32-bit variables
   that may overflow for large enough values of APERF/MPERF.  Switch
   to using 64-bit variables for computations, from Doug Smythies.

/
intel_pstate: Improve initial busy calculation

This change makes the busy calculation using 64 bit math which prevents
overflow for large values of aperf/mperf.

Cc: 3.14+ <stable@vger.kernel.org> # 3.14+
Signed-off-by: Doug Smythies <dsmythies@telus.net>
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 file changed