summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrivatsa Vaddagiri <vatsa@codeaurora.org>2014-07-18 17:56:36 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 19:59:52 -0700
commit961624dadc86491c45b87cce88d80d3465d6d764 (patch)
tree22d4080a60afd106e9871dbe892ad24d675c616d
parentb310ce69b8d8558b958ae3b0215907d56e5215ca (diff)
sched: avoid active migration of tasks not in TASK_RUNNING state
Avoid wasting effort in migrating tasks that are about to sleep. Change-Id: Icf9520b1c8fa48d3e071cb9fa1c5526b3b36ff16 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org> [rameezmustafa@codeaurora.org]: Port to msm-3.18] Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org
-rw-r--r--kernel/sched/fair.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 287629c6dd9e..aa7d8281e0db 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3268,7 +3268,7 @@ static inline int migration_needed(struct rq *rq, struct task_struct *p)
{
int nice = task_nice(p);
- if (is_small_task(p))
+ if (is_small_task(p) || p->state != TASK_RUNNING)
return 0;
/* Todo: cgroup-based control? */
@@ -8542,6 +8542,7 @@ static int active_load_balance_cpu_stop(void *data)
push_task = busiest_rq->push_task;
if (push_task) {
if (task_on_rq_queued(push_task) &&
+ push_task->state == TASK_RUNNING &&
task_cpu(push_task) == busiest_cpu &&
cpu_online(target_cpu)) {
detach_task(push_task, &env);