Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae779300 authored by Mel Gorman's avatar Mel Gorman Committed by Rafael J. Wysocki
Browse files

cpuidle: menu: Use shifts when calculating averages where possible



We use do_div even though the divisor will usually be a power-of-two
unless there are unusual outliers. Use shifts where possible

Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent dd38c9d3
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -31,7 +31,8 @@
 * The default values do not overflow.
 */
#define BUCKETS 12
#define INTERVALS 8
#define INTERVAL_SHIFT 3
#define INTERVALS (1UL << INTERVAL_SHIFT)
#define RESOLUTION 1024
#define DECAY 8
#define MAX_INTERESTING 50000
@@ -227,6 +228,9 @@ static void get_typical_interval(struct menu_device *data)
				max = value;
		}
	}
	if (divisor == INTERVALS)
		avg >>= INTERVAL_SHIFT;
	else
		do_div(avg, divisor);

	/* Then try to determine standard deviation */
@@ -238,7 +242,11 @@ static void get_typical_interval(struct menu_device *data)
			stddev += diff * diff;
		}
	}
	if (divisor == INTERVALS)
		stddev >>= INTERVAL_SHIFT;
	else
		do_div(stddev, divisor);

	/*
	 * The typical interval is obtained when standard deviation is small
	 * or standard deviation is small compared to the average interval.