|
@@ -198,6 +198,16 @@ static unsigned long sugov_aggregate_util(struct sugov_cpu *sg_cpu)
|
|
|
|
|
|
|
|
static void sugov_set_iowait_boost(struct sugov_cpu *sg_cpu, u64 time, unsigned int flags)
|
|
static void sugov_set_iowait_boost(struct sugov_cpu *sg_cpu, u64 time, unsigned int flags)
|
|
|
{
|
|
{
|
|
|
|
|
+ /* Clear iowait_boost if the CPU apprears to have been idle. */
|
|
|
|
|
+ if (sg_cpu->iowait_boost) {
|
|
|
|
|
+ s64 delta_ns = time - sg_cpu->last_update;
|
|
|
|
|
+
|
|
|
|
|
+ if (delta_ns > TICK_NSEC) {
|
|
|
|
|
+ sg_cpu->iowait_boost = 0;
|
|
|
|
|
+ sg_cpu->iowait_boost_pending = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (flags & SCHED_CPUFREQ_IOWAIT) {
|
|
if (flags & SCHED_CPUFREQ_IOWAIT) {
|
|
|
if (sg_cpu->iowait_boost_pending)
|
|
if (sg_cpu->iowait_boost_pending)
|
|
|
return;
|
|
return;
|
|
@@ -211,14 +221,6 @@ static void sugov_set_iowait_boost(struct sugov_cpu *sg_cpu, u64 time, unsigned
|
|
|
} else {
|
|
} else {
|
|
|
sg_cpu->iowait_boost = sg_cpu->sg_policy->policy->min;
|
|
sg_cpu->iowait_boost = sg_cpu->sg_policy->policy->min;
|
|
|
}
|
|
}
|
|
|
- } else if (sg_cpu->iowait_boost) {
|
|
|
|
|
- s64 delta_ns = time - sg_cpu->last_update;
|
|
|
|
|
-
|
|
|
|
|
- /* Clear iowait_boost if the CPU apprears to have been idle. */
|
|
|
|
|
- if (delta_ns > TICK_NSEC) {
|
|
|
|
|
- sg_cpu->iowait_boost = 0;
|
|
|
|
|
- sg_cpu->iowait_boost_pending = false;
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|