[PATCH] Detect clock skew during suspend

Detect the situations in which the time after a resume from disk would
be earlier than the time before the suspend and prevent them from
happening on x86_64.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Andi Kleen <ak@suse.de>
This commit is contained in:
Rafael J. Wysocki 2006-09-26 10:52:37 +02:00 committed by Andi Kleen
parent a549b86dd0
commit 34464a5b89

View File

@ -1039,8 +1039,16 @@ static int timer_resume(struct sys_device *dev)
unsigned long flags;
unsigned long sec;
unsigned long ctime = get_cmos_time();
unsigned long sleep_length = (ctime - sleep_start) * HZ;
long sleep_length = (ctime - sleep_start) * HZ;
if (sleep_length < 0) {
printk(KERN_WARNING "Time skew detected in timer resume!\n");
/* The time after the resume must not be earlier than the time
* before the suspend or some nasty things will happen
*/
sleep_length = 0;
ctime = sleep_start;
}
if (vxtime.hpet_address)
hpet_reenable();
else