--- linux-2.6.20-magellan-r1/kernel/sched.c 2007-03-11 13:06:14.000000000 +0100 +++ linux-2.6.20-magellan-r1/kernel/sched.c.patched 2007-03-11 13:09:25.000000000 +0100 @@ -3407,7 +3407,7 @@ queue = rq->queue + idx; next = list_entry(queue->next, struct task_struct, run_list); - if (dependent_sleeper(cpu, rq, next)) + if (rq->nr_running == 1 && dependent_sleeper(cpu, rq, next)) next = rq->idle; else { prefetch(next); @@ -3425,7 +3425,7 @@ sched_info_switch(prev, next); if (likely(prev != next)) { rq->preempted = rq->cache_ticks = 0; - next->timestamp = now; + next->timestamp = next->last_ran = now; rq->nr_switches++; rq->curr = next; ++*switch_count;