| From 8abe8c8722da62b74805dd8b208b7697d0a5bcaa Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Tue, 17 Jul 2012 17:49:24 -0400 |
| Subject: [PATCH] time: Move common updates to a function |
| |
| commit cc06268c6a87db156af2daed6e96a936b955cc82 upstream. |
| |
| While not a bugfix itself, it allows following fixes to backport |
| in a more straightforward manner. |
| |
| CC: Thomas Gleixner <tglx@linutronix.de> |
| CC: Eric Dumazet <eric.dumazet@gmail.com> |
| CC: Richard Cochran <richardcochran@gmail.com> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Prarit Bhargava <prarit@redhat.com> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Linux Kernel <linux-kernel@vger.kernel.org> |
| Signed-off-by: John Stultz <john.stultz@linaro.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| kernel/time/timekeeping.c | 20 ++++++++++++++------ |
| 1 file changed, 14 insertions(+), 6 deletions(-) |
| |
| diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c |
| index f8d4877..adfa89d 100644 |
| --- a/kernel/time/timekeeping.c |
| +++ b/kernel/time/timekeeping.c |
| @@ -166,6 +166,18 @@ static struct timespec total_sleep_time; |
| */ |
| 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, timekeeper.clock, timekeeper.mult); |
| +} |
| + |
| + |
| + |
| /* flag for if timekeeping is suspended */ |
| int __read_mostly timekeeping_suspended; |
| |
| @@ -330,10 +342,7 @@ int do_settimeofday(struct timespec *tv) |
| |
| update_xtime_cache(0); |
| |
| - timekeeper.ntp_error = 0; |
| - ntp_clear(); |
| - |
| - update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult); |
| + timekeeping_update(true); |
| |
| write_sequnlock_irqrestore(&xtime_lock, flags); |
| |
| @@ -858,8 +867,7 @@ void update_wall_time(void) |
| nsecs = clocksource_cyc2ns(offset, timekeeper.mult, timekeeper.shift); |
| update_xtime_cache(nsecs); |
| |
| - /* check to see if there is a new clocksource to use */ |
| - update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult); |
| + timekeeping_update(false); |
| } |
| |
| /** |
| -- |
| 1.7.12.rc1.1.gbce1580 |
| |