From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757309AbbE2UYq (ORCPT ); Fri, 29 May 2015 16:24:46 -0400 Received: from mail-pa0-f43.google.com ([209.85.220.43]:34072 "EHLO mail-pa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757258AbbE2UYg (ORCPT ); Fri, 29 May 2015 16:24:36 -0400 From: John Stultz To: lkml Cc: John Stultz , Prarit Bhargava , Daniel Bristot de Oliveira , Richard Cochran , Jan Kara , Jiri Bohac , Thomas Gleixner , Ingo Molnar , Shuah Khan Subject: [RFC][PATCH 0/4] Fixes for leapsecond expiring early ABS_TIME CLOCK_REALTIME timers Date: Fri, 29 May 2015 13:24:24 -0700 Message-Id: <1432931068-4980-1-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As Prarit reported here: https://lkml.org/lkml/2015/5/27/458 Since the leapsecond is applied at timer tick time, and not the actual second edge, ABS_TIME CLOCK_REALTIME timers set for right after the leapsecond could fire a second early, since some timers may be expired before we trigger the timekeeping timer, which then applies the leapsecond. Thus this patch series tries to address this isssue, including extending the leap-a-day test to catch this problem, as well as other relevant fixups I found while working on the code. This series has only had limited testing, so I wanted to send it out for initial review and comment. Folks can grab this tree via git for testing here: https://git.linaro.org/people/john.stultz/linux.git dev/early-leap-timer Thougths and feedback would be appreciated! thanks -john Cc: Prarit Bhargava Cc: Daniel Bristot de Oliveira Cc: Richard Cochran Cc: Jan Kara Cc: Jiri Bohac Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Shuah Khan John Stultz (4): selftests: timers: Add leap-second timer edge testing to leap-a-day.c timer_list: Add the base offset so remaining nsecs are accurate for non monotonic timers ntp: Use printk_deferred in leapsecond path time: Do leapsecond adjustment in gettime fastpaths include/linux/time64.h | 1 + include/linux/timekeeper_internal.h | 7 +++ kernel/time/ntp.c | 77 ++++++++++++++++++++--- kernel/time/ntp_internal.h | 1 + kernel/time/timekeeping.c | 97 +++++++++++++++++++++++++---- kernel/time/timer_list.c | 2 +- tools/testing/selftests/timers/leap-a-day.c | 76 ++++++++++++++++++++-- 7 files changed, 234 insertions(+), 27 deletions(-) -- 1.9.1