diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 893211054790..d67345175179 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -1967,9 +1967,12 @@ static void update_cpu_load(struct rq *this_rq) | |||
1967 | unsigned long total_load = this_rq->ls.load.weight; | 1967 | unsigned long total_load = this_rq->ls.load.weight; |
1968 | unsigned long this_load = total_load; | 1968 | unsigned long this_load = total_load; |
1969 | struct load_stat *ls = &this_rq->ls; | 1969 | struct load_stat *ls = &this_rq->ls; |
1970 | u64 now = __rq_clock(this_rq); | 1970 | u64 now; |
1971 | int i, scale; | 1971 | int i, scale; |
1972 | 1972 | ||
1973 | __update_rq_clock(this_rq); | ||
1974 | now = this_rq->clock; | ||
1975 | |||
1973 | this_rq->nr_load_updates++; | 1976 | this_rq->nr_load_updates++; |
1974 | if (unlikely(!(sysctl_sched_features & SCHED_FEAT_PRECISE_CPU_LOAD))) | 1977 | if (unlikely(!(sysctl_sched_features & SCHED_FEAT_PRECISE_CPU_LOAD))) |
1975 | goto do_avg; | 1978 | goto do_avg; |
@@ -3458,7 +3461,8 @@ need_resched_nonpreemptible: | |||
3458 | 3461 | ||
3459 | spin_lock_irq(&rq->lock); | 3462 | spin_lock_irq(&rq->lock); |
3460 | clear_tsk_need_resched(prev); | 3463 | clear_tsk_need_resched(prev); |
3461 | now = __rq_clock(rq); | 3464 | __update_rq_clock(rq); |
3465 | now = rq->clock; | ||
3462 | 3466 | ||
3463 | if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { | 3467 | if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { |
3464 | if (unlikely((prev->state & TASK_INTERRUPTIBLE) && | 3468 | if (unlikely((prev->state & TASK_INTERRUPTIBLE) && |