History

Merge branch 'fortglx/3.9/time' of git://git.linaro.org/people/jstultz/linux into timers/core

Thomas Gleixner committed 13 years ago

Commit 9f4646d2 parents 86c8ead 84e345e3 files · +15 −2Browse files

Showing the changes to kernel (2 of 3 files). Show all

Unified · Split

2 files
  1. kernel/time.c +8 −0
  2. kernel/time/ntp.c +6 −2
kernel/time.c+8−0
@@ -114,6 +114,12 @@ SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv, · 113 unmodified lines
114114 return 0;
115115 }
116116
117+/*
118+ * Indicates if there is an offset between the system clock and the hardware
119+ * clock/persistent clock/rtc.
120+ */
121+int persistent_clock_is_local;
122+
117123 /*
118124 * Adjust the time obtained from the CMOS to be UTC time instead of
119125 * local time.
@@ -135,6 +141,8 @@ static inline void warp_clock(void) · 15 unmodified lines
135141 struct timespec adjust;
136142
137143 adjust = current_kernel_time();
144+ if (sys_tz.tz_minuteswest != 0)
145+ persistent_clock_is_local = 1;
138146 adjust.tv_sec += sys_tz.tz_minuteswest * 60;
139147 do_settimeofday(&adjust);
140148 }
kernel/time/ntp.c+6−2
@@ -511,13 +511,17 @@ static void sync_cmos_clock(struct work_struct *work) · 510 unmodified lines
511511
512512 getnstimeofday(&now);
513513 if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec / 2) {
514+ struct timespec adjust = now;
515+
514516 fail = -ENODEV;
517+ if (persistent_clock_is_local)
518+ adjust.tv_sec -= (sys_tz.tz_minuteswest * 60);
515519 #ifdef CONFIG_GENERIC_CMOS_UPDATE
516− fail = update_persistent_clock(now);
520+ fail = update_persistent_clock(adjust);
517521 #endif
518522 #ifdef CONFIG_RTC_SYSTOHC
519523 if (fail == -ENODEV)
520− fail = rtc_set_ntp_time(now);
524+ fail = rtc_set_ntp_time(adjust);
521525 #endif
522526 }
523527