|
@@ -48,7 +48,10 @@
|
|
|
* All times here are in uS.
|
|
|
*/
|
|
|
static unsigned int def_sampling_rate;
|
|
|
-#define MIN_SAMPLING_RATE (def_sampling_rate / 2)
|
|
|
+#define MIN_SAMPLING_RATE_RATIO (2)
|
|
|
+/* for correct statistics, we need at least 10 ticks between each measure */
|
|
|
+#define MIN_STAT_SAMPLING_RATE (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
|
|
|
+#define MIN_SAMPLING_RATE (def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
|
|
|
#define MAX_SAMPLING_RATE (500 * def_sampling_rate)
|
|
|
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
|
|
|
#define DEF_SAMPLING_DOWN_FACTOR (1)
|
|
@@ -416,13 +419,16 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
|
|
|
if (dbs_enable == 1) {
|
|
|
unsigned int latency;
|
|
|
/* policy latency is in nS. Convert it to uS first */
|
|
|
+ latency = policy->cpuinfo.transition_latency / 1000;
|
|
|
+ if (latency == 0)
|
|
|
+ latency = 1;
|
|
|
|
|
|
- latency = policy->cpuinfo.transition_latency;
|
|
|
- if (latency < 1000)
|
|
|
- latency = 1000;
|
|
|
-
|
|
|
- def_sampling_rate = (latency / 1000) *
|
|
|
+ def_sampling_rate = latency *
|
|
|
DEF_SAMPLING_RATE_LATENCY_MULTIPLIER;
|
|
|
+
|
|
|
+ if (def_sampling_rate < MIN_STAT_SAMPLING_RATE)
|
|
|
+ def_sampling_rate = MIN_STAT_SAMPLING_RATE;
|
|
|
+
|
|
|
dbs_tuners_ins.sampling_rate = def_sampling_rate;
|
|
|
dbs_tuners_ins.ignore_nice = 0;
|
|
|
|