---
 drivers/cpuidle/governors/menu.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -116,6 +116,7 @@ static void menu_update(struct cpuidle_d
 static unsigned int get_typical_interval(struct menu_device *data)
 {
 	s64 value, min_thresh = -1, max_thresh = UINT_MAX;
+	unsigned int max_overall = 0;
 	unsigned int max, min, divisor;
 	u64 avg, variance, avg_sq;
 	int i;
@@ -151,6 +152,9 @@ again:
 	if (!max)
 		return UINT_MAX;
 
+	if (max_overall < max)
+		max_overall = max;
+
 	if (divisor == INTERVALS) {
 		avg >>= INTERVAL_SHIFT;
 		variance >>= INTERVAL_SHIFT;
@@ -198,7 +202,7 @@ again:
 		 * maximum, so return the latter in that case.
 		 */
 		if (divisor >= INTERVALS / 2)
-			return max;
+			return max_overall;
 
 		return UINT_MAX;
 	}
