Re: pm_trace displays the wrong time from the RTC

Rafael J. Wysocki
2007-08-01T19:42:00Z

On Wednesday, 1 August 2007 20:15, Chuck Ebbert wrote:
> On 08/01/2007 11:47 AM, Rafael J. Wysocki wrote:
> > Sorry for slow response, I've just noticed this thread.
> >
> > On Tuesday, 31 July 2007 23:20, Chuck Ebbert wrote:
> >> When resuming, systems print this when booted on 07/31/07:
> >>
> >> Date: 06/31/107
> >>
> >> /drivers/base/power/trace.c::read_magic_time():
> >> 114 get_rtc_time(&time);
> >> 115 printk("Time: %2d:%02d:%02d Date: %02d/%02d/%02d\n",
> >> 116 time.tm_hour, time.tm_min, time.tm_sec,
> >> 117 time.tm_mon, time.tm_mday, time.tm_year);
> >>
> >> include/asm-generic/rtc.h:
> >> 102 /*
> >> 103 * Account for differences between how the RTC uses the values
> >> 104 * and how they are defined in a struct rtc_time;
> >> 105 */
> >> 106 if (time->tm_year <= 69)
> >> 107 time->tm_year += 100;
> >> 108
> >> 109 time->tm_mon--;
> >
> > Do you mean that systems display bad date after resuming if PM_TRACE is set,
> > even if /sys/power/pm_trace contains 1 ?
> >
> > If that's the case, are they i386 or x86_64?
> >
>
> i386:
>
> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=250238

OK, I now see what you mean.

On my x86_64 test box this also happens after a fresh boot without
suspending/resuming, so I think the problem is that we just shouldn't add 100
to the year and decrease the month in get_rtc_time().

Greetings,
Rafael

--
"Premature optimization is the root of all evil." - Donald Knuth