On Tue, Jun 13, 2017 at 12:02:16PM -0600, Brian Olson wrote:
> @@ -73,7 +73,7 @@ double clockadj_get_freq(clockid_t clkid)
> pr_err("failed to read out the clock frequency adjustment:
> %m");
> } else {
> f = tx.freq / 65.536;
> - if (clkid == CLOCK_REALTIME && realtime_nominal_tick)
> + if (clkid == CLOCK_REALTIME && realtime_nominal_tick &&
> tx.tick)
> f += 1e3 * realtime_hz * (tx.tick -
> realtime_nominal_tick);
>
>
> I think this older version of the kernel (2.6.32-504.el6.x86_64) is
> returning 0 for tx.tick.
Now I recall this is a known bug that was fixed in linux-3.9.
clock_adjtime() updated the struct timex when it returned zero, but
not with positive values (e.g. TIME_ERROR).
The linuxptp code actually has a workaround for this bug, allowing
clockadj_get_freq() to return 0 even if it's not the correct value,
but apparently I broke it later with the ticks.
> Any thoughts on whether this is a valid fix?
Yes, that should fix the workaround. Can you please submit it as a git
patch to linuxptp-devel?
Another is to run "ntptime -m 0 -s 0" before starting phc2sys, so
clock_adjtime() returns valid data.
> I also had to make another small change to get the latest code to build on
> RHEL 6.8:
>
> diff --git a/rtnl.c b/rtnl.c
> index 251b5f3..1266731 100644
> --- a/rtnl.c
> +++ b/rtnl.c
> @@ -17,6 +17,7 @@
> * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> */
> #include <asm/types.h>
> +#include <sys/socket.h>
> #include <linux/netlink.h>
> #include <linux/rtnetlink.h>
> #include <net/if.h>
It would be nice to fix this too.
Thanks,
--
Miroslav Lichvar
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-users