Re: [pm] fix time after suspend-to-*

From: George Anzinger
Date: Thu Oct 23 2003 - 15:25:18 EST


Pavel Machek wrote:
Hi!


+static int pit_resume(struct sys_device *dev)
+{
+ if (got_clock_diff) { /* Must know time zone in order to set clock */
+ xtime.tv_sec = get_cmos_time() + clock_cmos_diff;
+ xtime.tv_nsec = 0; + } + return 0;
+}
+

...

Forgive me, I'm not totally familiar w/ the sysfs/pm stuff, but normally
you need to have the xtime_lock to safely manipulate xtime. Also,
couldn't you just call settimeofday() instead? The bit about manually
setting the timezone also confuses me, as we don't normally do this at
bootup in the kernel.



I took it straight from apm.c... But it is well possible that it needs
some locking. OTOH this runs with interrupts disabled, perhaps
thats enough?

I lost (never saw) the first of this thread, BUT, if this is 2.6, I strongly recommend that settimeofday() NOT be called. It will try to adjust wall_to_motonoic, but, as this appears to be a correction for time lost while sleeping, wall_to_monotonic should not change.

As to locking, ints off for UP, but you need the full lock for SMP systems.

--
George Anzinger george@xxxxxxxxxx
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/