diff options
Diffstat (limited to 'arch/i386/kernel/time.c')
| -rw-r--r-- | arch/i386/kernel/time.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 6f794a78ee1e..eefea7c55008 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
| @@ -194,10 +194,7 @@ int do_settimeofday(struct timespec *tv) | |||
| 194 | set_normalized_timespec(&xtime, sec, nsec); | 194 | set_normalized_timespec(&xtime, sec, nsec); |
| 195 | set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); | 195 | set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); |
| 196 | 196 | ||
| 197 | time_adjust = 0; /* stop active adjtime() */ | 197 | ntp_clear(); |
| 198 | time_status |= STA_UNSYNC; | ||
| 199 | time_maxerror = NTP_PHASE_LIMIT; | ||
| 200 | time_esterror = NTP_PHASE_LIMIT; | ||
| 201 | write_sequnlock_irq(&xtime_lock); | 198 | write_sequnlock_irq(&xtime_lock); |
| 202 | clock_was_set(); | 199 | clock_was_set(); |
| 203 | return 0; | 200 | return 0; |
| @@ -252,8 +249,7 @@ EXPORT_SYMBOL(profile_pc); | |||
| 252 | * timer_interrupt() needs to keep up the real-time clock, | 249 | * timer_interrupt() needs to keep up the real-time clock, |
| 253 | * as well as call the "do_timer()" routine every clocktick | 250 | * as well as call the "do_timer()" routine every clocktick |
| 254 | */ | 251 | */ |
| 255 | static inline void do_timer_interrupt(int irq, void *dev_id, | 252 | static inline void do_timer_interrupt(int irq, struct pt_regs *regs) |
| 256 | struct pt_regs *regs) | ||
| 257 | { | 253 | { |
| 258 | #ifdef CONFIG_X86_IO_APIC | 254 | #ifdef CONFIG_X86_IO_APIC |
| 259 | if (timer_ack) { | 255 | if (timer_ack) { |
| @@ -307,7 +303,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 307 | 303 | ||
| 308 | cur_timer->mark_offset(); | 304 | cur_timer->mark_offset(); |
| 309 | 305 | ||
| 310 | do_timer_interrupt(irq, NULL, regs); | 306 | do_timer_interrupt(irq, regs); |
| 311 | 307 | ||
| 312 | write_sequnlock(&xtime_lock); | 308 | write_sequnlock(&xtime_lock); |
| 313 | return IRQ_HANDLED; | 309 | return IRQ_HANDLED; |
| @@ -348,7 +344,7 @@ static void sync_cmos_clock(unsigned long dummy) | |||
| 348 | * This code is run on a timer. If the clock is set, that timer | 344 | * This code is run on a timer. If the clock is set, that timer |
| 349 | * may not expire at the correct time. Thus, we adjust... | 345 | * may not expire at the correct time. Thus, we adjust... |
| 350 | */ | 346 | */ |
| 351 | if ((time_status & STA_UNSYNC) != 0) | 347 | if (!ntp_synced()) |
| 352 | /* | 348 | /* |
| 353 | * Not synced, exit, do not restart a timer (if one is | 349 | * Not synced, exit, do not restart a timer (if one is |
| 354 | * running, let it run out). | 350 | * running, let it run out). |
| @@ -422,6 +418,7 @@ static int timer_resume(struct sys_device *dev) | |||
| 422 | last_timer->resume(); | 418 | last_timer->resume(); |
| 423 | cur_timer = last_timer; | 419 | cur_timer = last_timer; |
| 424 | last_timer = NULL; | 420 | last_timer = NULL; |
| 421 | touch_softlockup_watchdog(); | ||
| 425 | return 0; | 422 | return 0; |
| 426 | } | 423 | } |
| 427 | 424 | ||
