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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.