Re: [PATCH] timekeeping: avoid adjust kernel time once hwclock keptin UTC time

From: John Stultz
Date: Wed Dec 19 2012 - 01:37:08 EST


On 12/18/2012 09:15 PM, Dong Zhu wrote:
On Thu, Dec 06, 2012 at 10:03:34PM +0800, Dong Zhu wrote:
From c126376cf1837b0956e0268056db61870fbbc1d4 Mon Sep 17 00:00:00 2001
From: Dong Zhu <bluezhudong@xxxxxxxxx>
Date: Thu, 6 Dec 2012 21:45:00 +0800
Subject: [PATCH] timekeeping: avoid adjust kernel time once hwclock kept in
UTC time

If the Hardware Clock kept in local time,kernel will adjust the time
to be UTC time.But if Hardware Clock kept in UTC time,system will make
a dummy settimeofday call first (sys_tz.tz_minuteswest = 0) to make sure
the time is not shifted,so at this point I think maybe it is not necessary
to set the kernel time once the sys_tz.tz_minuteswest is zero.

Signed-off-by: Dong Zhu <bluezhudong@xxxxxxxxx>
---
kernel/time.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/kernel/time.c b/kernel/time.c
index d226c6a..0b592ce 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -134,9 +134,11 @@ static inline void warp_clock(void)
{
struct timespec adjust;
- adjust = current_kernel_time();
- adjust.tv_sec += sys_tz.tz_minuteswest * 60;
- do_settimeofday(&adjust);
+ if (sys_tz.tz_minuteswest) {
+ adjust = current_kernel_time();
+ adjust.tv_sec += sys_tz.tz_minuteswest * 60;
+ do_settimeofday(&adjust);
+ }
}
/*
--
1.7.11.7

Hi,

Any comments ?
Sorry for the slow response, been a little busy. Honestly the warp_clock() code path is always been a bit odd to me, so I've not really been able to get my head around the implications of this change.

Really, I'm not sure if I'll get to this before the new year.
Its on my list, but don't be afraid to ping me early Jan if I haven't queued it for 3.9 by then.

thanks
-john

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/