|
@@ -2938,17 +2938,21 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
|
|
|
unsigned long next_balance = jiffies + 60 * HZ;
|
|
|
|
|
|
for_each_domain(this_cpu, sd) {
|
|
|
- if (sd->flags & SD_BALANCE_NEWIDLE) {
|
|
|
+ unsigned long interval;
|
|
|
+
|
|
|
+ if (!(sd->flags & SD_LOAD_BALANCE))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (sd->flags & SD_BALANCE_NEWIDLE)
|
|
|
/* If we've pulled tasks over stop searching: */
|
|
|
pulled_task = load_balance_newidle(this_cpu,
|
|
|
- this_rq, sd);
|
|
|
- if (time_after(next_balance,
|
|
|
- sd->last_balance + sd->balance_interval))
|
|
|
- next_balance = sd->last_balance
|
|
|
- + sd->balance_interval;
|
|
|
- if (pulled_task)
|
|
|
- break;
|
|
|
- }
|
|
|
+ this_rq, sd);
|
|
|
+
|
|
|
+ interval = msecs_to_jiffies(sd->balance_interval);
|
|
|
+ if (time_after(next_balance, sd->last_balance + interval))
|
|
|
+ next_balance = sd->last_balance + interval;
|
|
|
+ if (pulled_task)
|
|
|
+ break;
|
|
|
}
|
|
|
if (!pulled_task)
|
|
|
/*
|