diff -r c1c549c4fe9e xen/arch/x86/time.c --- a/xen/arch/x86/time.c Mon Oct 15 16:51:44 2012 +0100 +++ b/xen/arch/x86/time.c Wed Oct 17 17:13:22 2012 +0100 @@ -523,11 +523,12 @@ static s_time_t __read_platform_stime(u6 static void plt_overflow(void *unused) { int i; - u64 count; + u64 count, old_stamp, tsc; s_time_t now, plt_now, plt_wrap; spin_lock_irq(&platform_timer_lock); + old_stamp = plt_stamp; count = plt_src.read_counter(); plt_stamp64 += (count - plt_stamp) & plt_mask; plt_stamp = count; @@ -540,6 +541,14 @@ static void plt_overflow(void *unused) plt_wrap = __read_platform_stime(plt_stamp64 + plt_mask + 1); if ( ABS(plt_wrap - now) > ABS(plt_now - now) ) break; + rdtscll(tsc); + printk("XXX plt_overflow: plt_now=%"PRIx64" plt_wrap=%"PRIx64 + " now=%"PRIx64" old_stamp=%"PRIx64" new_stamp=%"PRIx64 + " plt_stamp64=%"PRIx64" plt_mask=%"PRIx64 + " tsc=%"PRIx64" tsc_stamp=%"PRIx64"\n", + plt_now, plt_wrap, now, old_stamp, plt_stamp, plt_stamp64, + plt_mask, tsc, this_cpu(cpu_time).local_tsc_stamp); + break; plt_stamp64 += plt_mask + 1; } if ( i != 0 )