xref: /freebsd/contrib/ntp/html/hints/solaris.xtra.4023118 (revision 416ba5c74546f32a993436a99516d35008e9f384)
1*2b15cb3dSCy Schubert Bug Id: 4023118
2*2b15cb3dSCy Schubert Category: kernel
3*2b15cb3dSCy Schubert Subcategory: other
4*2b15cb3dSCy Schubert State: integrated
5*2b15cb3dSCy Schubert Synopsis: sun4u doesn't keep accurate time
6*2b15cb3dSCy Schubert Description:
7*2b15cb3dSCy Schubert
8*2b15cb3dSCy Schubert[ bmc, 12/20/96 ]
9*2b15cb3dSCy Schubert
10*2b15cb3dSCy SchubertThe clock on a sun4u drifts unacceptably.  On a typical 143 mHz Ultra,
11*2b15cb3dSCy Schubertthe clock took 1.0001350 seconds to count 1 second.  While this may seem
12*2b15cb3dSCy Schuberttrivial, it adds up quickly.  In this case, the TOD chip will have to
13*2b15cb3dSCy Schubertpull the clock forward by 2 seconds every 4 hours and 7 minutes.
14*2b15cb3dSCy SchubertThis drift rate is so high, that the clock is close to being too broken
15*2b15cb3dSCy Schubertfor NTP to guarantee correctness (in order for NTP's mechanism to work,
16*2b15cb3dSCy Schubertit must be assured that the local clock drifts no more than 20 ms in 64
17*2b15cb3dSCy Schubertseconds;  this particular 143 mHz Ultra will drift by nearly 9 ms in that
18*2b15cb3dSCy Schubertperiod).  This problem has been reproduced on virtually all sun4u
19*2b15cb3dSCy Schubertclasses.
20*2b15cb3dSCy Schubert
21*2b15cb3dSCy SchubertThe fundamental problem lies in the kernel's perception of ticks per
22*2b15cb3dSCy Schubertsecond.  The PROM is responsible for determining this figure exactly,
23*2b15cb3dSCy Schubertand the kernel extracts it into the variable cpu_tick_freq.  On sun4u's,
24*2b15cb3dSCy Schubertthis number is disconcertingly round:  143000000, 167000000, 248000000,
25*2b15cb3dSCy Schubertetc.  Indeed, a simple experiment revealed that these numbers were
26*2b15cb3dSCy Schubertquite far from the actual ticks per second.  Typical was the 143 mHz
27*2b15cb3dSCy SchubertUltra which was discovered to tick around 142,980,806 (+/- 10) times
28*2b15cb3dSCy Schubertper second.
29*2b15cb3dSCy Schubert
30*2b15cb3dSCy Schubert Work around:
31*2b15cb3dSCy Schubert
32*2b15cb3dSCy Schubert        Integrated in releases: s297_27
33*2b15cb3dSCy Schubert Duplicate of:
34*2b15cb3dSCy Schubert Patch id:
35*2b15cb3dSCy Schubert See also:
36*2b15cb3dSCy Schubert Summary:
37