lkml.org 
[lkml]   [2012]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 16/23] time: Move common updates to a function
    Date
    From: Greg KH <gregkh@linuxfoundation.org>

    3.0-stable review patch. If anyone has any objections, please let me know.

    ------------------


    From: Thomas Gleixner <tglx@linutronix.de>

    This is a backport of cc06268c6a87db156af2daed6e96a936b955cc82

    While not a bugfix itself, it allows following fixes to backport
    in a more straightforward manner.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    CC: Eric Dumazet <eric.dumazet@gmail.com>
    CC: Richard Cochran <richardcochran@gmail.com>
    Cc: Prarit Bhargava <prarit@redhat.com>
    Cc: 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 | 34 +++++++++++++++++-----------------
    1 file changed, 17 insertions(+), 17 deletions(-)

    --- a/kernel/time/timekeeping.c
    +++ b/kernel/time/timekeeping.c
    @@ -166,6 +166,19 @@ static struct timespec total_sleep_time;
    */
    static struct timespec raw_time;

    +/* must hold write on xtime_lock */
    +static void timekeeping_update(bool clearntp)
    +{
    + if (clearntp) {
    + timekeeper.ntp_error = 0;
    + ntp_clear();
    + }
    + update_vsyscall(&xtime, &wall_to_monotonic,
    + timekeeper.clock, timekeeper.mult);
    +}
    +
    +
    +
    /* flag for if timekeeping is suspended */
    int __read_mostly timekeeping_suspended;

    @@ -366,11 +379,7 @@ int do_settimeofday(const struct timespe

    xtime = *tv;

    - timekeeper.ntp_error = 0;
    - ntp_clear();
    -
    - update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
    - timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&xtime_lock, flags);

    @@ -403,11 +412,7 @@ int timekeeping_inject_offset(struct tim
    xtime = timespec_add(xtime, *ts);
    wall_to_monotonic = timespec_sub(wall_to_monotonic, *ts);

    - timekeeper.ntp_error = 0;
    - ntp_clear();
    -
    - update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
    - timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&xtime_lock, flags);

    @@ -630,10 +635,7 @@ void timekeeping_inject_sleeptime(struct

    __timekeeping_inject_sleeptime(delta);

    - timekeeper.ntp_error = 0;
    - ntp_clear();
    - update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
    - timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&xtime_lock, flags);

    @@ -938,9 +940,7 @@ static void update_wall_time(void)
    wall_to_monotonic.tv_sec -= leap;
    }

    - /* check to see if there is a new clocksource to use */
    - update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
    - timekeeper.mult);
    + timekeeping_update(false);
    }

    /**



    \
     
     \ /
      Last update: 2012-07-18 03:01    [W:4.200 / U:0.504 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site