Re: [PATCH] timekeeping: Fix 1ns/tick drift with GENERIC_TIME_VSYSCALL_OLD

From: John Stultz
Date: Tue May 31 2016 - 19:11:08 EST

On Tue, May 31, 2016 at 6:06 AM, Thomas Graziadei
<thomas.graziadei@xxxxxxxxxxxxxxxxx> wrote:
> From: Thomas Graziadei <thomas.graziadei@xxxxxxxxxxxxxxxxx>
> The user notices the problem in a raw and real time drift, calling
> clock_gettime with CLOCK_REALTIME / CLOCK_MONOTONIC_RAW on a system
> with no ntp correction taking place (no ntpd or ptp stuff running).

Hmm.. Curious. Was it actually drifting, or was it just
oscillating/ringing near the RAW clock's value?

> The problem is, that old_vsyscall_fixup adds an extra 1ns even though
> xtime_nsec is already held in full nsecs and the remainder in this
> case is 0. Do the rounding up buisness only if needed.

The patch looks ok. But I'm curious what architecture you were seeing
this on (ia64, powerpc?), as it would be much nicer to have those
architectures migrate off of the old low-res vsyscall calculation and
use the newer method with sub-ns precision, instead of trying to
further fix up the deprecated method.

I had submitted a patch to convert ia64 awhile back, but I don't
recall getting much feedback.