--- linux-2.6.4-rc1-mm2/kernel/sched.c 2004-03-06 02:17:25.000000000 +1100 +++ linux-2.6.4-rc1-mm2-so/kernel/sched.c 2004-03-06 14:28:10.094227754 +1100 @@ -2002,11 +2002,9 @@ static inline int dependent_sleeper(runq * task from using an unfair proportion of the * physical cpu's resources. -ck */ - if (p->mm && smt_curr->mm && !rt_task(p) && - ((p->static_prio > smt_curr->static_prio && - (smt_curr->time_slice * (100 - sd->per_cpu_gain) / - 100) > task_timeslice(p)) || - rt_task(smt_curr))) + if (((smt_curr->time_slice * (100 - sd->per_cpu_gain) / 100) > + task_timeslice(p) || rt_task(smt_curr)) && + p->mm && smt_curr->mm && !rt_task(p)) ret |= 1; /* @@ -2014,9 +2012,9 @@ static inline int dependent_sleeper(runq * or wake it up if it has been put to sleep for priority * reasons. */ - if ((smt_curr != smt_rq->idle && - smt_curr->static_prio > p->static_prio) || - (rt_task(p) && !rt_task(smt_curr)) || + if ((((p->time_slice * (100 - sd->per_cpu_gain) / 100) > + task_timeslice(smt_curr) || rt_task(p)) && + smt_curr->mm && p->mm && !rt_task(smt_curr)) || (smt_curr == smt_rq->idle && smt_rq->nr_running)) resched_task(smt_curr); }