Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Aug 2012 02:35:44 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r239320 - head/sys/kern
Message-ID:  <201208160235.q7G2Zj42046704@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Thu Aug 16 02:35:44 2012
New Revision: 239320
URL: http://svn.freebsd.org/changeset/base/239320

Log:
  Limit popcorn limit to something sane (either 2ns or 2 ticks if that's
  longer).
  
  PR:		156481
  Submitted by:	Ian Lepore

Modified:
  head/sys/kern/kern_ntptime.c

Modified: head/sys/kern/kern_ntptime.c
==============================================================================
--- head/sys/kern/kern_ntptime.c	Thu Aug 16 00:53:23 2012	(r239319)
+++ head/sys/kern/kern_ntptime.c	Thu Aug 16 02:35:44 2012	(r239320)
@@ -832,8 +832,15 @@ hardpps(tsp, nsec)
 	 * discarded. otherwise, if so enabled, the time offset is
 	 * updated. We can tolerate a modest loss of data here without
 	 * much degrading time accuracy.
-	 */
-	if (u_nsec > (pps_jitter << PPS_POPCORN)) {
+	 *
+	 * The measurements being checked here were made with the system
+	 * timecounter, so the popcorn threshold is not allowed to fall below
+	 * the number of nanoseconds in two ticks of the timecounter.  For a
+	 * timecounter running faster than 1 GHz the lower bound is 2ns, just
+	 * to avoid a nonsensical threshold of zero.
+	*/
+	if (u_nsec > lmax(pps_jitter << PPS_POPCORN, 
+	    2 * (NANOSECOND / (long)qmin(NANOSECOND, tc_getfrequency())))) {
 		time_status |= STA_PPSJITTER;
 		pps_jitcnt++;
 	} else if (time_status & STA_PPSTIME) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208160235.q7G2Zj42046704>