| From 57785df5ac53c70da9fb53696130f3c551bfe1f9 Mon Sep 17 00:00:00 2001 |
| From: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| Date: Fri, 4 Dec 2009 09:59:02 +0100 |
| Subject: sched: Fix task priority bug |
| |
| From: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| |
| commit 57785df5ac53c70da9fb53696130f3c551bfe1f9 upstream. |
| |
| 83f9ac removed a call to effective_prio() in wake_up_new_task(), which |
| leads to tasks running at MAX_PRIO. |
| |
| This is caused by the idle thread being set to MAX_PRIO before forking |
| off init. O(1) used that to make sure idle was always preempted, CFS |
| uses check_preempt_curr_idle() for that so we can savely remove this bit |
| of legacy code. |
| |
| Reported-by: Mike Galbraith <efault@gmx.de> |
| Tested-by: Mike Galbraith <efault@gmx.de> |
| Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| LKML-Reference: <1259754383.4003.610.camel@laptop> |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| kernel/sched.c | 6 ------ |
| 1 file changed, 6 deletions(-) |
| |
| --- a/kernel/sched.c |
| +++ b/kernel/sched.c |
| @@ -3177,10 +3177,6 @@ static void pull_task(struct rq *src_rq, |
| deactivate_task(src_rq, p, 0); |
| set_task_cpu(p, this_cpu); |
| activate_task(this_rq, p, 0); |
| - /* |
| - * Note that idle threads have a prio of MAX_PRIO, for this test |
| - * to be always true for them. |
| - */ |
| check_preempt_curr(this_rq, p, 0); |
| } |
| |
| @@ -6982,7 +6978,6 @@ void __cpuinit init_idle(struct task_str |
| __sched_fork(idle); |
| idle->se.exec_start = sched_clock(); |
| |
| - idle->prio = idle->normal_prio = MAX_PRIO; |
| cpumask_copy(&idle->cpus_allowed, cpumask_of(cpu)); |
| __set_task_cpu(idle, cpu); |
| |
| @@ -7686,7 +7681,6 @@ migration_call(struct notifier_block *nf |
| spin_lock_irq(&rq->lock); |
| update_rq_clock(rq); |
| deactivate_task(rq, rq->idle, 0); |
| - rq->idle->static_prio = MAX_PRIO; |
| __setscheduler(rq, rq->idle, SCHED_NORMAL, 0); |
| rq->idle->sched_class = &idle_sched_class; |
| migrate_dead_tasks(cpu); |