diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched/fair.c | 17 |
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; |
