1 /* 2 * linux/kernel/time/timekeeping.c 3 * 4 * Kernel timekeeping code and accessor functions 5 * 6 * This code was moved from linux/kernel/timer.c. 7 * Please see that file for copyright and history logs. 8 * 9 */ 10 11 #include <linux/timekeeper_internal.h> 12 #include <linux/module.h> 13 #include <linux/interrupt.h> 14 #include <linux/percpu.h> 15 #include <linux/init.h> 16 #include <linux/mm.h> 17 #include <linux/sched.h> 18 #include <linux/syscore_ops.h> 19 #include <linux/clocksource.h> 20 #include <linux/jiffies.h> 21 #include <linux/time.h> 22 #include <linux/tick.h> 23 #include <linux/stop_machine.h> 24 #include <linux/pvclock_gtod.h> 25 #include <linux/compiler.h> 26 27 #include "tick-internal.h" 28 #include "ntp_internal.h" 29 #include "timekeeping_internal.h" 30 31 #define TK_CLEAR_NTP (1 << 0) 32 #define TK_MIRROR (1 << 1) 33 #define TK_CLOCK_WAS_SET (1 << 2) 34 35 /* 36 * The most important data for readout fits into a single 64 byte 37 * cache line. 38 */ 39 static struct { 40 seqcount_t seq; 41 struct timekeeper timekeeper; 42 } tk_core ____cacheline_aligned; 43 44 static DEFINE_RAW_SPINLOCK(timekeeper_lock); 45 static struct timekeeper shadow_timekeeper; 46 47 /** 48 * struct tk_fast - NMI safe timekeeper 49 * @seq: Sequence counter for protecting updates. The lowest bit 50 * is the index for the tk_read_base array 51 * @base: tk_read_base array. Access is indexed by the lowest bit of 52 * @seq. 53 * 54 * See @update_fast_timekeeper() below. 55 */ 56 struct tk_fast { 57 seqcount_t seq; 58 struct tk_read_base base[2]; 59 }; 60 61 static struct tk_fast tk_fast_mono ____cacheline_aligned; 62 63 /* flag for if timekeeping is suspended */ 64 int __read_mostly timekeeping_suspended; 65 66 /* Flag for if there is a persistent clock on this platform */ 67 bool __read_mostly persistent_clock_exist = false; 68 69 static inline void tk_normalize_xtime(struct timekeeper *tk) 70 { 71 while (tk->tkr.xtime_nsec >= ((u64)NSEC_PER_SEC << tk->tkr.shift)) { 72 tk->tkr.xtime_nsec -= (u64)NSEC_PER_SEC << tk->tkr.shift; 73 tk->xtime_sec++; 74 } 75 } 76 77 static inline struct timespec64 tk_xtime(struct timekeeper *tk) 78 { 79 struct timespec64 ts; 80 81 ts.tv_sec = tk->xtime_sec; 82 ts.tv_nsec = (long)(tk->tkr.xtime_nsec >> tk->tkr.shift); 83 return ts; 84 } 85 86 static void tk_set_xtime(struct timekeeper *tk, const struct timespec64 *ts) 87 { 88 tk->xtime_sec = ts->tv_sec; 89 tk->tkr.xtime_nsec = (u64)ts->tv_nsec << tk->tkr.shift; 90 } 91 92 static void tk_xtime_add(struct timekeeper *tk, const struct timespec64 *ts) 93 { 94 tk->xtime_sec += ts->tv_sec; 95 tk->tkr.xtime_nsec += (u64)ts->tv_nsec << tk->tkr.shift; 96 tk_normalize_xtime(tk); 97 } 98 99 static void tk_set_wall_to_mono(struct timekeeper *tk, struct timespec64 wtm) 100 { 101 struct timespec64 tmp; 102 103 /* 104 * Verify consistency of: offset_real = -wall_to_monotonic 105 * before modifying anything 106 */ 107 set_normalized_timespec64(&tmp, -tk->wall_to_monotonic.tv_sec, 108 -tk->wall_to_monotonic.tv_nsec); 109 WARN_ON_ONCE(tk->offs_real.tv64 != timespec64_to_ktime(tmp).tv64); 110 tk->wall_to_monotonic = wtm; 111 set_normalized_timespec64(&tmp, -wtm.tv_sec, -wtm.tv_nsec); 112 tk->offs_real = timespec64_to_ktime(tmp); 113 tk->offs_tai = ktime_add(tk->offs_real, ktime_set(tk->tai_offset, 0)); 114 } 115 116 static inline void tk_update_sleep_time(struct timekeeper *tk, ktime_t delta) 117 { 118 tk->offs_boot = ktime_add(tk->offs_boot, delta); 119 } 120 121 /** 122 * tk_setup_internals - Set up internals to use clocksource clock. 123 * 124 * @tk: The target timekeeper to setup. 125 * @clock: Pointer to clocksource. 126 * 127 * Calculates a fixed cycle/nsec interval for a given clocksource/adjustment 128 * pair and interval request. 129 * 130 * Unless you're the timekeeping code, you should not be using this! 131 */ 132 static void tk_setup_internals(struct timekeeper *tk, struct clocksource *clock) 133 { 134 cycle_t interval; 135 u64 tmp, ntpinterval; 136 struct clocksource *old_clock; 137 138 old_clock = tk->tkr.clock; 139 tk->tkr.clock = clock; 140 tk->tkr.read = clock->read; 141 tk->tkr.mask = clock->mask; 142 tk->tkr.cycle_last = tk->tkr.read(clock); 143 144 /* Do the ns -> cycle conversion first, using original mult */ 145 tmp = NTP_INTERVAL_LENGTH; 146 tmp <<= clock->shift; 147 ntpinterval = tmp; 148 tmp += clock->mult/2; 149 do_div(tmp, clock->mult); 150 if (tmp == 0) 151 tmp = 1; 152 153 interval = (cycle_t) tmp; 154 tk->cycle_interval = interval; 155 156 /* Go back from cycles -> shifted ns */ 157 tk->xtime_interval = (u64) interval * clock->mult; 158 tk->xtime_remainder = ntpinterval - tk->xtime_interval; 159 tk->raw_interval = 160 ((u64) interval * clock->mult) >> clock->shift; 161 162 /* if changing clocks, convert xtime_nsec shift units */ 163 if (old_clock) { 164 int shift_change = clock->shift - old_clock->shift; 165 if (shift_change < 0) 166 tk->tkr.xtime_nsec >>= -shift_change; 167 else 168 tk->tkr.xtime_nsec <<= shift_change; 169 } 170 tk->tkr.shift = clock->shift; 171 172 tk->ntp_error = 0; 173 tk->ntp_error_shift = NTP_SCALE_SHIFT - clock->shift; 174 tk->ntp_tick = ntpinterval << tk->ntp_error_shift; 175 176 /* 177 * The timekeeper keeps its own mult values for the currently 178 * active clocksource. These value will be adjusted via NTP 179 * to counteract clock drifting. 180 */ 181 tk->tkr.mult = clock->mult; 182 tk->ntp_err_mult = 0; 183 } 184 185 /* Timekeeper helper functions. */ 186 187 #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET 188 static u32 default_arch_gettimeoffset(void) { return 0; } 189 u32 (*arch_gettimeoffset)(void) = default_arch_gettimeoffset; 190 #else 191 static inline u32 arch_gettimeoffset(void) { return 0; } 192 #endif 193 194 static inline s64 timekeeping_get_ns(struct tk_read_base *tkr) 195 { 196 cycle_t cycle_now, delta; 197 s64 nsec; 198 199 /* read clocksource: */ 200 cycle_now = tkr->read(tkr->clock); 201 202 /* calculate the delta since the last update_wall_time: */ 203 delta = clocksource_delta(cycle_now, tkr->cycle_last, tkr->mask); 204 205 nsec = delta * tkr->mult + tkr->xtime_nsec; 206 nsec >>= tkr->shift; 207 208 /* If arch requires, add in get_arch_timeoffset() */ 209 return nsec + arch_gettimeoffset(); 210 } 211 212 static inline s64 timekeeping_get_ns_raw(struct timekeeper *tk) 213 { 214 struct clocksource *clock = tk->tkr.clock; 215 cycle_t cycle_now, delta; 216 s64 nsec; 217 218 /* read clocksource: */ 219 cycle_now = tk->tkr.read(clock); 220 221 /* calculate the delta since the last update_wall_time: */ 222 delta = clocksource_delta(cycle_now, tk->tkr.cycle_last, tk->tkr.mask); 223 224 /* convert delta to nanoseconds. */ 225 nsec = clocksource_cyc2ns(delta, clock->mult, clock->shift); 226 227 /* If arch requires, add in get_arch_timeoffset() */ 228 return nsec + arch_gettimeoffset(); 229 } 230 231 /** 232 * update_fast_timekeeper - Update the fast and NMI safe monotonic timekeeper. 233 * @tk: The timekeeper from which we take the update 234 * @tkf: The fast timekeeper to update 235 * @tbase: The time base for the fast timekeeper (mono/raw) 236 * 237 * We want to use this from any context including NMI and tracing / 238 * instrumenting the timekeeping code itself. 239 * 240 * So we handle this differently than the other timekeeping accessor 241 * functions which retry when the sequence count has changed. The 242 * update side does: 243 * 244 * smp_wmb(); <- Ensure that the last base[1] update is visible 245 * tkf->seq++; 246 * smp_wmb(); <- Ensure that the seqcount update is visible 247 * update(tkf->base[0], tk); 248 * smp_wmb(); <- Ensure that the base[0] update is visible 249 * tkf->seq++; 250 * smp_wmb(); <- Ensure that the seqcount update is visible 251 * update(tkf->base[1], tk); 252 * 253 * The reader side does: 254 * 255 * do { 256 * seq = tkf->seq; 257 * smp_rmb(); 258 * idx = seq & 0x01; 259 * now = now(tkf->base[idx]); 260 * smp_rmb(); 261 * } while (seq != tkf->seq) 262 * 263 * As long as we update base[0] readers are forced off to 264 * base[1]. Once base[0] is updated readers are redirected to base[0] 265 * and the base[1] update takes place. 266 * 267 * So if a NMI hits the update of base[0] then it will use base[1] 268 * which is still consistent. In the worst case this can result is a 269 * slightly wrong timestamp (a few nanoseconds). See 270 * @ktime_get_mono_fast_ns. 271 */ 272 static void update_fast_timekeeper(struct timekeeper *tk) 273 { 274 struct tk_read_base *base = tk_fast_mono.base; 275 276 /* Force readers off to base[1] */ 277 raw_write_seqcount_latch(&tk_fast_mono.seq); 278 279 /* Update base[0] */ 280 memcpy(base, &tk->tkr, sizeof(*base)); 281 282 /* Force readers back to base[0] */ 283 raw_write_seqcount_latch(&tk_fast_mono.seq); 284 285 /* Update base[1] */ 286 memcpy(base + 1, base, sizeof(*base)); 287 } 288 289 /** 290 * ktime_get_mono_fast_ns - Fast NMI safe access to clock monotonic 291 * 292 * This timestamp is not guaranteed to be monotonic across an update. 293 * The timestamp is calculated by: 294 * 295 * now = base_mono + clock_delta * slope 296 * 297 * So if the update lowers the slope, readers who are forced to the 298 * not yet updated second array are still using the old steeper slope. 299 * 300 * tmono 301 * ^ 302 * | o n 303 * | o n 304 * | u 305 * | o 306 * |o 307 * |12345678---> reader order 308 * 309 * o = old slope 310 * u = update 311 * n = new slope 312 * 313 * So reader 6 will observe time going backwards versus reader 5. 314 * 315 * While other CPUs are likely to be able observe that, the only way 316 * for a CPU local observation is when an NMI hits in the middle of 317 * the update. Timestamps taken from that NMI context might be ahead 318 * of the following timestamps. Callers need to be aware of that and 319 * deal with it. 320 */ 321 u64 notrace ktime_get_mono_fast_ns(void) 322 { 323 struct tk_read_base *tkr; 324 unsigned int seq; 325 u64 now; 326 327 do { 328 seq = raw_read_seqcount(&tk_fast_mono.seq); 329 tkr = tk_fast_mono.base + (seq & 0x01); 330 now = ktime_to_ns(tkr->base_mono) + timekeeping_get_ns(tkr); 331 332 } while (read_seqcount_retry(&tk_fast_mono.seq, seq)); 333 return now; 334 } 335 EXPORT_SYMBOL_GPL(ktime_get_mono_fast_ns); 336 337 #ifdef CONFIG_GENERIC_TIME_VSYSCALL_OLD 338 339 static inline void update_vsyscall(struct timekeeper *tk) 340 { 341 struct timespec xt; 342 343 xt = timespec64_to_timespec(tk_xtime(tk)); 344 update_vsyscall_old(&xt, &tk->wall_to_monotonic, tk->tkr.clock, tk->tkr.mult, 345 tk->tkr.cycle_last); 346 } 347 348 static inline void old_vsyscall_fixup(struct timekeeper *tk) 349 { 350 s64 remainder; 351 352 /* 353 * Store only full nanoseconds into xtime_nsec after rounding 354 * it up and add the remainder to the error difference. 355 * XXX - This is necessary to avoid small 1ns inconsistnecies caused 356 * by truncating the remainder in vsyscalls. However, it causes 357 * additional work to be done in timekeeping_adjust(). Once 358 * the vsyscall implementations are converted to use xtime_nsec 359 * (shifted nanoseconds), and CONFIG_GENERIC_TIME_VSYSCALL_OLD 360 * users are removed, this can be killed. 361 */ 362 remainder = tk->tkr.xtime_nsec & ((1ULL << tk->tkr.shift) - 1); 363 tk->tkr.xtime_nsec -= remainder; 364 tk->tkr.xtime_nsec += 1ULL << tk->tkr.shift; 365 tk->ntp_error += remainder << tk->ntp_error_shift; 366 tk->ntp_error -= (1ULL << tk->tkr.shift) << tk->ntp_error_shift; 367 } 368 #else 369 #define old_vsyscall_fixup(tk) 370 #endif 371 372 static RAW_NOTIFIER_HEAD(pvclock_gtod_chain); 373 374 static void update_pvclock_gtod(struct timekeeper *tk, bool was_set) 375 { 376 raw_notifier_call_chain(&pvclock_gtod_chain, was_set, tk); 377 } 378 379 /** 380 * pvclock_gtod_register_notifier - register a pvclock timedata update listener 381 */ 382 int pvclock_gtod_register_notifier(struct notifier_block *nb) 383 { 384 struct timekeeper *tk = &tk_core.timekeeper; 385 unsigned long flags; 386 int ret; 387 388 raw_spin_lock_irqsave(&timekeeper_lock, flags); 389 ret = raw_notifier_chain_register(&pvclock_gtod_chain, nb); 390 update_pvclock_gtod(tk, true); 391 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 392 393 return ret; 394 } 395 EXPORT_SYMBOL_GPL(pvclock_gtod_register_notifier); 396 397 /** 398 * pvclock_gtod_unregister_notifier - unregister a pvclock 399 * timedata update listener 400 */ 401 int pvclock_gtod_unregister_notifier(struct notifier_block *nb) 402 { 403 unsigned long flags; 404 int ret; 405 406 raw_spin_lock_irqsave(&timekeeper_lock, flags); 407 ret = raw_notifier_chain_unregister(&pvclock_gtod_chain, nb); 408 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 409 410 return ret; 411 } 412 EXPORT_SYMBOL_GPL(pvclock_gtod_unregister_notifier); 413 414 /* 415 * Update the ktime_t based scalar nsec members of the timekeeper 416 */ 417 static inline void tk_update_ktime_data(struct timekeeper *tk) 418 { 419 s64 nsec; 420 421 /* 422 * The xtime based monotonic readout is: 423 * nsec = (xtime_sec + wtm_sec) * 1e9 + wtm_nsec + now(); 424 * The ktime based monotonic readout is: 425 * nsec = base_mono + now(); 426 * ==> base_mono = (xtime_sec + wtm_sec) * 1e9 + wtm_nsec 427 */ 428 nsec = (s64)(tk->xtime_sec + tk->wall_to_monotonic.tv_sec); 429 nsec *= NSEC_PER_SEC; 430 nsec += tk->wall_to_monotonic.tv_nsec; 431 tk->tkr.base_mono = ns_to_ktime(nsec); 432 433 /* Update the monotonic raw base */ 434 tk->base_raw = timespec64_to_ktime(tk->raw_time); 435 } 436 437 /* must hold timekeeper_lock */ 438 static void timekeeping_update(struct timekeeper *tk, unsigned int action) 439 { 440 if (action & TK_CLEAR_NTP) { 441 tk->ntp_error = 0; 442 ntp_clear(); 443 } 444 update_vsyscall(tk); 445 update_pvclock_gtod(tk, action & TK_CLOCK_WAS_SET); 446 447 tk_update_ktime_data(tk); 448 449 if (action & TK_MIRROR) 450 memcpy(&shadow_timekeeper, &tk_core.timekeeper, 451 sizeof(tk_core.timekeeper)); 452 453 update_fast_timekeeper(tk); 454 } 455 456 /** 457 * timekeeping_forward_now - update clock to the current time 458 * 459 * Forward the current clock to update its state since the last call to 460 * update_wall_time(). This is useful before significant clock changes, 461 * as it avoids having to deal with this time offset explicitly. 462 */ 463 static void timekeeping_forward_now(struct timekeeper *tk) 464 { 465 struct clocksource *clock = tk->tkr.clock; 466 cycle_t cycle_now, delta; 467 s64 nsec; 468 469 cycle_now = tk->tkr.read(clock); 470 delta = clocksource_delta(cycle_now, tk->tkr.cycle_last, tk->tkr.mask); 471 tk->tkr.cycle_last = cycle_now; 472 473 tk->tkr.xtime_nsec += delta * tk->tkr.mult; 474 475 /* If arch requires, add in get_arch_timeoffset() */ 476 tk->tkr.xtime_nsec += (u64)arch_gettimeoffset() << tk->tkr.shift; 477 478 tk_normalize_xtime(tk); 479 480 nsec = clocksource_cyc2ns(delta, clock->mult, clock->shift); 481 timespec64_add_ns(&tk->raw_time, nsec); 482 } 483 484 /** 485 * __getnstimeofday64 - Returns the time of day in a timespec64. 486 * @ts: pointer to the timespec to be set 487 * 488 * Updates the time of day in the timespec. 489 * Returns 0 on success, or -ve when suspended (timespec will be undefined). 490 */ 491 int __getnstimeofday64(struct timespec64 *ts) 492 { 493 struct timekeeper *tk = &tk_core.timekeeper; 494 unsigned long seq; 495 s64 nsecs = 0; 496 497 do { 498 seq = read_seqcount_begin(&tk_core.seq); 499 500 ts->tv_sec = tk->xtime_sec; 501 nsecs = timekeeping_get_ns(&tk->tkr); 502 503 } while (read_seqcount_retry(&tk_core.seq, seq)); 504 505 ts->tv_nsec = 0; 506 timespec64_add_ns(ts, nsecs); 507 508 /* 509 * Do not bail out early, in case there were callers still using 510 * the value, even in the face of the WARN_ON. 511 */ 512 if (unlikely(timekeeping_suspended)) 513 return -EAGAIN; 514 return 0; 515 } 516 EXPORT_SYMBOL(__getnstimeofday64); 517 518 /** 519 * getnstimeofday64 - Returns the time of day in a timespec64. 520 * @ts: pointer to the timespec to be set 521 * 522 * Returns the time of day in a timespec (WARN if suspended). 523 */ 524 void getnstimeofday64(struct timespec64 *ts) 525 { 526 WARN_ON(__getnstimeofday64(ts)); 527 } 528 EXPORT_SYMBOL(getnstimeofday64); 529 530 ktime_t ktime_get(void) 531 { 532 struct timekeeper *tk = &tk_core.timekeeper; 533 unsigned int seq; 534 ktime_t base; 535 s64 nsecs; 536 537 WARN_ON(timekeeping_suspended); 538 539 do { 540 seq = read_seqcount_begin(&tk_core.seq); 541 base = tk->tkr.base_mono; 542 nsecs = timekeeping_get_ns(&tk->tkr); 543 544 } while (read_seqcount_retry(&tk_core.seq, seq)); 545 546 return ktime_add_ns(base, nsecs); 547 } 548 EXPORT_SYMBOL_GPL(ktime_get); 549 550 static ktime_t *offsets[TK_OFFS_MAX] = { 551 [TK_OFFS_REAL] = &tk_core.timekeeper.offs_real, 552 [TK_OFFS_BOOT] = &tk_core.timekeeper.offs_boot, 553 [TK_OFFS_TAI] = &tk_core.timekeeper.offs_tai, 554 }; 555 556 ktime_t ktime_get_with_offset(enum tk_offsets offs) 557 { 558 struct timekeeper *tk = &tk_core.timekeeper; 559 unsigned int seq; 560 ktime_t base, *offset = offsets[offs]; 561 s64 nsecs; 562 563 WARN_ON(timekeeping_suspended); 564 565 do { 566 seq = read_seqcount_begin(&tk_core.seq); 567 base = ktime_add(tk->tkr.base_mono, *offset); 568 nsecs = timekeeping_get_ns(&tk->tkr); 569 570 } while (read_seqcount_retry(&tk_core.seq, seq)); 571 572 return ktime_add_ns(base, nsecs); 573 574 } 575 EXPORT_SYMBOL_GPL(ktime_get_with_offset); 576 577 /** 578 * ktime_mono_to_any() - convert mononotic time to any other time 579 * @tmono: time to convert. 580 * @offs: which offset to use 581 */ 582 ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs) 583 { 584 ktime_t *offset = offsets[offs]; 585 unsigned long seq; 586 ktime_t tconv; 587 588 do { 589 seq = read_seqcount_begin(&tk_core.seq); 590 tconv = ktime_add(tmono, *offset); 591 } while (read_seqcount_retry(&tk_core.seq, seq)); 592 593 return tconv; 594 } 595 EXPORT_SYMBOL_GPL(ktime_mono_to_any); 596 597 /** 598 * ktime_get_raw - Returns the raw monotonic time in ktime_t format 599 */ 600 ktime_t ktime_get_raw(void) 601 { 602 struct timekeeper *tk = &tk_core.timekeeper; 603 unsigned int seq; 604 ktime_t base; 605 s64 nsecs; 606 607 do { 608 seq = read_seqcount_begin(&tk_core.seq); 609 base = tk->base_raw; 610 nsecs = timekeeping_get_ns_raw(tk); 611 612 } while (read_seqcount_retry(&tk_core.seq, seq)); 613 614 return ktime_add_ns(base, nsecs); 615 } 616 EXPORT_SYMBOL_GPL(ktime_get_raw); 617 618 /** 619 * ktime_get_ts64 - get the monotonic clock in timespec64 format 620 * @ts: pointer to timespec variable 621 * 622 * The function calculates the monotonic clock from the realtime 623 * clock and the wall_to_monotonic offset and stores the result 624 * in normalized timespec format in the variable pointed to by @ts. 625 */ 626 void ktime_get_ts64(struct timespec64 *ts) 627 { 628 struct timekeeper *tk = &tk_core.timekeeper; 629 struct timespec64 tomono; 630 s64 nsec; 631 unsigned int seq; 632 633 WARN_ON(timekeeping_suspended); 634 635 do { 636 seq = read_seqcount_begin(&tk_core.seq); 637 ts->tv_sec = tk->xtime_sec; 638 nsec = timekeeping_get_ns(&tk->tkr); 639 tomono = tk->wall_to_monotonic; 640 641 } while (read_seqcount_retry(&tk_core.seq, seq)); 642 643 ts->tv_sec += tomono.tv_sec; 644 ts->tv_nsec = 0; 645 timespec64_add_ns(ts, nsec + tomono.tv_nsec); 646 } 647 EXPORT_SYMBOL_GPL(ktime_get_ts64); 648 649 #ifdef CONFIG_NTP_PPS 650 651 /** 652 * getnstime_raw_and_real - get day and raw monotonic time in timespec format 653 * @ts_raw: pointer to the timespec to be set to raw monotonic time 654 * @ts_real: pointer to the timespec to be set to the time of day 655 * 656 * This function reads both the time of day and raw monotonic time at the 657 * same time atomically and stores the resulting timestamps in timespec 658 * format. 659 */ 660 void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real) 661 { 662 struct timekeeper *tk = &tk_core.timekeeper; 663 unsigned long seq; 664 s64 nsecs_raw, nsecs_real; 665 666 WARN_ON_ONCE(timekeeping_suspended); 667 668 do { 669 seq = read_seqcount_begin(&tk_core.seq); 670 671 *ts_raw = timespec64_to_timespec(tk->raw_time); 672 ts_real->tv_sec = tk->xtime_sec; 673 ts_real->tv_nsec = 0; 674 675 nsecs_raw = timekeeping_get_ns_raw(tk); 676 nsecs_real = timekeeping_get_ns(&tk->tkr); 677 678 } while (read_seqcount_retry(&tk_core.seq, seq)); 679 680 timespec_add_ns(ts_raw, nsecs_raw); 681 timespec_add_ns(ts_real, nsecs_real); 682 } 683 EXPORT_SYMBOL(getnstime_raw_and_real); 684 685 #endif /* CONFIG_NTP_PPS */ 686 687 /** 688 * do_gettimeofday - Returns the time of day in a timeval 689 * @tv: pointer to the timeval to be set 690 * 691 * NOTE: Users should be converted to using getnstimeofday() 692 */ 693 void do_gettimeofday(struct timeval *tv) 694 { 695 struct timespec64 now; 696 697 getnstimeofday64(&now); 698 tv->tv_sec = now.tv_sec; 699 tv->tv_usec = now.tv_nsec/1000; 700 } 701 EXPORT_SYMBOL(do_gettimeofday); 702 703 /** 704 * do_settimeofday - Sets the time of day 705 * @tv: pointer to the timespec variable containing the new time 706 * 707 * Sets the time of day to the new time and update NTP and notify hrtimers 708 */ 709 int do_settimeofday(const struct timespec *tv) 710 { 711 struct timekeeper *tk = &tk_core.timekeeper; 712 struct timespec64 ts_delta, xt, tmp; 713 unsigned long flags; 714 715 if (!timespec_valid_strict(tv)) 716 return -EINVAL; 717 718 raw_spin_lock_irqsave(&timekeeper_lock, flags); 719 write_seqcount_begin(&tk_core.seq); 720 721 timekeeping_forward_now(tk); 722 723 xt = tk_xtime(tk); 724 ts_delta.tv_sec = tv->tv_sec - xt.tv_sec; 725 ts_delta.tv_nsec = tv->tv_nsec - xt.tv_nsec; 726 727 tk_set_wall_to_mono(tk, timespec64_sub(tk->wall_to_monotonic, ts_delta)); 728 729 tmp = timespec_to_timespec64(*tv); 730 tk_set_xtime(tk, &tmp); 731 732 timekeeping_update(tk, TK_CLEAR_NTP | TK_MIRROR | TK_CLOCK_WAS_SET); 733 734 write_seqcount_end(&tk_core.seq); 735 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 736 737 /* signal hrtimers about time change */ 738 clock_was_set(); 739 740 return 0; 741 } 742 EXPORT_SYMBOL(do_settimeofday); 743 744 /** 745 * timekeeping_inject_offset - Adds or subtracts from the current time. 746 * @tv: pointer to the timespec variable containing the offset 747 * 748 * Adds or subtracts an offset value from the current time. 749 */ 750 int timekeeping_inject_offset(struct timespec *ts) 751 { 752 struct timekeeper *tk = &tk_core.timekeeper; 753 unsigned long flags; 754 struct timespec64 ts64, tmp; 755 int ret = 0; 756 757 if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) 758 return -EINVAL; 759 760 ts64 = timespec_to_timespec64(*ts); 761 762 raw_spin_lock_irqsave(&timekeeper_lock, flags); 763 write_seqcount_begin(&tk_core.seq); 764 765 timekeeping_forward_now(tk); 766 767 /* Make sure the proposed value is valid */ 768 tmp = timespec64_add(tk_xtime(tk), ts64); 769 if (!timespec64_valid_strict(&tmp)) { 770 ret = -EINVAL; 771 goto error; 772 } 773 774 tk_xtime_add(tk, &ts64); 775 tk_set_wall_to_mono(tk, timespec64_sub(tk->wall_to_monotonic, ts64)); 776 777 error: /* even if we error out, we forwarded the time, so call update */ 778 timekeeping_update(tk, TK_CLEAR_NTP | TK_MIRROR | TK_CLOCK_WAS_SET); 779 780 write_seqcount_end(&tk_core.seq); 781 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 782 783 /* signal hrtimers about time change */ 784 clock_was_set(); 785 786 return ret; 787 } 788 EXPORT_SYMBOL(timekeeping_inject_offset); 789 790 791 /** 792 * timekeeping_get_tai_offset - Returns current TAI offset from UTC 793 * 794 */ 795 s32 timekeeping_get_tai_offset(void) 796 { 797 struct timekeeper *tk = &tk_core.timekeeper; 798 unsigned int seq; 799 s32 ret; 800 801 do { 802 seq = read_seqcount_begin(&tk_core.seq); 803 ret = tk->tai_offset; 804 } while (read_seqcount_retry(&tk_core.seq, seq)); 805 806 return ret; 807 } 808 809 /** 810 * __timekeeping_set_tai_offset - Lock free worker function 811 * 812 */ 813 static void __timekeeping_set_tai_offset(struct timekeeper *tk, s32 tai_offset) 814 { 815 tk->tai_offset = tai_offset; 816 tk->offs_tai = ktime_add(tk->offs_real, ktime_set(tai_offset, 0)); 817 } 818 819 /** 820 * timekeeping_set_tai_offset - Sets the current TAI offset from UTC 821 * 822 */ 823 void timekeeping_set_tai_offset(s32 tai_offset) 824 { 825 struct timekeeper *tk = &tk_core.timekeeper; 826 unsigned long flags; 827 828 raw_spin_lock_irqsave(&timekeeper_lock, flags); 829 write_seqcount_begin(&tk_core.seq); 830 __timekeeping_set_tai_offset(tk, tai_offset); 831 timekeeping_update(tk, TK_MIRROR | TK_CLOCK_WAS_SET); 832 write_seqcount_end(&tk_core.seq); 833 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 834 clock_was_set(); 835 } 836 837 /** 838 * change_clocksource - Swaps clocksources if a new one is available 839 * 840 * Accumulates current time interval and initializes new clocksource 841 */ 842 static int change_clocksource(void *data) 843 { 844 struct timekeeper *tk = &tk_core.timekeeper; 845 struct clocksource *new, *old; 846 unsigned long flags; 847 848 new = (struct clocksource *) data; 849 850 raw_spin_lock_irqsave(&timekeeper_lock, flags); 851 write_seqcount_begin(&tk_core.seq); 852 853 timekeeping_forward_now(tk); 854 /* 855 * If the cs is in module, get a module reference. Succeeds 856 * for built-in code (owner == NULL) as well. 857 */ 858 if (try_module_get(new->owner)) { 859 if (!new->enable || new->enable(new) == 0) { 860 old = tk->tkr.clock; 861 tk_setup_internals(tk, new); 862 if (old->disable) 863 old->disable(old); 864 module_put(old->owner); 865 } else { 866 module_put(new->owner); 867 } 868 } 869 timekeeping_update(tk, TK_CLEAR_NTP | TK_MIRROR | TK_CLOCK_WAS_SET); 870 871 write_seqcount_end(&tk_core.seq); 872 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 873 874 return 0; 875 } 876 877 /** 878 * timekeeping_notify - Install a new clock source 879 * @clock: pointer to the clock source 880 * 881 * This function is called from clocksource.c after a new, better clock 882 * source has been registered. The caller holds the clocksource_mutex. 883 */ 884 int timekeeping_notify(struct clocksource *clock) 885 { 886 struct timekeeper *tk = &tk_core.timekeeper; 887 888 if (tk->tkr.clock == clock) 889 return 0; 890 stop_machine(change_clocksource, clock, NULL); 891 tick_clock_notify(); 892 return tk->tkr.clock == clock ? 0 : -1; 893 } 894 895 /** 896 * getrawmonotonic - Returns the raw monotonic time in a timespec 897 * @ts: pointer to the timespec to be set 898 * 899 * Returns the raw monotonic time (completely un-modified by ntp) 900 */ 901 void getrawmonotonic(struct timespec *ts) 902 { 903 struct timekeeper *tk = &tk_core.timekeeper; 904 struct timespec64 ts64; 905 unsigned long seq; 906 s64 nsecs; 907 908 do { 909 seq = read_seqcount_begin(&tk_core.seq); 910 nsecs = timekeeping_get_ns_raw(tk); 911 ts64 = tk->raw_time; 912 913 } while (read_seqcount_retry(&tk_core.seq, seq)); 914 915 timespec64_add_ns(&ts64, nsecs); 916 *ts = timespec64_to_timespec(ts64); 917 } 918 EXPORT_SYMBOL(getrawmonotonic); 919 920 /** 921 * timekeeping_valid_for_hres - Check if timekeeping is suitable for hres 922 */ 923 int timekeeping_valid_for_hres(void) 924 { 925 struct timekeeper *tk = &tk_core.timekeeper; 926 unsigned long seq; 927 int ret; 928 929 do { 930 seq = read_seqcount_begin(&tk_core.seq); 931 932 ret = tk->tkr.clock->flags & CLOCK_SOURCE_VALID_FOR_HRES; 933 934 } while (read_seqcount_retry(&tk_core.seq, seq)); 935 936 return ret; 937 } 938 939 /** 940 * timekeeping_max_deferment - Returns max time the clocksource can be deferred 941 */ 942 u64 timekeeping_max_deferment(void) 943 { 944 struct timekeeper *tk = &tk_core.timekeeper; 945 unsigned long seq; 946 u64 ret; 947 948 do { 949 seq = read_seqcount_begin(&tk_core.seq); 950 951 ret = tk->tkr.clock->max_idle_ns; 952 953 } while (read_seqcount_retry(&tk_core.seq, seq)); 954 955 return ret; 956 } 957 958 /** 959 * read_persistent_clock - Return time from the persistent clock. 960 * 961 * Weak dummy function for arches that do not yet support it. 962 * Reads the time from the battery backed persistent clock. 963 * Returns a timespec with tv_sec=0 and tv_nsec=0 if unsupported. 964 * 965 * XXX - Do be sure to remove it once all arches implement it. 966 */ 967 void __weak read_persistent_clock(struct timespec *ts) 968 { 969 ts->tv_sec = 0; 970 ts->tv_nsec = 0; 971 } 972 973 /** 974 * read_boot_clock - Return time of the system start. 975 * 976 * Weak dummy function for arches that do not yet support it. 977 * Function to read the exact time the system has been started. 978 * Returns a timespec with tv_sec=0 and tv_nsec=0 if unsupported. 979 * 980 * XXX - Do be sure to remove it once all arches implement it. 981 */ 982 void __weak read_boot_clock(struct timespec *ts) 983 { 984 ts->tv_sec = 0; 985 ts->tv_nsec = 0; 986 } 987 988 /* 989 * timekeeping_init - Initializes the clocksource and common timekeeping values 990 */ 991 void __init timekeeping_init(void) 992 { 993 struct timekeeper *tk = &tk_core.timekeeper; 994 struct clocksource *clock; 995 unsigned long flags; 996 struct timespec64 now, boot, tmp; 997 struct timespec ts; 998 999 read_persistent_clock(&ts); 1000 now = timespec_to_timespec64(ts); 1001 if (!timespec64_valid_strict(&now)) { 1002 pr_warn("WARNING: Persistent clock returned invalid value!\n" 1003 " Check your CMOS/BIOS settings.\n"); 1004 now.tv_sec = 0; 1005 now.tv_nsec = 0; 1006 } else if (now.tv_sec || now.tv_nsec) 1007 persistent_clock_exist = true; 1008 1009 read_boot_clock(&ts); 1010 boot = timespec_to_timespec64(ts); 1011 if (!timespec64_valid_strict(&boot)) { 1012 pr_warn("WARNING: Boot clock returned invalid value!\n" 1013 " Check your CMOS/BIOS settings.\n"); 1014 boot.tv_sec = 0; 1015 boot.tv_nsec = 0; 1016 } 1017 1018 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1019 write_seqcount_begin(&tk_core.seq); 1020 ntp_init(); 1021 1022 clock = clocksource_default_clock(); 1023 if (clock->enable) 1024 clock->enable(clock); 1025 tk_setup_internals(tk, clock); 1026 1027 tk_set_xtime(tk, &now); 1028 tk->raw_time.tv_sec = 0; 1029 tk->raw_time.tv_nsec = 0; 1030 tk->base_raw.tv64 = 0; 1031 if (boot.tv_sec == 0 && boot.tv_nsec == 0) 1032 boot = tk_xtime(tk); 1033 1034 set_normalized_timespec64(&tmp, -boot.tv_sec, -boot.tv_nsec); 1035 tk_set_wall_to_mono(tk, tmp); 1036 1037 timekeeping_update(tk, TK_MIRROR); 1038 1039 write_seqcount_end(&tk_core.seq); 1040 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1041 } 1042 1043 /* time in seconds when suspend began */ 1044 static struct timespec64 timekeeping_suspend_time; 1045 1046 /** 1047 * __timekeeping_inject_sleeptime - Internal function to add sleep interval 1048 * @delta: pointer to a timespec delta value 1049 * 1050 * Takes a timespec offset measuring a suspend interval and properly 1051 * adds the sleep offset to the timekeeping variables. 1052 */ 1053 static void __timekeeping_inject_sleeptime(struct timekeeper *tk, 1054 struct timespec64 *delta) 1055 { 1056 if (!timespec64_valid_strict(delta)) { 1057 printk_deferred(KERN_WARNING 1058 "__timekeeping_inject_sleeptime: Invalid " 1059 "sleep delta value!\n"); 1060 return; 1061 } 1062 tk_xtime_add(tk, delta); 1063 tk_set_wall_to_mono(tk, timespec64_sub(tk->wall_to_monotonic, *delta)); 1064 tk_update_sleep_time(tk, timespec64_to_ktime(*delta)); 1065 tk_debug_account_sleep_time(delta); 1066 } 1067 1068 /** 1069 * timekeeping_inject_sleeptime - Adds suspend interval to timeekeeping values 1070 * @delta: pointer to a timespec delta value 1071 * 1072 * This hook is for architectures that cannot support read_persistent_clock 1073 * because their RTC/persistent clock is only accessible when irqs are enabled. 1074 * 1075 * This function should only be called by rtc_resume(), and allows 1076 * a suspend offset to be injected into the timekeeping values. 1077 */ 1078 void timekeeping_inject_sleeptime(struct timespec *delta) 1079 { 1080 struct timekeeper *tk = &tk_core.timekeeper; 1081 struct timespec64 tmp; 1082 unsigned long flags; 1083 1084 /* 1085 * Make sure we don't set the clock twice, as timekeeping_resume() 1086 * already did it 1087 */ 1088 if (has_persistent_clock()) 1089 return; 1090 1091 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1092 write_seqcount_begin(&tk_core.seq); 1093 1094 timekeeping_forward_now(tk); 1095 1096 tmp = timespec_to_timespec64(*delta); 1097 __timekeeping_inject_sleeptime(tk, &tmp); 1098 1099 timekeeping_update(tk, TK_CLEAR_NTP | TK_MIRROR | TK_CLOCK_WAS_SET); 1100 1101 write_seqcount_end(&tk_core.seq); 1102 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1103 1104 /* signal hrtimers about time change */ 1105 clock_was_set(); 1106 } 1107 1108 /** 1109 * timekeeping_resume - Resumes the generic timekeeping subsystem. 1110 * 1111 * This is for the generic clocksource timekeeping. 1112 * xtime/wall_to_monotonic/jiffies/etc are 1113 * still managed by arch specific suspend/resume code. 1114 */ 1115 static void timekeeping_resume(void) 1116 { 1117 struct timekeeper *tk = &tk_core.timekeeper; 1118 struct clocksource *clock = tk->tkr.clock; 1119 unsigned long flags; 1120 struct timespec64 ts_new, ts_delta; 1121 struct timespec tmp; 1122 cycle_t cycle_now, cycle_delta; 1123 bool suspendtime_found = false; 1124 1125 read_persistent_clock(&tmp); 1126 ts_new = timespec_to_timespec64(tmp); 1127 1128 clockevents_resume(); 1129 clocksource_resume(); 1130 1131 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1132 write_seqcount_begin(&tk_core.seq); 1133 1134 /* 1135 * After system resumes, we need to calculate the suspended time and 1136 * compensate it for the OS time. There are 3 sources that could be 1137 * used: Nonstop clocksource during suspend, persistent clock and rtc 1138 * device. 1139 * 1140 * One specific platform may have 1 or 2 or all of them, and the 1141 * preference will be: 1142 * suspend-nonstop clocksource -> persistent clock -> rtc 1143 * The less preferred source will only be tried if there is no better 1144 * usable source. The rtc part is handled separately in rtc core code. 1145 */ 1146 cycle_now = tk->tkr.read(clock); 1147 if ((clock->flags & CLOCK_SOURCE_SUSPEND_NONSTOP) && 1148 cycle_now > tk->tkr.cycle_last) { 1149 u64 num, max = ULLONG_MAX; 1150 u32 mult = clock->mult; 1151 u32 shift = clock->shift; 1152 s64 nsec = 0; 1153 1154 cycle_delta = clocksource_delta(cycle_now, tk->tkr.cycle_last, 1155 tk->tkr.mask); 1156 1157 /* 1158 * "cycle_delta * mutl" may cause 64 bits overflow, if the 1159 * suspended time is too long. In that case we need do the 1160 * 64 bits math carefully 1161 */ 1162 do_div(max, mult); 1163 if (cycle_delta > max) { 1164 num = div64_u64(cycle_delta, max); 1165 nsec = (((u64) max * mult) >> shift) * num; 1166 cycle_delta -= num * max; 1167 } 1168 nsec += ((u64) cycle_delta * mult) >> shift; 1169 1170 ts_delta = ns_to_timespec64(nsec); 1171 suspendtime_found = true; 1172 } else if (timespec64_compare(&ts_new, &timekeeping_suspend_time) > 0) { 1173 ts_delta = timespec64_sub(ts_new, timekeeping_suspend_time); 1174 suspendtime_found = true; 1175 } 1176 1177 if (suspendtime_found) 1178 __timekeeping_inject_sleeptime(tk, &ts_delta); 1179 1180 /* Re-base the last cycle value */ 1181 tk->tkr.cycle_last = cycle_now; 1182 tk->ntp_error = 0; 1183 timekeeping_suspended = 0; 1184 timekeeping_update(tk, TK_MIRROR | TK_CLOCK_WAS_SET); 1185 write_seqcount_end(&tk_core.seq); 1186 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1187 1188 touch_softlockup_watchdog(); 1189 1190 clockevents_notify(CLOCK_EVT_NOTIFY_RESUME, NULL); 1191 1192 /* Resume hrtimers */ 1193 hrtimers_resume(); 1194 } 1195 1196 static int timekeeping_suspend(void) 1197 { 1198 struct timekeeper *tk = &tk_core.timekeeper; 1199 unsigned long flags; 1200 struct timespec64 delta, delta_delta; 1201 static struct timespec64 old_delta; 1202 struct timespec tmp; 1203 1204 read_persistent_clock(&tmp); 1205 timekeeping_suspend_time = timespec_to_timespec64(tmp); 1206 1207 /* 1208 * On some systems the persistent_clock can not be detected at 1209 * timekeeping_init by its return value, so if we see a valid 1210 * value returned, update the persistent_clock_exists flag. 1211 */ 1212 if (timekeeping_suspend_time.tv_sec || timekeeping_suspend_time.tv_nsec) 1213 persistent_clock_exist = true; 1214 1215 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1216 write_seqcount_begin(&tk_core.seq); 1217 timekeeping_forward_now(tk); 1218 timekeeping_suspended = 1; 1219 1220 /* 1221 * To avoid drift caused by repeated suspend/resumes, 1222 * which each can add ~1 second drift error, 1223 * try to compensate so the difference in system time 1224 * and persistent_clock time stays close to constant. 1225 */ 1226 delta = timespec64_sub(tk_xtime(tk), timekeeping_suspend_time); 1227 delta_delta = timespec64_sub(delta, old_delta); 1228 if (abs(delta_delta.tv_sec) >= 2) { 1229 /* 1230 * if delta_delta is too large, assume time correction 1231 * has occured and set old_delta to the current delta. 1232 */ 1233 old_delta = delta; 1234 } else { 1235 /* Otherwise try to adjust old_system to compensate */ 1236 timekeeping_suspend_time = 1237 timespec64_add(timekeeping_suspend_time, delta_delta); 1238 } 1239 1240 timekeeping_update(tk, TK_MIRROR); 1241 write_seqcount_end(&tk_core.seq); 1242 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1243 1244 clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL); 1245 clocksource_suspend(); 1246 clockevents_suspend(); 1247 1248 return 0; 1249 } 1250 1251 /* sysfs resume/suspend bits for timekeeping */ 1252 static struct syscore_ops timekeeping_syscore_ops = { 1253 .resume = timekeeping_resume, 1254 .suspend = timekeeping_suspend, 1255 }; 1256 1257 static int __init timekeeping_init_ops(void) 1258 { 1259 register_syscore_ops(&timekeeping_syscore_ops); 1260 return 0; 1261 } 1262 device_initcall(timekeeping_init_ops); 1263 1264 /* 1265 * Apply a multiplier adjustment to the timekeeper 1266 */ 1267 static __always_inline void timekeeping_apply_adjustment(struct timekeeper *tk, 1268 s64 offset, 1269 bool negative, 1270 int adj_scale) 1271 { 1272 s64 interval = tk->cycle_interval; 1273 s32 mult_adj = 1; 1274 1275 if (negative) { 1276 mult_adj = -mult_adj; 1277 interval = -interval; 1278 offset = -offset; 1279 } 1280 mult_adj <<= adj_scale; 1281 interval <<= adj_scale; 1282 offset <<= adj_scale; 1283 1284 /* 1285 * So the following can be confusing. 1286 * 1287 * To keep things simple, lets assume mult_adj == 1 for now. 1288 * 1289 * When mult_adj != 1, remember that the interval and offset values 1290 * have been appropriately scaled so the math is the same. 1291 * 1292 * The basic idea here is that we're increasing the multiplier 1293 * by one, this causes the xtime_interval to be incremented by 1294 * one cycle_interval. This is because: 1295 * xtime_interval = cycle_interval * mult 1296 * So if mult is being incremented by one: 1297 * xtime_interval = cycle_interval * (mult + 1) 1298 * Its the same as: 1299 * xtime_interval = (cycle_interval * mult) + cycle_interval 1300 * Which can be shortened to: 1301 * xtime_interval += cycle_interval 1302 * 1303 * So offset stores the non-accumulated cycles. Thus the current 1304 * time (in shifted nanoseconds) is: 1305 * now = (offset * adj) + xtime_nsec 1306 * Now, even though we're adjusting the clock frequency, we have 1307 * to keep time consistent. In other words, we can't jump back 1308 * in time, and we also want to avoid jumping forward in time. 1309 * 1310 * So given the same offset value, we need the time to be the same 1311 * both before and after the freq adjustment. 1312 * now = (offset * adj_1) + xtime_nsec_1 1313 * now = (offset * adj_2) + xtime_nsec_2 1314 * So: 1315 * (offset * adj_1) + xtime_nsec_1 = 1316 * (offset * adj_2) + xtime_nsec_2 1317 * And we know: 1318 * adj_2 = adj_1 + 1 1319 * So: 1320 * (offset * adj_1) + xtime_nsec_1 = 1321 * (offset * (adj_1+1)) + xtime_nsec_2 1322 * (offset * adj_1) + xtime_nsec_1 = 1323 * (offset * adj_1) + offset + xtime_nsec_2 1324 * Canceling the sides: 1325 * xtime_nsec_1 = offset + xtime_nsec_2 1326 * Which gives us: 1327 * xtime_nsec_2 = xtime_nsec_1 - offset 1328 * Which simplfies to: 1329 * xtime_nsec -= offset 1330 * 1331 * XXX - TODO: Doc ntp_error calculation. 1332 */ 1333 tk->tkr.mult += mult_adj; 1334 tk->xtime_interval += interval; 1335 tk->tkr.xtime_nsec -= offset; 1336 tk->ntp_error -= (interval - offset) << tk->ntp_error_shift; 1337 } 1338 1339 /* 1340 * Calculate the multiplier adjustment needed to match the frequency 1341 * specified by NTP 1342 */ 1343 static __always_inline void timekeeping_freqadjust(struct timekeeper *tk, 1344 s64 offset) 1345 { 1346 s64 interval = tk->cycle_interval; 1347 s64 xinterval = tk->xtime_interval; 1348 s64 tick_error; 1349 bool negative; 1350 u32 adj; 1351 1352 /* Remove any current error adj from freq calculation */ 1353 if (tk->ntp_err_mult) 1354 xinterval -= tk->cycle_interval; 1355 1356 tk->ntp_tick = ntp_tick_length(); 1357 1358 /* Calculate current error per tick */ 1359 tick_error = ntp_tick_length() >> tk->ntp_error_shift; 1360 tick_error -= (xinterval + tk->xtime_remainder); 1361 1362 /* Don't worry about correcting it if its small */ 1363 if (likely((tick_error >= 0) && (tick_error <= interval))) 1364 return; 1365 1366 /* preserve the direction of correction */ 1367 negative = (tick_error < 0); 1368 1369 /* Sort out the magnitude of the correction */ 1370 tick_error = abs(tick_error); 1371 for (adj = 0; tick_error > interval; adj++) 1372 tick_error >>= 1; 1373 1374 /* scale the corrections */ 1375 timekeeping_apply_adjustment(tk, offset, negative, adj); 1376 } 1377 1378 /* 1379 * Adjust the timekeeper's multiplier to the correct frequency 1380 * and also to reduce the accumulated error value. 1381 */ 1382 static void timekeeping_adjust(struct timekeeper *tk, s64 offset) 1383 { 1384 /* Correct for the current frequency error */ 1385 timekeeping_freqadjust(tk, offset); 1386 1387 /* Next make a small adjustment to fix any cumulative error */ 1388 if (!tk->ntp_err_mult && (tk->ntp_error > 0)) { 1389 tk->ntp_err_mult = 1; 1390 timekeeping_apply_adjustment(tk, offset, 0, 0); 1391 } else if (tk->ntp_err_mult && (tk->ntp_error <= 0)) { 1392 /* Undo any existing error adjustment */ 1393 timekeeping_apply_adjustment(tk, offset, 1, 0); 1394 tk->ntp_err_mult = 0; 1395 } 1396 1397 if (unlikely(tk->tkr.clock->maxadj && 1398 (tk->tkr.mult > tk->tkr.clock->mult + tk->tkr.clock->maxadj))) { 1399 printk_once(KERN_WARNING 1400 "Adjusting %s more than 11%% (%ld vs %ld)\n", 1401 tk->tkr.clock->name, (long)tk->tkr.mult, 1402 (long)tk->tkr.clock->mult + tk->tkr.clock->maxadj); 1403 } 1404 1405 /* 1406 * It may be possible that when we entered this function, xtime_nsec 1407 * was very small. Further, if we're slightly speeding the clocksource 1408 * in the code above, its possible the required corrective factor to 1409 * xtime_nsec could cause it to underflow. 1410 * 1411 * Now, since we already accumulated the second, cannot simply roll 1412 * the accumulated second back, since the NTP subsystem has been 1413 * notified via second_overflow. So instead we push xtime_nsec forward 1414 * by the amount we underflowed, and add that amount into the error. 1415 * 1416 * We'll correct this error next time through this function, when 1417 * xtime_nsec is not as small. 1418 */ 1419 if (unlikely((s64)tk->tkr.xtime_nsec < 0)) { 1420 s64 neg = -(s64)tk->tkr.xtime_nsec; 1421 tk->tkr.xtime_nsec = 0; 1422 tk->ntp_error += neg << tk->ntp_error_shift; 1423 } 1424 } 1425 1426 /** 1427 * accumulate_nsecs_to_secs - Accumulates nsecs into secs 1428 * 1429 * Helper function that accumulates a the nsecs greater then a second 1430 * from the xtime_nsec field to the xtime_secs field. 1431 * It also calls into the NTP code to handle leapsecond processing. 1432 * 1433 */ 1434 static inline unsigned int accumulate_nsecs_to_secs(struct timekeeper *tk) 1435 { 1436 u64 nsecps = (u64)NSEC_PER_SEC << tk->tkr.shift; 1437 unsigned int clock_set = 0; 1438 1439 while (tk->tkr.xtime_nsec >= nsecps) { 1440 int leap; 1441 1442 tk->tkr.xtime_nsec -= nsecps; 1443 tk->xtime_sec++; 1444 1445 /* Figure out if its a leap sec and apply if needed */ 1446 leap = second_overflow(tk->xtime_sec); 1447 if (unlikely(leap)) { 1448 struct timespec64 ts; 1449 1450 tk->xtime_sec += leap; 1451 1452 ts.tv_sec = leap; 1453 ts.tv_nsec = 0; 1454 tk_set_wall_to_mono(tk, 1455 timespec64_sub(tk->wall_to_monotonic, ts)); 1456 1457 __timekeeping_set_tai_offset(tk, tk->tai_offset - leap); 1458 1459 clock_set = TK_CLOCK_WAS_SET; 1460 } 1461 } 1462 return clock_set; 1463 } 1464 1465 /** 1466 * logarithmic_accumulation - shifted accumulation of cycles 1467 * 1468 * This functions accumulates a shifted interval of cycles into 1469 * into a shifted interval nanoseconds. Allows for O(log) accumulation 1470 * loop. 1471 * 1472 * Returns the unconsumed cycles. 1473 */ 1474 static cycle_t logarithmic_accumulation(struct timekeeper *tk, cycle_t offset, 1475 u32 shift, 1476 unsigned int *clock_set) 1477 { 1478 cycle_t interval = tk->cycle_interval << shift; 1479 u64 raw_nsecs; 1480 1481 /* If the offset is smaller then a shifted interval, do nothing */ 1482 if (offset < interval) 1483 return offset; 1484 1485 /* Accumulate one shifted interval */ 1486 offset -= interval; 1487 tk->tkr.cycle_last += interval; 1488 1489 tk->tkr.xtime_nsec += tk->xtime_interval << shift; 1490 *clock_set |= accumulate_nsecs_to_secs(tk); 1491 1492 /* Accumulate raw time */ 1493 raw_nsecs = (u64)tk->raw_interval << shift; 1494 raw_nsecs += tk->raw_time.tv_nsec; 1495 if (raw_nsecs >= NSEC_PER_SEC) { 1496 u64 raw_secs = raw_nsecs; 1497 raw_nsecs = do_div(raw_secs, NSEC_PER_SEC); 1498 tk->raw_time.tv_sec += raw_secs; 1499 } 1500 tk->raw_time.tv_nsec = raw_nsecs; 1501 1502 /* Accumulate error between NTP and clock interval */ 1503 tk->ntp_error += tk->ntp_tick << shift; 1504 tk->ntp_error -= (tk->xtime_interval + tk->xtime_remainder) << 1505 (tk->ntp_error_shift + shift); 1506 1507 return offset; 1508 } 1509 1510 /** 1511 * update_wall_time - Uses the current clocksource to increment the wall time 1512 * 1513 */ 1514 void update_wall_time(void) 1515 { 1516 struct timekeeper *real_tk = &tk_core.timekeeper; 1517 struct timekeeper *tk = &shadow_timekeeper; 1518 cycle_t offset; 1519 int shift = 0, maxshift; 1520 unsigned int clock_set = 0; 1521 unsigned long flags; 1522 1523 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1524 1525 /* Make sure we're fully resumed: */ 1526 if (unlikely(timekeeping_suspended)) 1527 goto out; 1528 1529 #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET 1530 offset = real_tk->cycle_interval; 1531 #else 1532 offset = clocksource_delta(tk->tkr.read(tk->tkr.clock), 1533 tk->tkr.cycle_last, tk->tkr.mask); 1534 #endif 1535 1536 /* Check if there's really nothing to do */ 1537 if (offset < real_tk->cycle_interval) 1538 goto out; 1539 1540 /* 1541 * With NO_HZ we may have to accumulate many cycle_intervals 1542 * (think "ticks") worth of time at once. To do this efficiently, 1543 * we calculate the largest doubling multiple of cycle_intervals 1544 * that is smaller than the offset. We then accumulate that 1545 * chunk in one go, and then try to consume the next smaller 1546 * doubled multiple. 1547 */ 1548 shift = ilog2(offset) - ilog2(tk->cycle_interval); 1549 shift = max(0, shift); 1550 /* Bound shift to one less than what overflows tick_length */ 1551 maxshift = (64 - (ilog2(ntp_tick_length())+1)) - 1; 1552 shift = min(shift, maxshift); 1553 while (offset >= tk->cycle_interval) { 1554 offset = logarithmic_accumulation(tk, offset, shift, 1555 &clock_set); 1556 if (offset < tk->cycle_interval<<shift) 1557 shift--; 1558 } 1559 1560 /* correct the clock when NTP error is too big */ 1561 timekeeping_adjust(tk, offset); 1562 1563 /* 1564 * XXX This can be killed once everyone converts 1565 * to the new update_vsyscall. 1566 */ 1567 old_vsyscall_fixup(tk); 1568 1569 /* 1570 * Finally, make sure that after the rounding 1571 * xtime_nsec isn't larger than NSEC_PER_SEC 1572 */ 1573 clock_set |= accumulate_nsecs_to_secs(tk); 1574 1575 write_seqcount_begin(&tk_core.seq); 1576 /* 1577 * Update the real timekeeper. 1578 * 1579 * We could avoid this memcpy by switching pointers, but that 1580 * requires changes to all other timekeeper usage sites as 1581 * well, i.e. move the timekeeper pointer getter into the 1582 * spinlocked/seqcount protected sections. And we trade this 1583 * memcpy under the tk_core.seq against one before we start 1584 * updating. 1585 */ 1586 memcpy(real_tk, tk, sizeof(*tk)); 1587 timekeeping_update(real_tk, clock_set); 1588 write_seqcount_end(&tk_core.seq); 1589 out: 1590 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1591 if (clock_set) 1592 /* Have to call _delayed version, since in irq context*/ 1593 clock_was_set_delayed(); 1594 } 1595 1596 /** 1597 * getboottime - Return the real time of system boot. 1598 * @ts: pointer to the timespec to be set 1599 * 1600 * Returns the wall-time of boot in a timespec. 1601 * 1602 * This is based on the wall_to_monotonic offset and the total suspend 1603 * time. Calls to settimeofday will affect the value returned (which 1604 * basically means that however wrong your real time clock is at boot time, 1605 * you get the right time here). 1606 */ 1607 void getboottime(struct timespec *ts) 1608 { 1609 struct timekeeper *tk = &tk_core.timekeeper; 1610 ktime_t t = ktime_sub(tk->offs_real, tk->offs_boot); 1611 1612 *ts = ktime_to_timespec(t); 1613 } 1614 EXPORT_SYMBOL_GPL(getboottime); 1615 1616 unsigned long get_seconds(void) 1617 { 1618 struct timekeeper *tk = &tk_core.timekeeper; 1619 1620 return tk->xtime_sec; 1621 } 1622 EXPORT_SYMBOL(get_seconds); 1623 1624 struct timespec __current_kernel_time(void) 1625 { 1626 struct timekeeper *tk = &tk_core.timekeeper; 1627 1628 return timespec64_to_timespec(tk_xtime(tk)); 1629 } 1630 1631 struct timespec current_kernel_time(void) 1632 { 1633 struct timekeeper *tk = &tk_core.timekeeper; 1634 struct timespec64 now; 1635 unsigned long seq; 1636 1637 do { 1638 seq = read_seqcount_begin(&tk_core.seq); 1639 1640 now = tk_xtime(tk); 1641 } while (read_seqcount_retry(&tk_core.seq, seq)); 1642 1643 return timespec64_to_timespec(now); 1644 } 1645 EXPORT_SYMBOL(current_kernel_time); 1646 1647 struct timespec get_monotonic_coarse(void) 1648 { 1649 struct timekeeper *tk = &tk_core.timekeeper; 1650 struct timespec64 now, mono; 1651 unsigned long seq; 1652 1653 do { 1654 seq = read_seqcount_begin(&tk_core.seq); 1655 1656 now = tk_xtime(tk); 1657 mono = tk->wall_to_monotonic; 1658 } while (read_seqcount_retry(&tk_core.seq, seq)); 1659 1660 set_normalized_timespec64(&now, now.tv_sec + mono.tv_sec, 1661 now.tv_nsec + mono.tv_nsec); 1662 1663 return timespec64_to_timespec(now); 1664 } 1665 1666 /* 1667 * Must hold jiffies_lock 1668 */ 1669 void do_timer(unsigned long ticks) 1670 { 1671 jiffies_64 += ticks; 1672 calc_global_load(ticks); 1673 } 1674 1675 /** 1676 * ktime_get_update_offsets_tick - hrtimer helper 1677 * @offs_real: pointer to storage for monotonic -> realtime offset 1678 * @offs_boot: pointer to storage for monotonic -> boottime offset 1679 * @offs_tai: pointer to storage for monotonic -> clock tai offset 1680 * 1681 * Returns monotonic time at last tick and various offsets 1682 */ 1683 ktime_t ktime_get_update_offsets_tick(ktime_t *offs_real, ktime_t *offs_boot, 1684 ktime_t *offs_tai) 1685 { 1686 struct timekeeper *tk = &tk_core.timekeeper; 1687 unsigned int seq; 1688 ktime_t base; 1689 u64 nsecs; 1690 1691 do { 1692 seq = read_seqcount_begin(&tk_core.seq); 1693 1694 base = tk->tkr.base_mono; 1695 nsecs = tk->tkr.xtime_nsec >> tk->tkr.shift; 1696 1697 *offs_real = tk->offs_real; 1698 *offs_boot = tk->offs_boot; 1699 *offs_tai = tk->offs_tai; 1700 } while (read_seqcount_retry(&tk_core.seq, seq)); 1701 1702 return ktime_add_ns(base, nsecs); 1703 } 1704 1705 #ifdef CONFIG_HIGH_RES_TIMERS 1706 /** 1707 * ktime_get_update_offsets_now - hrtimer helper 1708 * @offs_real: pointer to storage for monotonic -> realtime offset 1709 * @offs_boot: pointer to storage for monotonic -> boottime offset 1710 * @offs_tai: pointer to storage for monotonic -> clock tai offset 1711 * 1712 * Returns current monotonic time and updates the offsets 1713 * Called from hrtimer_interrupt() or retrigger_next_event() 1714 */ 1715 ktime_t ktime_get_update_offsets_now(ktime_t *offs_real, ktime_t *offs_boot, 1716 ktime_t *offs_tai) 1717 { 1718 struct timekeeper *tk = &tk_core.timekeeper; 1719 unsigned int seq; 1720 ktime_t base; 1721 u64 nsecs; 1722 1723 do { 1724 seq = read_seqcount_begin(&tk_core.seq); 1725 1726 base = tk->tkr.base_mono; 1727 nsecs = timekeeping_get_ns(&tk->tkr); 1728 1729 *offs_real = tk->offs_real; 1730 *offs_boot = tk->offs_boot; 1731 *offs_tai = tk->offs_tai; 1732 } while (read_seqcount_retry(&tk_core.seq, seq)); 1733 1734 return ktime_add_ns(base, nsecs); 1735 } 1736 #endif 1737 1738 /** 1739 * do_adjtimex() - Accessor function to NTP __do_adjtimex function 1740 */ 1741 int do_adjtimex(struct timex *txc) 1742 { 1743 struct timekeeper *tk = &tk_core.timekeeper; 1744 unsigned long flags; 1745 struct timespec64 ts; 1746 s32 orig_tai, tai; 1747 int ret; 1748 1749 /* Validate the data before disabling interrupts */ 1750 ret = ntp_validate_timex(txc); 1751 if (ret) 1752 return ret; 1753 1754 if (txc->modes & ADJ_SETOFFSET) { 1755 struct timespec delta; 1756 delta.tv_sec = txc->time.tv_sec; 1757 delta.tv_nsec = txc->time.tv_usec; 1758 if (!(txc->modes & ADJ_NANO)) 1759 delta.tv_nsec *= 1000; 1760 ret = timekeeping_inject_offset(&delta); 1761 if (ret) 1762 return ret; 1763 } 1764 1765 getnstimeofday64(&ts); 1766 1767 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1768 write_seqcount_begin(&tk_core.seq); 1769 1770 orig_tai = tai = tk->tai_offset; 1771 ret = __do_adjtimex(txc, &ts, &tai); 1772 1773 if (tai != orig_tai) { 1774 __timekeeping_set_tai_offset(tk, tai); 1775 timekeeping_update(tk, TK_MIRROR | TK_CLOCK_WAS_SET); 1776 } 1777 write_seqcount_end(&tk_core.seq); 1778 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1779 1780 if (tai != orig_tai) 1781 clock_was_set(); 1782 1783 ntp_notify_cmos_timer(); 1784 1785 return ret; 1786 } 1787 1788 #ifdef CONFIG_NTP_PPS 1789 /** 1790 * hardpps() - Accessor function to NTP __hardpps function 1791 */ 1792 void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts) 1793 { 1794 unsigned long flags; 1795 1796 raw_spin_lock_irqsave(&timekeeper_lock, flags); 1797 write_seqcount_begin(&tk_core.seq); 1798 1799 __hardpps(phase_ts, raw_ts); 1800 1801 write_seqcount_end(&tk_core.seq); 1802 raw_spin_unlock_irqrestore(&timekeeper_lock, flags); 1803 } 1804 EXPORT_SYMBOL(hardpps); 1805 #endif 1806 1807 /** 1808 * xtime_update() - advances the timekeeping infrastructure 1809 * @ticks: number of ticks, that have elapsed since the last call. 1810 * 1811 * Must be called with interrupts disabled. 1812 */ 1813 void xtime_update(unsigned long ticks) 1814 { 1815 write_seqlock(&jiffies_lock); 1816 do_timer(ticks); 1817 write_sequnlock(&jiffies_lock); 1818 update_wall_time(); 1819 } 1820