Files
twx-linux/include/linux
John Stultz 09f7ebaa43 time: Fix CLOCK_MONOTONIC_RAW sub-nanosecond accounting
commit 3d88d56c58 upstream.

Due to how the MONOTONIC_RAW accumulation logic was handled,
there is the potential for a 1ns discontinuity when we do
accumulations. This small discontinuity has for the most part
gone un-noticed, but since ARM64 enabled CLOCK_MONOTONIC_RAW
in their vDSO clock_gettime implementation, we've seen failures
with the inconsistency-check test in kselftest.

This patch addresses the issue by using the same sub-ns
accumulation handling that CLOCK_MONOTONIC uses, which avoids
the issue for in-kernel users.

Since the ARM64 vDSO implementation has its own clock_gettime
calculation logic, this patch reduces the frequency of errors,
but failures are still seen. The ARM64 vDSO will need to be
updated to include the sub-nanosecond xtime_nsec values in its
calculation for this issue to be completely fixed.

Signed-off-by: John Stultz <john.stultz@linaro.org>
Tested-by: Daniel Mentz <danielmentz@google.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Stephen Boyd <stephen.boyd@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: "stable #4 . 8+" <stable@vger.kernel.org>
Cc: Miroslav Lichvar <mlichvar@redhat.com>
Link: http://lkml.kernel.org/r/1496965462-20003-3-git-send-email-john.stultz@linaro.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[fabrizio: cherry-pick to 4.4. Kept cycle_t type for function
logarithmic_accumulation local variable "interval". Dropped
casting of "interval" variable]
Signed-off-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com>
Signed-off-by: Biju Das <biju.das@bp.renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-26 08:49:00 +02:00
..
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2016-03-09 15:34:52 -08:00
…
…
…
…
…
2018-04-08 11:51:57 +02:00
…
…
…
2018-04-24 09:32:12 +02:00
…
…
…
…
…
2015-11-07 10:40:47 -07:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2017-06-14 13:16:23 +02:00
…
…
…
…
…
…
…
…
…
…
2018-01-17 09:35:33 +01:00
…
…
…
…
…
…
…
…
…
…
…
…
…
2017-08-06 19:19:42 -07:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2017-05-14 13:32:59 +02:00
…
…
2017-07-15 11:57:44 +02:00
…
…
…
…
2018-01-17 09:35:30 +01:00
…
…
…
…
…
…
…
…
…
2017-08-06 19:19:42 -07:00
…
…
…
…
…
…
…
…
…
2018-04-24 09:32:07 +02:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2016-04-20 15:42:02 +09:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2016-10-28 03:01:30 -04:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2015-11-23 09:44:58 +01:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2016-03-03 15:07:28 -08:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2015-11-06 17:50:42 -08:00
…
…
…
…
…
…
…
2016-12-08 07:15:24 +01:00
…
…
…
2017-08-24 17:02:36 -07:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2016-09-30 10:18:37 +02:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2018-01-31 12:06:13 +01:00
…
2016-04-12 09:08:35 -07:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2015-11-23 09:44:58 +01:00
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
2015-12-13 14:30:59 -08:00
…
…
2015-11-13 20:34:33 -05:00
…
…
…
…
…
…