From: Joe Korty The following fixes a problem where a SCHED_FIFO task would on occasion be moved to the end of its runqueue when returned to from a preemption. Cause was due to some SCHED_OTHER code in schedule() which was being run for tasks of every policy. --- 25-akpm/kernel/sched.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN kernel/sched.c~SCHED_FIFO-fix kernel/sched.c --- 25/kernel/sched.c~SCHED_FIFO-fix Tue Mar 23 15:54:10 2004 +++ 25-akpm/kernel/sched.c Tue Mar 23 15:54:10 2004 @@ -1678,7 +1678,7 @@ need_resched: queue = array->queue + idx; next = list_entry(queue->next, task_t, run_list); - if (next->activated > 0) { + if (!rt_task(next) && next->activated > 0) { unsigned long long delta = now - next->timestamp; if (next->activated == 1) _