summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-07-12 18:38:17 +0000
committerian <ian@FreeBSD.org>2015-07-12 18:38:17 +0000
commit098fcc1952e02ad4cee07f258b70512abf040878 (patch)
tree37c4ffb272a6c95a192550d715c7359b2ae64d8b /bin
parentf3029e5e6645eba52730a79a60b2c57c50845ba6 (diff)
downloadFreeBSD-src-098fcc1952e02ad4cee07f258b70512abf040878.zip
FreeBSD-src-098fcc1952e02ad4cee07f258b70512abf040878.tar.gz
Use the monotonic (uptime) counter rather than time-of-day to measure elapsed
time between ntp_adjtime() clock offset adjustments. This eliminates spurious frequency steering after a large clock step (such as a 1970->2015 step on a system with no battery-backed clock hardware). This problem was discovered after the import of ntpd 4.2.8, which does things in a slightly different (but still correct) order than the 4.2.4 we had previously. In particular, 4.2.4 would step the clock then immediately after use ntp_adjtime() to set the frequency and offset to zero, which captured the post-step time-of-day as a side effect. In 4.2.8, ntpd sets frequency and offset to zero before any initial clock step, capturing the time as 1970-ish, then when it next calls ntp_adjtime() it's with a non-zero offset measurement. This non-zero value gets multiplied by the apparent 45-year interval, which blows up into a completely bogus frequency steer. That gets clamped to 500ppm, but that's still enough to make the clock drift so fast that ntpd has to keep stepping it every few minutes to compensate.
Diffstat (limited to 'bin')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud