Index: linux-2.6.9-rc3-bk8/kernel/sched.c
===================================================================
--- linux-2.6.9-rc3-bk8.orig/kernel/sched.c	2004-10-09 14:32:18.000000000 +1000
+++ linux-2.6.9-rc3-bk8/kernel/sched.c	2004-10-09 15:16:37.630937871 +1000
@@ -2231,13 +2231,11 @@ void scheduler_tick(int user_ticks, int 
 	 */
 	if (unlikely(p->policy == SCHED_FIFO))
 		goto out;
+	debit = ns_diff(rq->timestamp_last_tick, p->timestamp);
+	if (debit < NSJIFFY / 2)
+		goto out;
 
 	spin_lock(&rq->lock);
-	debit = ns_diff(rq->timestamp_last_tick, p->timestamp);
-	if (debit < NSJIFFY) {
-		p->totalrun += debit;
-		goto out_unlock;
-	}
 
 	/*
 	 * Tasks lose burst each time they use up a full slice().
@@ -2429,11 +2427,6 @@ need_resched:
 
 	spin_lock_irq(&rq->lock);
 	prev->runtime = ns_diff(now, prev->timestamp);
-	if (prev->timestamp > rq->timestamp_last_tick)
-		/*
-		 * We didnt get charged a tick for running, charge nanoseconds
-		 */
-		prev->totalrun += prev->runtime;
 
 	/*
 	 * if entering off of a kernel preemption go straight

