aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c
index bf8e8f9d90..e013191f7b 100644
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/time.c
@@ -656,7 +656,12 @@ void __init time_init(void)
/* Convert jiffies to system time. Call with xtime_lock held for reading. */
static inline u64 __jiffies_to_st(unsigned long j)
{
- return processed_system_time + ((j - jiffies) * NS_PER_TICK);
+ long delta = j - jiffies;
+ /* NB. The next check can trigger in some wrap-around cases, but
+ * that's ok -- we'll just end up with a shorter timeout. */
+ if (delta < 1)
+ delta = 1;
+ return processed_system_time + (delta * NS_PER_TICK);
}
/*
@@ -683,8 +688,6 @@ int set_timeout_timer(void)
* updates of jiffies since interrupts are off.
*/
j = next_timer_interrupt();
- if (j < (jiffies + 1))
- j = jiffies + 1;
alarm = __jiffies_to_st(j);
/* Failure is pretty bad, but we'd best soldier on. */