diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86_64/kernel/time.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c index 97115e608ed8..9dd15d12b659 100644 --- a/arch/x86_64/kernel/time.c +++ b/arch/x86_64/kernel/time.c | |||
@@ -1039,8 +1039,16 @@ static int timer_resume(struct sys_device *dev) | |||
1039 | unsigned long flags; | 1039 | unsigned long flags; |
1040 | unsigned long sec; | 1040 | unsigned long sec; |
1041 | unsigned long ctime = get_cmos_time(); | 1041 | unsigned long ctime = get_cmos_time(); |
1042 | unsigned long sleep_length = (ctime - sleep_start) * HZ; | 1042 | long sleep_length = (ctime - sleep_start) * HZ; |
1043 | 1043 | ||
1044 | if (sleep_length < 0) { | ||
1045 | printk(KERN_WARNING "Time skew detected in timer resume!\n"); | ||
1046 | /* The time after the resume must not be earlier than the time | ||
1047 | * before the suspend or some nasty things will happen | ||
1048 | */ | ||
1049 | sleep_length = 0; | ||
1050 | ctime = sleep_start; | ||
1051 | } | ||
1044 | if (vxtime.hpet_address) | 1052 | if (vxtime.hpet_address) |
1045 | hpet_reenable(); | 1053 | hpet_reenable(); |
1046 | else | 1054 | else |