aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sched.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 05ce3f54e815..2dc5d2f7b392 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -942,8 +942,7 @@ static inline void activate_idle_task(struct task_struct *p, struct rq *rq)
942/* 942/*
943 * deactivate_task - remove a task from the runqueue. 943 * deactivate_task - remove a task from the runqueue.
944 */ 944 */
945static void 945static void deactivate_task(struct rq *rq, struct task_struct *p, int sleep)
946deactivate_task(struct rq *rq, struct task_struct *p, int sleep, u64 now)
947{ 946{
948 if (p->state == TASK_UNINTERRUPTIBLE) 947 if (p->state == TASK_UNINTERRUPTIBLE)
949 rq->nr_uninterruptible++; 948 rq->nr_uninterruptible++;
@@ -2128,7 +2127,7 @@ static void pull_task(struct rq *src_rq, struct task_struct *p,
2128 struct rq *this_rq, int this_cpu) 2127 struct rq *this_rq, int this_cpu)
2129{ 2128{
2130 update_rq_clock(src_rq); 2129 update_rq_clock(src_rq);
2131 deactivate_task(src_rq, p, 0, src_rq->clock); 2130 deactivate_task(src_rq, p, 0);
2132 set_task_cpu(p, this_cpu); 2131 set_task_cpu(p, this_cpu);
2133 activate_task(this_rq, p, 0); 2132 activate_task(this_rq, p, 0);
2134 /* 2133 /*
@@ -3458,7 +3457,7 @@ need_resched_nonpreemptible:
3458 unlikely(signal_pending(prev)))) { 3457 unlikely(signal_pending(prev)))) {
3459 prev->state = TASK_RUNNING; 3458 prev->state = TASK_RUNNING;
3460 } else { 3459 } else {
3461 deactivate_task(rq, prev, 1, now); 3460 deactivate_task(rq, prev, 1);
3462 } 3461 }
3463 switch_count = &prev->nvcsw; 3462 switch_count = &prev->nvcsw;
3464 } 3463 }
@@ -4228,7 +4227,7 @@ recheck:
4228 on_rq = p->se.on_rq; 4227 on_rq = p->se.on_rq;
4229 if (on_rq) { 4228 if (on_rq) {
4230 update_rq_clock(rq); 4229 update_rq_clock(rq);
4231 deactivate_task(rq, p, 0, rq->clock); 4230 deactivate_task(rq, p, 0);
4232 } 4231 }
4233 oldprio = p->prio; 4232 oldprio = p->prio;
4234 __setscheduler(rq, p, policy, param->sched_priority); 4233 __setscheduler(rq, p, policy, param->sched_priority);
@@ -4983,7 +4982,7 @@ static int __migrate_task(struct task_struct *p, int src_cpu, int dest_cpu)
4983 on_rq = p->se.on_rq; 4982 on_rq = p->se.on_rq;
4984 if (on_rq) { 4983 if (on_rq) {
4985 update_rq_clock(rq_src); 4984 update_rq_clock(rq_src);
4986 deactivate_task(rq_src, p, 0, rq_src->clock); 4985 deactivate_task(rq_src, p, 0);
4987 } 4986 }
4988 set_task_cpu(p, dest_cpu); 4987 set_task_cpu(p, dest_cpu);
4989 if (on_rq) { 4988 if (on_rq) {
@@ -5404,7 +5403,7 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
5404 /* Idle task back to normal (off runqueue, low prio) */ 5403 /* Idle task back to normal (off runqueue, low prio) */
5405 rq = task_rq_lock(rq->idle, &flags); 5404 rq = task_rq_lock(rq->idle, &flags);
5406 update_rq_clock(rq); 5405 update_rq_clock(rq);
5407 deactivate_task(rq, rq->idle, 0, rq->clock); 5406 deactivate_task(rq, rq->idle, 0);
5408 rq->idle->static_prio = MAX_PRIO; 5407 rq->idle->static_prio = MAX_PRIO;
5409 __setscheduler(rq, rq->idle, SCHED_NORMAL, 0); 5408 __setscheduler(rq, rq->idle, SCHED_NORMAL, 0);
5410 rq->idle->sched_class = &idle_sched_class; 5409 rq->idle->sched_class = &idle_sched_class;
@@ -6644,7 +6643,7 @@ void normalize_rt_tasks(void)
6644 on_rq = p->se.on_rq; 6643 on_rq = p->se.on_rq;
6645 if (on_rq) { 6644 if (on_rq) {
6646 update_rq_clock(task_rq(p)); 6645 update_rq_clock(task_rq(p));
6647 deactivate_task(task_rq(p), p, 0, task_rq(p)->clock); 6646 deactivate_task(task_rq(p), p, 0);
6648 } 6647 }
6649 __setscheduler(rq, p, SCHED_NORMAL, 0); 6648 __setscheduler(rq, p, SCHED_NORMAL, 0);
6650 if (on_rq) { 6649 if (on_rq) {