diff options
-rw-r--r-- | include/linux/timekeeping.h | 1 | ||||
-rw-r--r-- | kernel/time/timekeeping.c | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index 5047b83483d6..18d27a3f72ca 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h | |||
@@ -269,6 +269,7 @@ static inline bool has_persistent_clock(void) | |||
269 | 269 | ||
270 | extern void read_persistent_clock(struct timespec *ts); | 270 | extern void read_persistent_clock(struct timespec *ts); |
271 | extern void read_boot_clock(struct timespec *ts); | 271 | extern void read_boot_clock(struct timespec *ts); |
272 | extern void read_boot_clock64(struct timespec64 *ts); | ||
272 | extern int update_persistent_clock(struct timespec now); | 273 | extern int update_persistent_clock(struct timespec now); |
273 | 274 | ||
274 | 275 | ||
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 5b12292b343a..652e50a9c6ed 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
@@ -1188,6 +1188,14 @@ void __weak read_boot_clock(struct timespec *ts) | |||
1188 | ts->tv_nsec = 0; | 1188 | ts->tv_nsec = 0; |
1189 | } | 1189 | } |
1190 | 1190 | ||
1191 | void __weak read_boot_clock64(struct timespec64 *ts64) | ||
1192 | { | ||
1193 | struct timespec ts; | ||
1194 | |||
1195 | read_boot_clock(&ts); | ||
1196 | *ts64 = timespec_to_timespec64(ts); | ||
1197 | } | ||
1198 | |||
1191 | /* | 1199 | /* |
1192 | * timekeeping_init - Initializes the clocksource and common timekeeping values | 1200 | * timekeeping_init - Initializes the clocksource and common timekeeping values |
1193 | */ | 1201 | */ |
@@ -1209,8 +1217,7 @@ void __init timekeeping_init(void) | |||
1209 | } else if (now.tv_sec || now.tv_nsec) | 1217 | } else if (now.tv_sec || now.tv_nsec) |
1210 | persistent_clock_exist = true; | 1218 | persistent_clock_exist = true; |
1211 | 1219 | ||
1212 | read_boot_clock(&ts); | 1220 | read_boot_clock64(&boot); |
1213 | boot = timespec_to_timespec64(ts); | ||
1214 | if (!timespec64_valid_strict(&boot)) { | 1221 | if (!timespec64_valid_strict(&boot)) { |
1215 | pr_warn("WARNING: Boot clock returned invalid value!\n" | 1222 | pr_warn("WARNING: Boot clock returned invalid value!\n" |
1216 | " Check your CMOS/BIOS settings.\n"); | 1223 | " Check your CMOS/BIOS settings.\n"); |