Subject: CVS commit: src/sys/arch/xen/xen
To: None <source-changes@NetBSD.org>
From: Jed Davis <jld@netbsd.org>
List: source-changes
Date: 11/11/2006 23:33:12
Module Name:	src
Committed By:	jld
Date:		Sat Nov 11 23:33:12 UTC 2006

Modified Files:
	src/sys/arch/xen/xen: clock.c

Log Message:
Under Xen2, timestamp updates should happen every 10ms, and a timer
event should be raised every 10ms if we're runnable.  Unfortunately,
there seems to be an intermittent bug in the hypervisor such that,
for about 1<<32 ns (~4.3s) after it manifests, every running domain
continues to run but not get its timer events and new timestamps (nor
is it preempted in favor of other domains on that CPU).  This can cause
strange behavior from our timekeeping; for example, hardclock() is never
called during this interval.

So here's a workaround: if timestamp is allegedly up to date but is more
than 40ms old (this is semi-arbitrary), the domain sets its timer to a
time in the past, which causes it to become immediately pending, and also
results in the publication of a new timestamp.


To generate a diff of this commit:
cvs rdiff -r1.33 -r1.34 src/sys/arch/xen/xen/clock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.