
From: Avi Kivity <avi@argo.co.il>

timer_interrupt() measures the delay from an interrupt to its handling in a
variable called 'delay', but accounts every unit of delay as 1/HZ seconds,
instead of 1/CLOCK_TICK_RATE seconds.

on ordinary cpus this doesn't matter as delay is usually zero, but on my
10MHz bochs cpu this causes divide overflows later on.

Signed-off-by: Avi Kivity <avi@argo.co.il>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/x86_64/kernel/time.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN arch/x86_64/kernel/time.c~x86_64-fix-pit-delay-accounting-in-timer_interrupt arch/x86_64/kernel/time.c
--- 25/arch/x86_64/kernel/time.c~x86_64-fix-pit-delay-accounting-in-timer_interrupt	Wed Mar  2 15:19:17 2005
+++ 25-akpm/arch/x86_64/kernel/time.c	Wed Mar  2 15:19:17 2005
@@ -410,7 +410,7 @@ static irqreturn_t timer_interrupt(int i
 
 		monotonic_base += (tsc - vxtime.last_tsc)*1000000/cpu_khz ;
 
-		vxtime.last_tsc = tsc - vxtime.quot * delay / vxtime.tsc_quot;
+		vxtime.last_tsc = tsc - vxtime.quot * delay / (LATCH * vxtime.tsc_quot);
 
 		if ((((tsc - vxtime.last_tsc) *
 		      vxtime.tsc_quot) >> 32) < offset)
_
