aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMel Gorman <mgorman@suse.de>2014-08-06 09:19:18 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-08-06 15:17:44 -0400
commitae77930060338226a4377d3b93580c43b5ec82ae (patch)
tree161b93ae479de6e0cea6007e9b01819287cc82fc
parentdd38c9d35ba8e40011b36659cae2719aefd11904 (diff)
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: Mel Gorman <mgorman@suse.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/cpuidle/governors/menu.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
index c3732fa74f82..c36e1ea7ef08 100644
--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -31,7 +31,8 @@
31 * The default values do not overflow. 31 * The default values do not overflow.
32 */ 32 */
33#define BUCKETS 12 33#define BUCKETS 12
34#define INTERVALS 8 34#define INTERVAL_SHIFT 3
35#define INTERVALS (1UL << INTERVAL_SHIFT)
35#define RESOLUTION 1024 36#define RESOLUTION 1024
36#define DECAY 8 37#define DECAY 8
37#define MAX_INTERESTING 50000 38#define MAX_INTERESTING 50000
@@ -227,7 +228,10 @@ again:
227 max = value; 228 max = value;
228 } 229 }
229 } 230 }
230 do_div(avg, divisor); 231 if (divisor == INTERVALS)
232 avg >>= INTERVAL_SHIFT;
233 else
234 do_div(avg, divisor);
231 235
232 /* Then try to determine standard deviation */ 236 /* Then try to determine standard deviation */
233 stddev = 0; 237 stddev = 0;
@@ -238,7 +242,11 @@ again:
238 stddev += diff * diff; 242 stddev += diff * diff;
239 } 243 }
240 } 244 }
241 do_div(stddev, divisor); 245 if (divisor == INTERVALS)
246 stddev >>= INTERVAL_SHIFT;
247 else
248 do_div(stddev, divisor);
249
242 /* 250 /*
243 * The typical interval is obtained when standard deviation is small 251 * The typical interval is obtained when standard deviation is small
244 * or standard deviation is small compared to the average interval. 252 * or standard deviation is small compared to the average interval.