This patch prevents cpuidle menu governor from using repeating interval
prediction result if the idle period predicted is longer than the one
allowed by shortest running timer.
Signed-off-by: Tuukka Tikkanen <tuukka.tikkanen@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
*
* The typical interval is obtained when standard deviation is small
* or standard deviation is small compared to the average interval.
+ *
+ * Use this result only if there is no timer to wake us up sooner.
*/
if (((avg > stddev * 6) && (divisor * 4 >= INTERVALS * 3))
|| stddev <= 20) {
- data->predicted_us = avg;
+ if (data->expected_us > avg)
+ data->predicted_us = avg;
return;
} else if ((divisor * 4) > INTERVALS * 3) {