|
@@ -975,6 +975,14 @@ static int timekeeping_suspend(void)
|
|
|
|
|
|
read_persistent_clock(&timekeeping_suspend_time);
|
|
|
|
|
|
+ /*
|
|
|
+ * On some systems the persistent_clock can not be detected at
|
|
|
+ * timekeeping_init by its return value, so if we see a valid
|
|
|
+ * value returned, update the persistent_clock_exists flag.
|
|
|
+ */
|
|
|
+ if (timekeeping_suspend_time.tv_sec || timekeeping_suspend_time.tv_nsec)
|
|
|
+ persistent_clock_exist = true;
|
|
|
+
|
|
|
raw_spin_lock_irqsave(&timekeeper_lock, flags);
|
|
|
write_seqcount_begin(&timekeeper_seq);
|
|
|
timekeeping_forward_now(tk);
|