Hi all,
On Tue, Nov 08, 2016 at 05:02:14PM +0800, Chen Yu wrote: > Previously the bogus CMOS RTC sleep time has been ignored if pm_trace > is enabled, however once the system successfully resumed back, > any further read to CMOS RTC would return an error. Actually it is > more user-friendly to bring the system back to normal after resumed. > > This patch has registered an pm notifier to restore the RTC to the > value before been overwitten by pm_trace. > > Cc: "Rafael J. Wysocki" <r...@rjwysocki.net> > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Len Brown <l...@kernel.org> > Cc: John Stultz <john.stu...@linaro.org> > Cc: Xunlei Pang <xlp...@redhat.com> > Signed-off-by: Chen Yu <yu.c.c...@intel.com> > --- Please ignore this version for now, the atomic variable below is unnecessary since pm_trace has disabled the async suspend. And in order to allow the users to adjust rtc after resume, we can clear the pm_trace_rtc_abused directly and warn users of the broken rtc. (Without save/restore). > drivers/base/power/trace.c | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/drivers/base/power/trace.c b/drivers/base/power/trace.c > index aa9109a..1e6c611 100644 > --- a/drivers/base/power/trace.c > +++ b/drivers/base/power/trace.c > @@ -10,6 +10,7 @@ > #include <linux/pm-trace.h> > #include <linux/export.h> > #include <linux/rtc.h> > +#include <linux/suspend.h> > > #include <linux/mc146818rtc.h> > > @@ -76,6 +77,11 @@ > > bool pm_trace_rtc_abused __read_mostly; > static unsigned int dev_hash_value; > +struct rtc_time_save { > + struct rtc_time time; > + atomic_t saved; > +}; >