clocksource: Move cycle_last validation to core code
authorThomas Gleixner <tglx@linutronix.de>
Wed, 16 Jul 2014 21:05:12 +0000 (21:05 +0000)
committerJohn Stultz <john.stultz@linaro.org>
Wed, 23 Jul 2014 22:01:51 +0000 (15:01 -0700)
commit09ec54429c6d10f87d1f084de53ae2c1c3a81108
tree842749293edd755e8bb12e1433c2f9df7dd842cf
parent3a97837784acbf9fed699fc04d1799b0eb742fdf
clocksource: Move cycle_last validation to core code

The only user of the cycle_last validation is the x86 TSC. In order to
provide NMI safe accessor functions for clock monotonic and
monotonic_raw we need to do that in the core.

We can't do the TSC specific

    if (now < cycle_last)
            now = cycle_last;

for the other wrapping around clocksources, but TSC has
CLOCKSOURCE_MASK(64) which actually does not mask out anything so if
now is less than cycle_last the subtraction will give a negative
result. So we can check for that in clocksource_delta() and return 0
for that case.

Implement and enable it for x86

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
arch/x86/Kconfig
arch/x86/kernel/tsc.c
kernel/time/Kconfig
kernel/time/timekeeping_internal.h