From: Peter Zijlstra Date: Fri, 27 Nov 2009 14:44:43 +0000 (+0100) Subject: sched: Clean up ttwu() rq locking X-Git-Tag: firefly_0821_release~10186^2~986 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7b8a5273c87b4229bb83bbb1282424e2af0af214;p=firefly-linux-kernel-4.4.55.git sched: Clean up ttwu() rq locking commit ab19cb23313733c55e0517607844b86720b35f5f upstream Since set_task_clock() doesn't rely on rq->clock anymore we can simplyfy the mess in ttwu(). Optimize things a bit by not fiddling with the IRQ state there. Signed-off-by: Peter Zijlstra LKML-Reference: Signed-off-by: Ingo Molnar Signed-off-by: Mike Galbraith Signed-off-by: Greg Kroah-Hartman --- diff --git a/kernel/sched.c b/kernel/sched.c index e3d92940c66e..89bce0258d90 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2379,16 +2379,14 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state, if (task_contributes_to_load(p)) rq->nr_uninterruptible--; p->state = TASK_WAKING; - task_rq_unlock(rq, &flags); + __task_rq_unlock(rq); cpu = select_task_rq(p, SD_BALANCE_WAKE, wake_flags); if (cpu != orig_cpu) set_task_cpu(p, cpu); - rq = task_rq_lock(p, &flags); - - if (rq != orig_rq) - update_rq_clock(rq); + rq = __task_rq_lock(p); + update_rq_clock(rq); WARN_ON(p->state != TASK_WAKING); cpu = task_cpu(p);