]> git.karo-electronics.de Git - linux-beck.git/commitdiff
sched: Update rq clock earlier in unthrottle_cfs_rq
authorFrederic Weisbecker <fweisbec@gmail.com>
Thu, 11 Apr 2013 23:51:01 +0000 (01:51 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 28 May 2013 07:40:25 +0000 (09:40 +0200)
In this function we are making use of rq->clock right before the
update of the rq clock, let's just call update_rq_clock() just
before that to avoid using a stale rq clock value.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Paul Turner <pjt@google.com>
Cc: Mike Galbraith <efault@gmx.de>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1365724262-20142-5-git-send-email-fweisbec@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/fair.c

index f76ca21711bb7740a0667016fd3ba1a49c286a58..1c8762a5370ced09a79a13e022aab14045ac1983 100644 (file)
@@ -2319,12 +2319,14 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq)
        se = cfs_rq->tg->se[cpu_of(rq_of(cfs_rq))];
 
        cfs_rq->throttled = 0;
+
+       update_rq_clock(rq);
+
        raw_spin_lock(&cfs_b->lock);
        cfs_b->throttled_time += rq->clock - cfs_rq->throttled_clock;
        list_del_rcu(&cfs_rq->throttled_list);
        raw_spin_unlock(&cfs_b->lock);
 
-       update_rq_clock(rq);
        /* update hierarchical throttle state */
        walk_tg_tree_from(cfs_rq->tg, tg_nop, tg_unthrottle_up, (void *)rq);