diff -Naurp linux-2.5.73/kernel/sched.c linux-2.5.73-test/kernel/sched.c --- linux-2.5.73/kernel/sched.c 2003-06-26 01:30:42.000000000 +1000 +++ linux-2.5.73-test/kernel/sched.c 2003-06-27 23:14:31.000000000 +1000 @@ -1229,7 +1229,16 @@ void scheduler_tick(int user_ticks, int enqueue_task(p, rq->expired); } else enqueue_task(p, rq->active); + } else { + if (!(p->time_slice % MIN_TIMESLICE) && + (p->array == rq->active)) { + dequeue_task(p, rq->active); + set_tsk_need_resched(p); + p->prio = effective_prio(p); + enqueue_task(p, rq->active); + } } + out_unlock: spin_unlock(&rq->lock); out: