summaryrefslogtreecommitdiffstats
path: root/kernel/sched
diff options
context:
space:
mode:
authorFrederic Weisbecker2013-04-12 01:50:59 +0200
committerIngo Molnar2013-05-28 09:40:23 +0200
commit71b1da46ff70309a2ec12ce943aa0d192d2c8f0c (patch)
treea5ee1533a51cc3533b030ebc69ecb2ecec4c791d /kernel/sched
parentsched: Update rq clock before migrating tasks out of dying CPU (diff)
downloadkernel-qcow2-linux-71b1da46ff70309a2ec12ce943aa0d192d2c8f0c.tar.gz
kernel-qcow2-linux-71b1da46ff70309a2ec12ce943aa0d192d2c8f0c.tar.xz
kernel-qcow2-linux-71b1da46ff70309a2ec12ce943aa0d192d2c8f0c.zip
sched: Update rq clock before setting fair group shares
Because we may update the execution time in sched_group_set_shares()->update_cfs_shares()->reweight_entity()->update_curr() before reweighting the entity while setting the group shares and this requires an uptodate version of the runqueue clock. 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-3-git-send-email-fweisbec@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/fair.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index f62b16dfba63..f76ca21711bb 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -6107,6 +6107,9 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares)
se = tg->se[i];
/* Propagate contribution to hierarchy */
raw_spin_lock_irqsave(&rq->lock, flags);
+
+ /* Possible calls to update_curr() need rq clock */
+ update_rq_clock(rq);
for_each_sched_entity(se)
update_cfs_shares(group_cfs_rq(se));
raw_spin_unlock_irqrestore(&rq->lock, flags);