From: john stultz <johnstul@us.ibm.com>

Good call! I was mis-adding in conversion to nanoseconds. The patch
below should fix it (Andrew, feel free to ignore this, I'll sync up all
the acpi-pm changes with you later). 

Although I'm finding that the sched_clock->monotonic_clock patch doesn't
look like a win. With that patch sched_clock takes ~400-700 cycles using
clock=pmtmr. With your "fix-sched_clock.diff" patch its less then 40
cycles. 

While better accuracy is nice, I can't imagine the 10-20x cost of
sched_clock is worth it. So I think your fix is the best solution.




 25-akpm/arch/i386/kernel/timers/timer_pm.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff -puN arch/i386/kernel/timers/timer_pm.c~timer_pm-fix-fix-fix arch/i386/kernel/timers/timer_pm.c
--- 25/arch/i386/kernel/timers/timer_pm.c~timer_pm-fix-fix-fix	Tue Nov 18 15:28:41 2003
+++ 25-akpm/arch/i386/kernel/timers/timer_pm.c	Tue Nov 18 15:28:41 2003
@@ -149,8 +149,8 @@ static unsigned long long monotonic_cloc
 
 
 	/* convert to nanoseconds */
-	ret = base + ((this_offset - last_offset) & ACPI_PM_MASK);
-	ret = cyc2us(ret)*1000;
+	ret = ((this_offset - last_offset) & ACPI_PM_MASK);
+	ret = base + (cyc2us(ret)*1000);
 	return ret;
 }
 

_