| From john.stultz@linaro.org Thu Sep 27 13:43:41 2012 |
| From: John Stultz <john.stultz@linaro.org> |
| Date: Tue, 11 Sep 2012 20:49:52 -0400 |
| Subject: time: Avoid making adjustments if we haven't accumulated anything |
| To: stable@vger.kernel.org |
| Message-ID: <1347410993-19004-3-git-send-email-john.stultz@linaro.org> |
| |
| From: John Stultz <john.stultz@linaro.org> |
| |
| commit bf2ac312195155511a0f79325515cbb61929898a upstream |
| |
| If update_wall_time() is called and the current offset isn't large |
| enough to accumulate, avoid re-calling timekeeping_adjust which may |
| change the clock freq and can cause 1ns inconsistencies with |
| CLOCK_REALTIME_COARSE/CLOCK_MONOTONIC_COARSE. |
| |
| Signed-off-by: John Stultz <john.stultz@linaro.org> |
| Cc: Prarit Bhargava <prarit@redhat.com> |
| Cc: Ingo Molnar <mingo@kernel.org> |
| Link: http://lkml.kernel.org/r/1345595449-34965-5-git-send-email-john.stultz@linaro.org |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: John Stultz <john.stultz@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| kernel/time/timekeeping.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/kernel/time/timekeeping.c |
| +++ b/kernel/time/timekeeping.c |
| @@ -919,6 +919,10 @@ static void update_wall_time(void) |
| #else |
| offset = (clock->read(clock) - clock->cycle_last) & clock->mask; |
| #endif |
| + /* Check if there's really nothing to do */ |
| + if (offset < timekeeper.cycle_interval) |
| + return; |
| + |
| timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift; |
| |
| /* |