From 00bf7bfc2eaf775b634774e9ec435d720b6ecee7 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 15 Oct 2007 17:00:14 +0200 Subject: sched: fix: move the CPU check into ->task_new_fair() noticed by Peter Zijlstra: fix: move the CPU check into ->task_new_fair(), this way we can call place_entity() and get child ->vruntime right at initial wakeup time. (without this there can be large latencies) Signed-off-by: Ingo Molnar Signed-off-by: Peter Zijlstra --- kernel/sched_fair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'kernel/sched_fair.c') diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index a9dfb7746c5..f5f491762e3 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -1007,13 +1007,14 @@ static void task_new_fair(struct rq *rq, struct task_struct *p) { struct cfs_rq *cfs_rq = task_cfs_rq(p); struct sched_entity *se = &p->se, *curr = cfs_rq->curr; + int this_cpu = smp_processor_id(); sched_info_queued(p); update_curr(cfs_rq); place_entity(cfs_rq, se, 1); - if (sysctl_sched_child_runs_first && + if (sysctl_sched_child_runs_first && this_cpu == task_cpu(p) && curr->vruntime < se->vruntime) { /* * Upon rescheduling, sched_class::put_prev_task() will place -- cgit v1.2.3