system stalls when wallclock/TOD nudged

Colin Percival cperciva at freebsd.org
Mon Nov 22 10:30:35 UTC 2010


Hi all,

On 11/19/10 23:38, Colin Percival wrote:
> It seems that this bug is related somehow to the idle thread sleeping -- when
> I comment out the call to idle_block from cpu_idle_hlt in i386/machdep.c the
> stalling goes away.

Ok, it turns out that the problem was a bit more complicated than this.  There
were two bugs, actually: First, Xen's timecounter was being rounded from ns
precision to 1/HZ precision for no apparent reason; and second, the periodic
clock interrupt isn't being delivered.  I've fixed the first of these, and that
is enough to prevent the stalling; I need to learn more about Xen interrupts,
event channels, etc. to track down why we're not getting a clock interrupt.

(The timer set by set_timer_op before we call SCHEDOP_block is waking us up --
but the missing clock interrupt means that we aren't preempting userland code,
which is a rather Bad Thing.)

-- 
Colin Percival
Security Officer, FreeBSD | freebsd.org | The power to serve
Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid


More information about the freebsd-xen mailing list