aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/fair.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index b71d8c39f1fd..7a0c000b6005 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7193,12 +7193,17 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle)
7193 7193
7194 rq = cpu_rq(balance_cpu); 7194 rq = cpu_rq(balance_cpu);
7195 7195
7196 raw_spin_lock_irq(&rq->lock); 7196 /*
7197 update_rq_clock(rq); 7197 * If time for next balance is due,
7198 update_idle_cpu_load(rq); 7198 * do the balance.
7199 raw_spin_unlock_irq(&rq->lock); 7199 */
7200 7200 if (time_after_eq(jiffies, rq->next_balance)) {
7201 rebalance_domains(rq, CPU_IDLE); 7201 raw_spin_lock_irq(&rq->lock);
7202 update_rq_clock(rq);
7203 update_idle_cpu_load(rq);
7204 raw_spin_unlock_irq(&rq->lock);
7205 rebalance_domains(rq, CPU_IDLE);
7206 }
7202 7207
7203 if (time_after(this_rq->next_balance, rq->next_balance)) 7208 if (time_after(this_rq->next_balance, rq->next_balance))
7204 this_rq->next_balance = rq->next_balance; 7209 this_rq->next_balance = rq->next_balance;