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