[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] xen PIT timer



Still looking at bug #195 which shows up occasionally  upon boot, and
now, I can recreate by generating a lot of traffic over the serial line
into Xen (holding down 'r' to print the run queues).  

I started comparing how Xen sets up and calibrates the timers with
Linux and have a few questions where they differ.

In Linux, the i386 and x86_64 set up the pit timer using 
binary, mode 2, LSB/MSB, ch 0, and then periodically read PIT_CH0 to
obtain a count.  Linux also uses PIT CH2 to do some calibration.

Xen, in xen/arch/x86/i8259.c sets up the PIT in the same manner (binary,
mode 2, LSB/MSB, ch 0)  but as far as I can see, PIT_CH0 is never used
again, specifically, PIT_CH0 is not used when handling a timer
interrupt.  

Instead, in xen/arch/x86/time.c, when Xen uses PIT as the platform timer,
it runs pit_read_counter() which gets a count from PIT_CH2, which was
used during calibrate_boot_tsc() but in mode 0.

I don't fully understand the different modes of the PIT, but looking at
the some intel [1]documentation I see:

    MODE 0: INTERRUPT ON TERMINAL COUNT
    Mode 0 is typically used for event counting After the Control Word
    is written OUT is initially low and will remain low until the
    Counter reaches zero OUT then goes high and remains high until a new
    count or a new Mode 0 Control Word is written into the Counter 

    MODE 2 RATE GENERATOR 
    This Mode functions like a divide-by-N counter It is typicially used
    to generate a Real Time Clock interrupt OUT will initially be high
    When the initial count has decremented to 1 OUT goes low for one CLK
    pulse OUT then goes high again the Counter reloads the initial count
    and the process is repeated Mode 2 is periodic the same sequence is
    repeated indefinitely For an initial count of N the sequence repeats
    every N CLK cycles 

Why does Xen chose to use mode 0, on PIT CH2 for calculating how much
time has passed rather than how Linux using PIT_CH0 in mode 2?  Are
there some trade offs?

1. http://www.cs.utexas.edu/users/dahlin/Classes/UGOS/reading/82C54.pdf

-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253   T/L: 678-9253
ryanh@xxxxxxxxxx

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.