lkml.org 
[lkml]   [2010]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[29/30] sched: Fix task priority bug
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    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);



    \
     
     \ /
      Last update: 2010-01-21 05:27    [W:0.042 / U:3.532 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site