diff options
author | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2017-02-06 11:04:26 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-02-10 03:05:42 -0500 |
commit | bb3bac2ca9a3a5b7fa601781adf70167a0449d75 (patch) | |
tree | 9484f2817c8556b07e27bcac45eb53549fed8a2f | |
parent | 1051408f7ecdcd1baf86f5dd5fdc44740be3b23d (diff) |
sched/core: Remove unlikely() annotation from sched_move_task()
The check for 'running' in sched_move_task() has an unlikely() around it. That
is, it is unlikely that the task being moved is running. That use to be
true. But with a couple of recent updates, it is now likely that the task
will be running.
The first change came from ea86cb4b7621 ("sched/cgroup: Fix
cpu_cgroup_fork() handling") that moved around the use case of
sched_move_task() in do_fork() where the call is now done after the task is
woken (hence it is running).
The second change came from 8e5bfa8c1f84 ("sched/autogroup: Do not use
autogroup->tg in zombie threads") where sched_move_task() is called by the
exit path, by the task that is exiting. Hence it too is running.
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Link: http://lkml.kernel.org/r/20170206110426.27ca6426@gandalf.local.home
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e4aa470ed454..34e2291a9a6c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -6404,14 +6404,14 @@ void sched_move_task(struct task_struct *tsk) | |||
6404 | 6404 | ||
6405 | if (queued) | 6405 | if (queued) |
6406 | dequeue_task(rq, tsk, DEQUEUE_SAVE | DEQUEUE_MOVE); | 6406 | dequeue_task(rq, tsk, DEQUEUE_SAVE | DEQUEUE_MOVE); |
6407 | if (unlikely(running)) | 6407 | if (running) |
6408 | put_prev_task(rq, tsk); | 6408 | put_prev_task(rq, tsk); |
6409 | 6409 | ||
6410 | sched_change_group(tsk, TASK_MOVE_GROUP); | 6410 | sched_change_group(tsk, TASK_MOVE_GROUP); |
6411 | 6411 | ||
6412 | if (queued) | 6412 | if (queued) |
6413 | enqueue_task(rq, tsk, ENQUEUE_RESTORE | ENQUEUE_MOVE); | 6413 | enqueue_task(rq, tsk, ENQUEUE_RESTORE | ENQUEUE_MOVE); |
6414 | if (unlikely(running)) | 6414 | if (running) |
6415 | set_curr_task(rq, tsk); | 6415 | set_curr_task(rq, tsk); |
6416 | 6416 | ||
6417 | task_rq_unlock(rq, tsk, &rf); | 6417 | task_rq_unlock(rq, tsk, &rf); |