diff options
Diffstat (limited to 'kernel/time/timekeeping.c')
| -rw-r--r-- | kernel/time/timekeeping.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 2d6087c7cf98..e91c29f961c9 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c | |||
| @@ -53,7 +53,7 @@ void update_xtime_cache(u64 nsec) | |||
| 53 | timespec_add_ns(&xtime_cache, nsec); | 53 | timespec_add_ns(&xtime_cache, nsec); |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | static struct clocksource *clock; /* pointer to current clocksource */ | 56 | struct clocksource *clock; |
| 57 | 57 | ||
| 58 | 58 | ||
| 59 | #ifdef CONFIG_GENERIC_TIME | 59 | #ifdef CONFIG_GENERIC_TIME |
| @@ -246,7 +246,7 @@ void __init timekeeping_init(void) | |||
| 246 | 246 | ||
| 247 | write_seqlock_irqsave(&xtime_lock, flags); | 247 | write_seqlock_irqsave(&xtime_lock, flags); |
| 248 | 248 | ||
| 249 | ntp_clear(); | 249 | ntp_init(); |
| 250 | 250 | ||
| 251 | clock = clocksource_get_next(); | 251 | clock = clocksource_get_next(); |
| 252 | clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH); | 252 | clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH); |
| @@ -371,7 +371,7 @@ static __always_inline int clocksource_bigadjust(s64 error, s64 *interval, | |||
| 371 | * here. This is tuned so that an error of about 1 msec is adjusted | 371 | * here. This is tuned so that an error of about 1 msec is adjusted |
| 372 | * within about 1 sec (or 2^20 nsec in 2^SHIFT_HZ ticks). | 372 | * within about 1 sec (or 2^20 nsec in 2^SHIFT_HZ ticks). |
| 373 | */ | 373 | */ |
| 374 | error2 = clock->error >> (TICK_LENGTH_SHIFT + 22 - 2 * SHIFT_HZ); | 374 | error2 = clock->error >> (NTP_SCALE_SHIFT + 22 - 2 * SHIFT_HZ); |
| 375 | error2 = abs(error2); | 375 | error2 = abs(error2); |
| 376 | for (look_ahead = 0; error2 > 0; look_ahead++) | 376 | for (look_ahead = 0; error2 > 0; look_ahead++) |
| 377 | error2 >>= 2; | 377 | error2 >>= 2; |
| @@ -380,8 +380,7 @@ static __always_inline int clocksource_bigadjust(s64 error, s64 *interval, | |||
| 380 | * Now calculate the error in (1 << look_ahead) ticks, but first | 380 | * Now calculate the error in (1 << look_ahead) ticks, but first |
| 381 | * remove the single look ahead already included in the error. | 381 | * remove the single look ahead already included in the error. |
| 382 | */ | 382 | */ |
| 383 | tick_error = current_tick_length() >> | 383 | tick_error = tick_length >> (NTP_SCALE_SHIFT - clock->shift + 1); |
| 384 | (TICK_LENGTH_SHIFT - clock->shift + 1); | ||
| 385 | tick_error -= clock->xtime_interval >> 1; | 384 | tick_error -= clock->xtime_interval >> 1; |
| 386 | error = ((error - tick_error) >> look_ahead) + tick_error; | 385 | error = ((error - tick_error) >> look_ahead) + tick_error; |
| 387 | 386 | ||
| @@ -412,7 +411,7 @@ static void clocksource_adjust(s64 offset) | |||
| 412 | s64 error, interval = clock->cycle_interval; | 411 | s64 error, interval = clock->cycle_interval; |
| 413 | int adj; | 412 | int adj; |
| 414 | 413 | ||
| 415 | error = clock->error >> (TICK_LENGTH_SHIFT - clock->shift - 1); | 414 | error = clock->error >> (NTP_SCALE_SHIFT - clock->shift - 1); |
| 416 | if (error > interval) { | 415 | if (error > interval) { |
| 417 | error >>= 2; | 416 | error >>= 2; |
| 418 | if (likely(error <= interval)) | 417 | if (likely(error <= interval)) |
| @@ -434,7 +433,7 @@ static void clocksource_adjust(s64 offset) | |||
| 434 | clock->xtime_interval += interval; | 433 | clock->xtime_interval += interval; |
| 435 | clock->xtime_nsec -= offset; | 434 | clock->xtime_nsec -= offset; |
| 436 | clock->error -= (interval - offset) << | 435 | clock->error -= (interval - offset) << |
| 437 | (TICK_LENGTH_SHIFT - clock->shift); | 436 | (NTP_SCALE_SHIFT - clock->shift); |
| 438 | } | 437 | } |
| 439 | 438 | ||
| 440 | /** | 439 | /** |
| @@ -473,8 +472,8 @@ void update_wall_time(void) | |||
| 473 | } | 472 | } |
| 474 | 473 | ||
| 475 | /* accumulate error between NTP and clock interval */ | 474 | /* accumulate error between NTP and clock interval */ |
| 476 | clock->error += current_tick_length(); | 475 | clock->error += tick_length; |
| 477 | clock->error -= clock->xtime_interval << (TICK_LENGTH_SHIFT - clock->shift); | 476 | clock->error -= clock->xtime_interval << (NTP_SCALE_SHIFT - clock->shift); |
| 478 | } | 477 | } |
| 479 | 478 | ||
| 480 | /* correct the clock when NTP error is too big */ | 479 | /* correct the clock when NTP error is too big */ |
