solaris.xtra.4023118 revision 258945
1258945Sroberto Bug Id: 4023118 2258945Sroberto Category: kernel 3258945Sroberto Subcategory: other 4258945Sroberto State: integrated 5258945Sroberto Synopsis: sun4u doesn't keep accurate time 6258945Sroberto Description: 7258945Sroberto 8258945Sroberto[ bmc, 12/20/96 ] 9258945Sroberto 10258945SrobertoThe clock on a sun4u drifts unacceptably. On a typical 143 mHz Ultra, 11258945Srobertothe clock took 1.0001350 seconds to count 1 second. While this may seem 12258945Srobertotrivial, it adds up quickly. In this case, the TOD chip will have to 13258945Srobertopull the clock forward by 2 seconds every 4 hours and 7 minutes. 14258945SrobertoThis drift rate is so high, that the clock is close to being too broken 15258945Srobertofor NTP to guarantee correctness (in order for NTP's mechanism to work, 16258945Srobertoit must be assured that the local clock drifts no more than 20 ms in 64 17258945Srobertoseconds; this particular 143 mHz Ultra will drift by nearly 9 ms in that 18258945Srobertoperiod). This problem has been reproduced on virtually all sun4u 19258945Srobertoclasses. 20258945Sroberto 21258945SrobertoThe fundamental problem lies in the kernel's perception of ticks per 22258945Srobertosecond. The PROM is responsible for determining this figure exactly, 23258945Srobertoand the kernel extracts it into the variable cpu_tick_freq. On sun4u's, 24258945Srobertothis number is disconcertingly round: 143000000, 167000000, 248000000, 25258945Srobertoetc. Indeed, a simple experiment revealed that these numbers were 26258945Srobertoquite far from the actual ticks per second. Typical was the 143 mHz 27258945SrobertoUltra which was discovered to tick around 142,980,806 (+/- 10) times 28258945Srobertoper second. 29258945Sroberto 30258945Sroberto Work around: 31258945Sroberto 32258945Sroberto Integrated in releases: s297_27 33258945Sroberto Duplicate of: 34258945Sroberto Patch id: 35258945Sroberto See also: 36258945Sroberto Summary: 37