[CPUFREQ][4/6] cpufreq_ondemand: Parameterize down differential
authorvenkatesh.pallipadi@intel.com <venkatesh.pallipadi@intel.com>
Mon, 4 Aug 2008 18:59:10 +0000 (11:59 -0700)
committerDave Jones <davej@redhat.com>
Thu, 9 Oct 2008 17:52:44 +0000 (13:52 -0400)
Use a parameter for down differential, instead of hardcoded 10%. Follow-on
patch changes the down-differential dynamically, based on whether
we are using idle micro-accounting or not.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Dave Jones <davej@redhat.com>
drivers/cpufreq/cpufreq_ondemand.c

index b935092..3f89860 100644 (file)
@@ -24,6 +24,7 @@
  * It helps to keep variable names smaller, simpler
  */
 
+#define DEF_FREQUENCY_DOWN_DIFFERENTIAL                (10)
 #define DEF_FREQUENCY_UP_THRESHOLD             (80)
 #define MIN_FREQUENCY_UP_THRESHOLD             (11)
 #define MAX_FREQUENCY_UP_THRESHOLD             (100)
@@ -86,10 +87,12 @@ static struct workqueue_struct      *kondemand_wq;
 static struct dbs_tuners {
        unsigned int sampling_rate;
        unsigned int up_threshold;
+       unsigned int down_differential;
        unsigned int ignore_nice;
        unsigned int powersave_bias;
 } dbs_tuners_ins = {
        .up_threshold = DEF_FREQUENCY_UP_THRESHOLD,
+       .down_differential = DEF_FREQUENCY_DOWN_DIFFERENTIAL,
        .ignore_nice = 0,
        .powersave_bias = 0,
 };
@@ -424,9 +427,13 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
         * can support the current CPU usage without triggering the up
         * policy. To be safe, we focus 10 points under the threshold.
         */
-       if (max_load_freq < (dbs_tuners_ins.up_threshold - 10) * policy->cur) {
+       if (max_load_freq <
+           (dbs_tuners_ins.up_threshold - dbs_tuners_ins.down_differential) *
+            policy->cur) {
                unsigned int freq_next;
-               freq_next = max_load_freq / (dbs_tuners_ins.up_threshold - 10);
+               freq_next = max_load_freq /
+                               (dbs_tuners_ins.up_threshold -
+                                dbs_tuners_ins.down_differential);
 
                if (!dbs_tuners_ins.powersave_bias) {
                        __cpufreq_driver_target(policy, freq_next,