Keir, Dan:
Although I plan to break up the patch, etc., I'm posting
this fix to the patch for anyone who might be interested.
thanks,
Dave
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2008/06/10 12:20:48-04:00 winchell@xxxxxxxxxxxxxxxxxxxxxxxxxx
# vi-patch: xen-hpet
#
# Bug Id: 6057
#
# Reviewed by: Robert
#
# SUMMARY: Fix wrap issue in monotonic s_time().
#
# xen/arch/x86/time.c
# 2008/06/10 12:20:48-04:00 winchell@xxxxxxxxxxxxxxxxxxxxxxxxxx +3 -2
# Fix wrap issue in monotonic s_time().
#
diff -Nru a/xen/arch/x86/time.c b/xen/arch/x86/time.c
--- a/xen/arch/x86/time.c 2008-06-10 13:08:39 -04:00
+++ b/xen/arch/x86/time.c 2008-06-10 13:08:39 -04:00
@@ -534,7 +534,7 @@
u64 count;
unsigned long flags;
struct cpu_time *t = &this_cpu(cpu_time);
- u64 tsc, delta;
+ u64 tsc, delta, diff;
s_time_t now;
if(hpet_main_counter_phys_avoid_hdw || !hpet_physical_inited) {
@@ -542,7 +542,8 @@
rdtscll(tsc);
delta = tsc - t->local_tsc_stamp;
now = t->stime_local_stamp + scale_delta(delta, &t->tsc_scale);
- if(now > get_s_time_mon.last_ret)
+ diff = (u64)now - (u64)get_s_time_mon.last_ret;
+ if((s64)diff > (s64)0)
get_s_time_mon.last_ret = now;
else
now = get_s_time_mon.last_ret;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|