aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/class.c
diff options
context:
space:
mode:
authorXunlei Pang <[email protected]>2015-04-02 03:34:38 +0000
committerIngo Molnar <[email protected]>2015-04-03 06:18:34 +0000
commit0fa88cb4b82b5cf7429bc1cef9db006ca035754e (patch)
treeb3800f619ee137e6914e56bf803968642bd389af /drivers/rtc/class.c
parenttime: Fix a bug in timekeeping_suspend() with no persistent clock (diff)
downloadkernel-0fa88cb4b82b5cf7429bc1cef9db006ca035754e.tar.gz
kernel-0fa88cb4b82b5cf7429bc1cef9db006ca035754e.zip
time, drivers/rtc: Don't bother with rtc_resume() for the nonstop clocksource
If a system does not provide a persistent_clock(), the time will be updated on resume by rtc_resume(). With the addition of the non-stop clocksources for suspend timing, those systems set the time on resume in timekeeping_resume(), but may not provide a valid persistent_clock(). This results in the rtc_resume() logic thinking no one has set the time and it then will over-write the suspend time again, which is not necessary and only increases clock error. So, fix this for rtc_resume(). This patch also improves the name of persistent_clock_exist to make it more grammatical. Signed-off-by: Xunlei Pang <[email protected]> Signed-off-by: John Stultz <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'drivers/rtc/class.c')
-rw-r--r--drivers/rtc/class.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
index d40760aa4553..c29ba7e14304 100644
--- a/drivers/rtc/class.c
+++ b/drivers/rtc/class.c
@@ -55,7 +55,7 @@ static int rtc_suspend(struct device *dev)
struct timespec64 delta, delta_delta;
int err;
- if (has_persistent_clock())
+ if (timekeeping_rtc_skipsuspend())
return 0;
if (strcmp(dev_name(&rtc->dev), CONFIG_RTC_HCTOSYS_DEVICE) != 0)
@@ -102,7 +102,7 @@ static int rtc_resume(struct device *dev)
struct timespec64 sleep_time;
int err;
- if (has_persistent_clock())
+ if (timekeeping_rtc_skipresume())
return 0;
rtc_hctosys_ret = -ENODEV;