Change the `#ifdef CONFIG_X86' to `#ifdef CONFIG_X6not' and watch the time jump backwards by 45 seconds occasionally. kernel/sleepo.c | 13 +++++++++++++ 1 files changed, 13 insertions(+) diff -puN kernel/sleepo.c~time-goes-backwards kernel/sleepo.c --- 25/kernel/sleepo.c~time-goes-backwards 2003-06-15 23:35:40.000000000 -0700 +++ 25-akpm/kernel/sleepo.c 2003-06-15 23:36:14.000000000 -0700 @@ -27,11 +27,24 @@ static unsigned long long grab_time(void #else struct timeval now; unsigned long long ret; + static unsigned long long prev; + static spinlock_t lock = SPIN_LOCK_UNLOCKED; + spin_lock(&lock); do_gettimeofday(&now); ret = now.tv_sec; ret *= 1000000; ret += now.tv_usec; + if (!prev) { + prev = ret; + } else { + if (ret < prev) { + /* gack. gettimeofday() went backwards */ + printk("prev:0x%016llx ret:0x%016llx\n", prev, ret); + } + } + prev = ret; + spin_unlock(&lock); return ret; #endif } _