Index: linux-2.6.31-bfs/kernel/sched_bfs.c =================================================================== --- linux-2.6.31-bfs.orig/kernel/sched_bfs.c 2009-09-13 23:37:20.897772712 +1000 +++ linux-2.6.31-bfs/kernel/sched_bfs.c 2009-09-13 23:37:58.865770166 +1000 @@ -2340,7 +2340,6 @@ local_irq_disable(); update_rq_clock(rq); now = rq->clock; - update_cpu_clock(rq, prev, 0); grq_lock(); clear_tsk_need_resched(prev); @@ -2355,8 +2354,6 @@ if (prev != idle) { /* Update all the information stored on struct rq */ - prev->time_slice = rq->rq_time_slice; - prev->deadline = rq->rq_deadline; check_deadline(prev); return_task(prev, deactivate); } @@ -2367,6 +2364,9 @@ next = idle; schedstat_inc(rq, sched_goidle); } + update_cpu_clock(rq, prev, 0); + prev->time_slice = rq->rq_time_slice; + prev->deadline = rq->rq_deadline; if (next == rq->idle) set_cpuidle_map(cpu);