NetBSD-7 %stick support on UltraSPARC IIe (Sun Fire V100)
Erik Fair <[email protected]>
| Newsgroups | gmane.os.netbsd.ports.sparc64 |
|---|---|
| Message-ID | <[email protected]> |
I installed NetBSD 7.1 RC1 on a Sun Fire V100 (UltraSPARC-IIe CPU) and was happy to see %stick support for that CPU - I’ve enjoyed good NTP timekeeping on Sun Fire V240 and V125 (both UltraSPARC-IIIi CPU). However, it looks like it’s broken. On the exact same hardware, NetBSD-6 did this: > timecounter: Timecounters tick every 10.000 msec > mainbus0 (root): SUNW,UltraAX-i2 (Sun Fire V100): hostid XXXXXXXX > cpu0 at mainbus0: SUNW,UltraSPARC-IIe @ 500 MHz, UPA id 0 > cpu0: 16K instruction (32 b/l), 16K data (32 b/l), 256K external (64 b/l) > […] > timecounter: Timecounters tick every 10.000 msec > timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 > timecounter: Timecounter "tick-counter" frequency 500000000 Hz quality 100 > No counter-timer -- using %tick at 500MHz as system clock. and NetBSD-7 RC1 did this: > timecounter: Timecounters tick every 10.000 msec > mainbus0 (root): SUNW,UltraAX-i2 (Sun Fire V100): hostid XXXXXXXX > cpu0 at mainbus0: SUNW,UltraSPARC-IIe @ 500 MHz, CPU id 0 > cpu0: manuf 17, impl 13, mask 14 > cpu0: system tick frequency 5.555 MHz > cpu0: 16K instruction (32 b/l), 16K data (32 b/l), 256K external (64 b/l) > […] > timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 > timecounter: Timecounter "tick-counter" frequency 500000000 Hz quality 100 > timecounter: Timecounter "stick-counter" frequency 5555555 Hz quality 200 > No counter-timer -- using STICK at 5.555MHz as system clock. The result with NTP on NetBSD 7.1 RC1 was seeing: > Jan 29 06:26:30 secondary ntpd[638]: frequency error 501 PPM exceeds tolerance 500 PPM The timing was awful according to the ntpq(1) billboard - jittery jumping around. Something’s really wrong. So I reverted the kernel choice of stick-counter to tick-counter with sysctl(8) thusly: > kern.timecounter.choice = stick-counter(q=200, f=5555555 Hz) tick-counter(q=100, f=500000000 Hz) clockinterrupt(q=0, f=100 Hz) dummy(q=-1000000, f=1000000 Hz) > kern.timecounter.hardware = tick-counter > kern.timecounter.timestepwarnings = 1 and now this system’s timekeeping is back to its previous netbsd-6 state: acceptable, but not as good as the UltraSPARC-IIIi systems with working %stick support. Any ideas what’s going on here? Was the UltraSPARC-IIe stick register support tested before commit? curious, Erik Fair