1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * This file contains the functions which manage clocksource drivers. 4 * 5 * Copyright (C) 2004, 2005 IBM, John Stultz (johnstul@us.ibm.com) 6 */ 7 8 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 9 10 #include <linux/device.h> 11 #include <linux/clocksource.h> 12 #include <linux/init.h> 13 #include <linux/module.h> 14 #include <linux/sched.h> /* for spin_unlock_irq() using preempt_count() m68k */ 15 #include <linux/tick.h> 16 #include <linux/kthread.h> 17 18 #include "tick-internal.h" 19 #include "timekeeping_internal.h" 20 21 /** 22 * clocks_calc_mult_shift - calculate mult/shift factors for scaled math of clocks 23 * @mult: pointer to mult variable 24 * @shift: pointer to shift variable 25 * @from: frequency to convert from 26 * @to: frequency to convert to 27 * @maxsec: guaranteed runtime conversion range in seconds 28 * 29 * The function evaluates the shift/mult pair for the scaled math 30 * operations of clocksources and clockevents. 31 * 32 * @to and @from are frequency values in HZ. For clock sources @to is 33 * NSEC_PER_SEC == 1GHz and @from is the counter frequency. For clock 34 * event @to is the counter frequency and @from is NSEC_PER_SEC. 35 * 36 * The @maxsec conversion range argument controls the time frame in 37 * seconds which must be covered by the runtime conversion with the 38 * calculated mult and shift factors. This guarantees that no 64bit 39 * overflow happens when the input value of the conversion is 40 * multiplied with the calculated mult factor. Larger ranges may 41 * reduce the conversion accuracy by choosing smaller mult and shift 42 * factors. 43 */ 44 void 45 clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 maxsec) 46 { 47 u64 tmp; 48 u32 sft, sftacc= 32; 49 50 /* 51 * Calculate the shift factor which is limiting the conversion 52 * range: 53 */ 54 tmp = ((u64)maxsec * from) >> 32; 55 while (tmp) { 56 tmp >>=1; 57 sftacc--; 58 } 59 60 /* 61 * Find the conversion shift/mult pair which has the best 62 * accuracy and fits the maxsec conversion range: 63 */ 64 for (sft = 32; sft > 0; sft--) { 65 tmp = (u64) to << sft; 66 tmp += from / 2; 67 do_div(tmp, from); 68 if ((tmp >> sftacc) == 0) 69 break; 70 } 71 *mult = tmp; 72 *shift = sft; 73 } 74 EXPORT_SYMBOL_GPL(clocks_calc_mult_shift); 75 76 /*[Clocksource internal variables]--------- 77 * curr_clocksource: 78 * currently selected clocksource. 79 * suspend_clocksource: 80 * used to calculate the suspend time. 81 * clocksource_list: 82 * linked list with the registered clocksources 83 * clocksource_mutex: 84 * protects manipulations to curr_clocksource and the clocksource_list 85 * override_name: 86 * Name of the user-specified clocksource. 87 */ 88 static struct clocksource *curr_clocksource; 89 static struct clocksource *suspend_clocksource; 90 static LIST_HEAD(clocksource_list); 91 static DEFINE_MUTEX(clocksource_mutex); 92 static char override_name[CS_NAME_LEN]; 93 static int finished_booting; 94 static u64 suspend_start; 95 96 #ifdef CONFIG_CLOCKSOURCE_WATCHDOG 97 static void clocksource_watchdog_work(struct work_struct *work); 98 static void clocksource_select(void); 99 100 static LIST_HEAD(watchdog_list); 101 static struct clocksource *watchdog; 102 static struct timer_list watchdog_timer; 103 static DECLARE_WORK(watchdog_work, clocksource_watchdog_work); 104 static DEFINE_SPINLOCK(watchdog_lock); 105 static int watchdog_running; 106 static atomic_t watchdog_reset_pending; 107 108 static inline void clocksource_watchdog_lock(unsigned long *flags) 109 { 110 spin_lock_irqsave(&watchdog_lock, *flags); 111 } 112 113 static inline void clocksource_watchdog_unlock(unsigned long *flags) 114 { 115 spin_unlock_irqrestore(&watchdog_lock, *flags); 116 } 117 118 static int clocksource_watchdog_kthread(void *data); 119 static void __clocksource_change_rating(struct clocksource *cs, int rating); 120 121 /* 122 * Interval: 0.5sec Threshold: 0.0625s 123 */ 124 #define WATCHDOG_INTERVAL (HZ >> 1) 125 #define WATCHDOG_THRESHOLD (NSEC_PER_SEC >> 4) 126 127 static void clocksource_watchdog_work(struct work_struct *work) 128 { 129 /* 130 * We cannot directly run clocksource_watchdog_kthread() here, because 131 * clocksource_select() calls timekeeping_notify() which uses 132 * stop_machine(). One cannot use stop_machine() from a workqueue() due 133 * lock inversions wrt CPU hotplug. 134 * 135 * Also, we only ever run this work once or twice during the lifetime 136 * of the kernel, so there is no point in creating a more permanent 137 * kthread for this. 138 * 139 * If kthread_run fails the next watchdog scan over the 140 * watchdog_list will find the unstable clock again. 141 */ 142 kthread_run(clocksource_watchdog_kthread, NULL, "kwatchdog"); 143 } 144 145 static void __clocksource_unstable(struct clocksource *cs) 146 { 147 cs->flags &= ~(CLOCK_SOURCE_VALID_FOR_HRES | CLOCK_SOURCE_WATCHDOG); 148 cs->flags |= CLOCK_SOURCE_UNSTABLE; 149 150 /* 151 * If the clocksource is registered clocksource_watchdog_kthread() will 152 * re-rate and re-select. 153 */ 154 if (list_empty(&cs->list)) { 155 cs->rating = 0; 156 return; 157 } 158 159 if (cs->mark_unstable) 160 cs->mark_unstable(cs); 161 162 /* kick clocksource_watchdog_kthread() */ 163 if (finished_booting) 164 schedule_work(&watchdog_work); 165 } 166 167 /** 168 * clocksource_mark_unstable - mark clocksource unstable via watchdog 169 * @cs: clocksource to be marked unstable 170 * 171 * This function is called by the x86 TSC code to mark clocksources as unstable; 172 * it defers demotion and re-selection to a kthread. 173 */ 174 void clocksource_mark_unstable(struct clocksource *cs) 175 { 176 unsigned long flags; 177 178 spin_lock_irqsave(&watchdog_lock, flags); 179 if (!(cs->flags & CLOCK_SOURCE_UNSTABLE)) { 180 if (!list_empty(&cs->list) && list_empty(&cs->wd_list)) 181 list_add(&cs->wd_list, &watchdog_list); 182 __clocksource_unstable(cs); 183 } 184 spin_unlock_irqrestore(&watchdog_lock, flags); 185 } 186 187 static void clocksource_watchdog(struct timer_list *unused) 188 { 189 struct clocksource *cs; 190 u64 csnow, wdnow, cslast, wdlast, delta; 191 int64_t wd_nsec, cs_nsec; 192 int next_cpu, reset_pending; 193 194 spin_lock(&watchdog_lock); 195 if (!watchdog_running) 196 goto out; 197 198 reset_pending = atomic_read(&watchdog_reset_pending); 199 200 list_for_each_entry(cs, &watchdog_list, wd_list) { 201 202 /* Clocksource already marked unstable? */ 203 if (cs->flags & CLOCK_SOURCE_UNSTABLE) { 204 if (finished_booting) 205 schedule_work(&watchdog_work); 206 continue; 207 } 208 209 local_irq_disable(); 210 csnow = cs->read(cs); 211 wdnow = watchdog->read(watchdog); 212 local_irq_enable(); 213 214 /* Clocksource initialized ? */ 215 if (!(cs->flags & CLOCK_SOURCE_WATCHDOG) || 216 atomic_read(&watchdog_reset_pending)) { 217 cs->flags |= CLOCK_SOURCE_WATCHDOG; 218 cs->wd_last = wdnow; 219 cs->cs_last = csnow; 220 continue; 221 } 222 223 delta = clocksource_delta(wdnow, cs->wd_last, watchdog->mask); 224 wd_nsec = clocksource_cyc2ns(delta, watchdog->mult, 225 watchdog->shift); 226 227 delta = clocksource_delta(csnow, cs->cs_last, cs->mask); 228 cs_nsec = clocksource_cyc2ns(delta, cs->mult, cs->shift); 229 wdlast = cs->wd_last; /* save these in case we print them */ 230 cslast = cs->cs_last; 231 cs->cs_last = csnow; 232 cs->wd_last = wdnow; 233 234 if (atomic_read(&watchdog_reset_pending)) 235 continue; 236 237 /* Check the deviation from the watchdog clocksource. */ 238 if (abs(cs_nsec - wd_nsec) > WATCHDOG_THRESHOLD) { 239 pr_warn("timekeeping watchdog on CPU%d: Marking clocksource '%s' as unstable because the skew is too large:\n", 240 smp_processor_id(), cs->name); 241 pr_warn(" '%s' wd_now: %llx wd_last: %llx mask: %llx\n", 242 watchdog->name, wdnow, wdlast, watchdog->mask); 243 pr_warn(" '%s' cs_now: %llx cs_last: %llx mask: %llx\n", 244 cs->name, csnow, cslast, cs->mask); 245 __clocksource_unstable(cs); 246 continue; 247 } 248 249 if (cs == curr_clocksource && cs->tick_stable) 250 cs->tick_stable(cs); 251 252 if (!(cs->flags & CLOCK_SOURCE_VALID_FOR_HRES) && 253 (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) && 254 (watchdog->flags & CLOCK_SOURCE_IS_CONTINUOUS)) { 255 /* Mark it valid for high-res. */ 256 cs->flags |= CLOCK_SOURCE_VALID_FOR_HRES; 257 258 /* 259 * clocksource_done_booting() will sort it if 260 * finished_booting is not set yet. 261 */ 262 if (!finished_booting) 263 continue; 264 265 /* 266 * If this is not the current clocksource let 267 * the watchdog thread reselect it. Due to the 268 * change to high res this clocksource might 269 * be preferred now. If it is the current 270 * clocksource let the tick code know about 271 * that change. 272 */ 273 if (cs != curr_clocksource) { 274 cs->flags |= CLOCK_SOURCE_RESELECT; 275 schedule_work(&watchdog_work); 276 } else { 277 tick_clock_notify(); 278 } 279 } 280 } 281 282 /* 283 * We only clear the watchdog_reset_pending, when we did a 284 * full cycle through all clocksources. 285 */ 286 if (reset_pending) 287 atomic_dec(&watchdog_reset_pending); 288 289 /* 290 * Cycle through CPUs to check if the CPUs stay synchronized 291 * to each other. 292 */ 293 next_cpu = cpumask_next(raw_smp_processor_id(), cpu_online_mask); 294 if (next_cpu >= nr_cpu_ids) 295 next_cpu = cpumask_first(cpu_online_mask); 296 297 /* 298 * Arm timer if not already pending: could race with concurrent 299 * pair clocksource_stop_watchdog() clocksource_start_watchdog(). 300 */ 301 if (!timer_pending(&watchdog_timer)) { 302 watchdog_timer.expires += WATCHDOG_INTERVAL; 303 add_timer_on(&watchdog_timer, next_cpu); 304 } 305 out: 306 spin_unlock(&watchdog_lock); 307 } 308 309 static inline void clocksource_start_watchdog(void) 310 { 311 if (watchdog_running || !watchdog || list_empty(&watchdog_list)) 312 return; 313 timer_setup(&watchdog_timer, clocksource_watchdog, 0); 314 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; 315 add_timer_on(&watchdog_timer, cpumask_first(cpu_online_mask)); 316 watchdog_running = 1; 317 } 318 319 static inline void clocksource_stop_watchdog(void) 320 { 321 if (!watchdog_running || (watchdog && !list_empty(&watchdog_list))) 322 return; 323 del_timer(&watchdog_timer); 324 watchdog_running = 0; 325 } 326 327 static inline void clocksource_reset_watchdog(void) 328 { 329 struct clocksource *cs; 330 331 list_for_each_entry(cs, &watchdog_list, wd_list) 332 cs->flags &= ~CLOCK_SOURCE_WATCHDOG; 333 } 334 335 static void clocksource_resume_watchdog(void) 336 { 337 atomic_inc(&watchdog_reset_pending); 338 } 339 340 static void clocksource_enqueue_watchdog(struct clocksource *cs) 341 { 342 INIT_LIST_HEAD(&cs->wd_list); 343 344 if (cs->flags & CLOCK_SOURCE_MUST_VERIFY) { 345 /* cs is a clocksource to be watched. */ 346 list_add(&cs->wd_list, &watchdog_list); 347 cs->flags &= ~CLOCK_SOURCE_WATCHDOG; 348 } else { 349 /* cs is a watchdog. */ 350 if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) 351 cs->flags |= CLOCK_SOURCE_VALID_FOR_HRES; 352 } 353 } 354 355 static void clocksource_select_watchdog(bool fallback) 356 { 357 struct clocksource *cs, *old_wd; 358 unsigned long flags; 359 360 spin_lock_irqsave(&watchdog_lock, flags); 361 /* save current watchdog */ 362 old_wd = watchdog; 363 if (fallback) 364 watchdog = NULL; 365 366 list_for_each_entry(cs, &clocksource_list, list) { 367 /* cs is a clocksource to be watched. */ 368 if (cs->flags & CLOCK_SOURCE_MUST_VERIFY) 369 continue; 370 371 /* Skip current if we were requested for a fallback. */ 372 if (fallback && cs == old_wd) 373 continue; 374 375 /* Pick the best watchdog. */ 376 if (!watchdog || cs->rating > watchdog->rating) 377 watchdog = cs; 378 } 379 /* If we failed to find a fallback restore the old one. */ 380 if (!watchdog) 381 watchdog = old_wd; 382 383 /* If we changed the watchdog we need to reset cycles. */ 384 if (watchdog != old_wd) 385 clocksource_reset_watchdog(); 386 387 /* Check if the watchdog timer needs to be started. */ 388 clocksource_start_watchdog(); 389 spin_unlock_irqrestore(&watchdog_lock, flags); 390 } 391 392 static void clocksource_dequeue_watchdog(struct clocksource *cs) 393 { 394 if (cs != watchdog) { 395 if (cs->flags & CLOCK_SOURCE_MUST_VERIFY) { 396 /* cs is a watched clocksource. */ 397 list_del_init(&cs->wd_list); 398 /* Check if the watchdog timer needs to be stopped. */ 399 clocksource_stop_watchdog(); 400 } 401 } 402 } 403 404 static int __clocksource_watchdog_kthread(void) 405 { 406 struct clocksource *cs, *tmp; 407 unsigned long flags; 408 int select = 0; 409 410 spin_lock_irqsave(&watchdog_lock, flags); 411 list_for_each_entry_safe(cs, tmp, &watchdog_list, wd_list) { 412 if (cs->flags & CLOCK_SOURCE_UNSTABLE) { 413 list_del_init(&cs->wd_list); 414 __clocksource_change_rating(cs, 0); 415 select = 1; 416 } 417 if (cs->flags & CLOCK_SOURCE_RESELECT) { 418 cs->flags &= ~CLOCK_SOURCE_RESELECT; 419 select = 1; 420 } 421 } 422 /* Check if the watchdog timer needs to be stopped. */ 423 clocksource_stop_watchdog(); 424 spin_unlock_irqrestore(&watchdog_lock, flags); 425 426 return select; 427 } 428 429 static int clocksource_watchdog_kthread(void *data) 430 { 431 mutex_lock(&clocksource_mutex); 432 if (__clocksource_watchdog_kthread()) 433 clocksource_select(); 434 mutex_unlock(&clocksource_mutex); 435 return 0; 436 } 437 438 static bool clocksource_is_watchdog(struct clocksource *cs) 439 { 440 return cs == watchdog; 441 } 442 443 #else /* CONFIG_CLOCKSOURCE_WATCHDOG */ 444 445 static void clocksource_enqueue_watchdog(struct clocksource *cs) 446 { 447 if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) 448 cs->flags |= CLOCK_SOURCE_VALID_FOR_HRES; 449 } 450 451 static void clocksource_select_watchdog(bool fallback) { } 452 static inline void clocksource_dequeue_watchdog(struct clocksource *cs) { } 453 static inline void clocksource_resume_watchdog(void) { } 454 static inline int __clocksource_watchdog_kthread(void) { return 0; } 455 static bool clocksource_is_watchdog(struct clocksource *cs) { return false; } 456 void clocksource_mark_unstable(struct clocksource *cs) { } 457 458 static inline void clocksource_watchdog_lock(unsigned long *flags) { } 459 static inline void clocksource_watchdog_unlock(unsigned long *flags) { } 460 461 #endif /* CONFIG_CLOCKSOURCE_WATCHDOG */ 462 463 static bool clocksource_is_suspend(struct clocksource *cs) 464 { 465 return cs == suspend_clocksource; 466 } 467 468 static void __clocksource_suspend_select(struct clocksource *cs) 469 { 470 /* 471 * Skip the clocksource which will be stopped in suspend state. 472 */ 473 if (!(cs->flags & CLOCK_SOURCE_SUSPEND_NONSTOP)) 474 return; 475 476 /* 477 * The nonstop clocksource can be selected as the suspend clocksource to 478 * calculate the suspend time, so it should not supply suspend/resume 479 * interfaces to suspend the nonstop clocksource when system suspends. 480 */ 481 if (cs->suspend || cs->resume) { 482 pr_warn("Nonstop clocksource %s should not supply suspend/resume interfaces\n", 483 cs->name); 484 } 485 486 /* Pick the best rating. */ 487 if (!suspend_clocksource || cs->rating > suspend_clocksource->rating) 488 suspend_clocksource = cs; 489 } 490 491 /** 492 * clocksource_suspend_select - Select the best clocksource for suspend timing 493 * @fallback: if select a fallback clocksource 494 */ 495 static void clocksource_suspend_select(bool fallback) 496 { 497 struct clocksource *cs, *old_suspend; 498 499 old_suspend = suspend_clocksource; 500 if (fallback) 501 suspend_clocksource = NULL; 502 503 list_for_each_entry(cs, &clocksource_list, list) { 504 /* Skip current if we were requested for a fallback. */ 505 if (fallback && cs == old_suspend) 506 continue; 507 508 __clocksource_suspend_select(cs); 509 } 510 } 511 512 /** 513 * clocksource_start_suspend_timing - Start measuring the suspend timing 514 * @cs: current clocksource from timekeeping 515 * @start_cycles: current cycles from timekeeping 516 * 517 * This function will save the start cycle values of suspend timer to calculate 518 * the suspend time when resuming system. 519 * 520 * This function is called late in the suspend process from timekeeping_suspend(), 521 * that means processes are frozen, non-boot cpus and interrupts are disabled 522 * now. It is therefore possible to start the suspend timer without taking the 523 * clocksource mutex. 524 */ 525 void clocksource_start_suspend_timing(struct clocksource *cs, u64 start_cycles) 526 { 527 if (!suspend_clocksource) 528 return; 529 530 /* 531 * If current clocksource is the suspend timer, we should use the 532 * tkr_mono.cycle_last value as suspend_start to avoid same reading 533 * from suspend timer. 534 */ 535 if (clocksource_is_suspend(cs)) { 536 suspend_start = start_cycles; 537 return; 538 } 539 540 if (suspend_clocksource->enable && 541 suspend_clocksource->enable(suspend_clocksource)) { 542 pr_warn_once("Failed to enable the non-suspend-able clocksource.\n"); 543 return; 544 } 545 546 suspend_start = suspend_clocksource->read(suspend_clocksource); 547 } 548 549 /** 550 * clocksource_stop_suspend_timing - Stop measuring the suspend timing 551 * @cs: current clocksource from timekeeping 552 * @cycle_now: current cycles from timekeeping 553 * 554 * This function will calculate the suspend time from suspend timer. 555 * 556 * Returns nanoseconds since suspend started, 0 if no usable suspend clocksource. 557 * 558 * This function is called early in the resume process from timekeeping_resume(), 559 * that means there is only one cpu, no processes are running and the interrupts 560 * are disabled. It is therefore possible to stop the suspend timer without 561 * taking the clocksource mutex. 562 */ 563 u64 clocksource_stop_suspend_timing(struct clocksource *cs, u64 cycle_now) 564 { 565 u64 now, delta, nsec = 0; 566 567 if (!suspend_clocksource) 568 return 0; 569 570 /* 571 * If current clocksource is the suspend timer, we should use the 572 * tkr_mono.cycle_last value from timekeeping as current cycle to 573 * avoid same reading from suspend timer. 574 */ 575 if (clocksource_is_suspend(cs)) 576 now = cycle_now; 577 else 578 now = suspend_clocksource->read(suspend_clocksource); 579 580 if (now > suspend_start) { 581 delta = clocksource_delta(now, suspend_start, 582 suspend_clocksource->mask); 583 nsec = mul_u64_u32_shr(delta, suspend_clocksource->mult, 584 suspend_clocksource->shift); 585 } 586 587 /* 588 * Disable the suspend timer to save power if current clocksource is 589 * not the suspend timer. 590 */ 591 if (!clocksource_is_suspend(cs) && suspend_clocksource->disable) 592 suspend_clocksource->disable(suspend_clocksource); 593 594 return nsec; 595 } 596 597 /** 598 * clocksource_suspend - suspend the clocksource(s) 599 */ 600 void clocksource_suspend(void) 601 { 602 struct clocksource *cs; 603 604 list_for_each_entry_reverse(cs, &clocksource_list, list) 605 if (cs->suspend) 606 cs->suspend(cs); 607 } 608 609 /** 610 * clocksource_resume - resume the clocksource(s) 611 */ 612 void clocksource_resume(void) 613 { 614 struct clocksource *cs; 615 616 list_for_each_entry(cs, &clocksource_list, list) 617 if (cs->resume) 618 cs->resume(cs); 619 620 clocksource_resume_watchdog(); 621 } 622 623 /** 624 * clocksource_touch_watchdog - Update watchdog 625 * 626 * Update the watchdog after exception contexts such as kgdb so as not 627 * to incorrectly trip the watchdog. This might fail when the kernel 628 * was stopped in code which holds watchdog_lock. 629 */ 630 void clocksource_touch_watchdog(void) 631 { 632 clocksource_resume_watchdog(); 633 } 634 635 /** 636 * clocksource_max_adjustment- Returns max adjustment amount 637 * @cs: Pointer to clocksource 638 * 639 */ 640 static u32 clocksource_max_adjustment(struct clocksource *cs) 641 { 642 u64 ret; 643 /* 644 * We won't try to correct for more than 11% adjustments (110,000 ppm), 645 */ 646 ret = (u64)cs->mult * 11; 647 do_div(ret,100); 648 return (u32)ret; 649 } 650 651 /** 652 * clocks_calc_max_nsecs - Returns maximum nanoseconds that can be converted 653 * @mult: cycle to nanosecond multiplier 654 * @shift: cycle to nanosecond divisor (power of two) 655 * @maxadj: maximum adjustment value to mult (~11%) 656 * @mask: bitmask for two's complement subtraction of non 64 bit counters 657 * @max_cyc: maximum cycle value before potential overflow (does not include 658 * any safety margin) 659 * 660 * NOTE: This function includes a safety margin of 50%, in other words, we 661 * return half the number of nanoseconds the hardware counter can technically 662 * cover. This is done so that we can potentially detect problems caused by 663 * delayed timers or bad hardware, which might result in time intervals that 664 * are larger than what the math used can handle without overflows. 665 */ 666 u64 clocks_calc_max_nsecs(u32 mult, u32 shift, u32 maxadj, u64 mask, u64 *max_cyc) 667 { 668 u64 max_nsecs, max_cycles; 669 670 /* 671 * Calculate the maximum number of cycles that we can pass to the 672 * cyc2ns() function without overflowing a 64-bit result. 673 */ 674 max_cycles = ULLONG_MAX; 675 do_div(max_cycles, mult+maxadj); 676 677 /* 678 * The actual maximum number of cycles we can defer the clocksource is 679 * determined by the minimum of max_cycles and mask. 680 * Note: Here we subtract the maxadj to make sure we don't sleep for 681 * too long if there's a large negative adjustment. 682 */ 683 max_cycles = min(max_cycles, mask); 684 max_nsecs = clocksource_cyc2ns(max_cycles, mult - maxadj, shift); 685 686 /* return the max_cycles value as well if requested */ 687 if (max_cyc) 688 *max_cyc = max_cycles; 689 690 /* Return 50% of the actual maximum, so we can detect bad values */ 691 max_nsecs >>= 1; 692 693 return max_nsecs; 694 } 695 696 /** 697 * clocksource_update_max_deferment - Updates the clocksource max_idle_ns & max_cycles 698 * @cs: Pointer to clocksource to be updated 699 * 700 */ 701 static inline void clocksource_update_max_deferment(struct clocksource *cs) 702 { 703 cs->max_idle_ns = clocks_calc_max_nsecs(cs->mult, cs->shift, 704 cs->maxadj, cs->mask, 705 &cs->max_cycles); 706 } 707 708 static struct clocksource *clocksource_find_best(bool oneshot, bool skipcur) 709 { 710 struct clocksource *cs; 711 712 if (!finished_booting || list_empty(&clocksource_list)) 713 return NULL; 714 715 /* 716 * We pick the clocksource with the highest rating. If oneshot 717 * mode is active, we pick the highres valid clocksource with 718 * the best rating. 719 */ 720 list_for_each_entry(cs, &clocksource_list, list) { 721 if (skipcur && cs == curr_clocksource) 722 continue; 723 if (oneshot && !(cs->flags & CLOCK_SOURCE_VALID_FOR_HRES)) 724 continue; 725 return cs; 726 } 727 return NULL; 728 } 729 730 static void __clocksource_select(bool skipcur) 731 { 732 bool oneshot = tick_oneshot_mode_active(); 733 struct clocksource *best, *cs; 734 735 /* Find the best suitable clocksource */ 736 best = clocksource_find_best(oneshot, skipcur); 737 if (!best) 738 return; 739 740 if (!strlen(override_name)) 741 goto found; 742 743 /* Check for the override clocksource. */ 744 list_for_each_entry(cs, &clocksource_list, list) { 745 if (skipcur && cs == curr_clocksource) 746 continue; 747 if (strcmp(cs->name, override_name) != 0) 748 continue; 749 /* 750 * Check to make sure we don't switch to a non-highres 751 * capable clocksource if the tick code is in oneshot 752 * mode (highres or nohz) 753 */ 754 if (!(cs->flags & CLOCK_SOURCE_VALID_FOR_HRES) && oneshot) { 755 /* Override clocksource cannot be used. */ 756 if (cs->flags & CLOCK_SOURCE_UNSTABLE) { 757 pr_warn("Override clocksource %s is unstable and not HRT compatible - cannot switch while in HRT/NOHZ mode\n", 758 cs->name); 759 override_name[0] = 0; 760 } else { 761 /* 762 * The override cannot be currently verified. 763 * Deferring to let the watchdog check. 764 */ 765 pr_info("Override clocksource %s is not currently HRT compatible - deferring\n", 766 cs->name); 767 } 768 } else 769 /* Override clocksource can be used. */ 770 best = cs; 771 break; 772 } 773 774 found: 775 if (curr_clocksource != best && !timekeeping_notify(best)) { 776 pr_info("Switched to clocksource %s\n", best->name); 777 curr_clocksource = best; 778 } 779 } 780 781 /** 782 * clocksource_select - Select the best clocksource available 783 * 784 * Private function. Must hold clocksource_mutex when called. 785 * 786 * Select the clocksource with the best rating, or the clocksource, 787 * which is selected by userspace override. 788 */ 789 static void clocksource_select(void) 790 { 791 __clocksource_select(false); 792 } 793 794 static void clocksource_select_fallback(void) 795 { 796 __clocksource_select(true); 797 } 798 799 /* 800 * clocksource_done_booting - Called near the end of core bootup 801 * 802 * Hack to avoid lots of clocksource churn at boot time. 803 * We use fs_initcall because we want this to start before 804 * device_initcall but after subsys_initcall. 805 */ 806 static int __init clocksource_done_booting(void) 807 { 808 mutex_lock(&clocksource_mutex); 809 curr_clocksource = clocksource_default_clock(); 810 finished_booting = 1; 811 /* 812 * Run the watchdog first to eliminate unstable clock sources 813 */ 814 __clocksource_watchdog_kthread(); 815 clocksource_select(); 816 mutex_unlock(&clocksource_mutex); 817 return 0; 818 } 819 fs_initcall(clocksource_done_booting); 820 821 /* 822 * Enqueue the clocksource sorted by rating 823 */ 824 static void clocksource_enqueue(struct clocksource *cs) 825 { 826 struct list_head *entry = &clocksource_list; 827 struct clocksource *tmp; 828 829 list_for_each_entry(tmp, &clocksource_list, list) { 830 /* Keep track of the place, where to insert */ 831 if (tmp->rating < cs->rating) 832 break; 833 entry = &tmp->list; 834 } 835 list_add(&cs->list, entry); 836 } 837 838 /** 839 * __clocksource_update_freq_scale - Used update clocksource with new freq 840 * @cs: clocksource to be registered 841 * @scale: Scale factor multiplied against freq to get clocksource hz 842 * @freq: clocksource frequency (cycles per second) divided by scale 843 * 844 * This should only be called from the clocksource->enable() method. 845 * 846 * This *SHOULD NOT* be called directly! Please use the 847 * __clocksource_update_freq_hz() or __clocksource_update_freq_khz() helper 848 * functions. 849 */ 850 void __clocksource_update_freq_scale(struct clocksource *cs, u32 scale, u32 freq) 851 { 852 u64 sec; 853 854 /* 855 * Default clocksources are *special* and self-define their mult/shift. 856 * But, you're not special, so you should specify a freq value. 857 */ 858 if (freq) { 859 /* 860 * Calc the maximum number of seconds which we can run before 861 * wrapping around. For clocksources which have a mask > 32-bit 862 * we need to limit the max sleep time to have a good 863 * conversion precision. 10 minutes is still a reasonable 864 * amount. That results in a shift value of 24 for a 865 * clocksource with mask >= 40-bit and f >= 4GHz. That maps to 866 * ~ 0.06ppm granularity for NTP. 867 */ 868 sec = cs->mask; 869 do_div(sec, freq); 870 do_div(sec, scale); 871 if (!sec) 872 sec = 1; 873 else if (sec > 600 && cs->mask > UINT_MAX) 874 sec = 600; 875 876 clocks_calc_mult_shift(&cs->mult, &cs->shift, freq, 877 NSEC_PER_SEC / scale, sec * scale); 878 } 879 /* 880 * Ensure clocksources that have large 'mult' values don't overflow 881 * when adjusted. 882 */ 883 cs->maxadj = clocksource_max_adjustment(cs); 884 while (freq && ((cs->mult + cs->maxadj < cs->mult) 885 || (cs->mult - cs->maxadj > cs->mult))) { 886 cs->mult >>= 1; 887 cs->shift--; 888 cs->maxadj = clocksource_max_adjustment(cs); 889 } 890 891 /* 892 * Only warn for *special* clocksources that self-define 893 * their mult/shift values and don't specify a freq. 894 */ 895 WARN_ONCE(cs->mult + cs->maxadj < cs->mult, 896 "timekeeping: Clocksource %s might overflow on 11%% adjustment\n", 897 cs->name); 898 899 clocksource_update_max_deferment(cs); 900 901 pr_info("%s: mask: 0x%llx max_cycles: 0x%llx, max_idle_ns: %lld ns\n", 902 cs->name, cs->mask, cs->max_cycles, cs->max_idle_ns); 903 } 904 EXPORT_SYMBOL_GPL(__clocksource_update_freq_scale); 905 906 /** 907 * __clocksource_register_scale - Used to install new clocksources 908 * @cs: clocksource to be registered 909 * @scale: Scale factor multiplied against freq to get clocksource hz 910 * @freq: clocksource frequency (cycles per second) divided by scale 911 * 912 * Returns -EBUSY if registration fails, zero otherwise. 913 * 914 * This *SHOULD NOT* be called directly! Please use the 915 * clocksource_register_hz() or clocksource_register_khz helper functions. 916 */ 917 int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq) 918 { 919 unsigned long flags; 920 921 clocksource_arch_init(cs); 922 923 if (WARN_ON_ONCE((unsigned int)cs->id >= CSID_MAX)) 924 cs->id = CSID_GENERIC; 925 if (cs->vdso_clock_mode < 0 || 926 cs->vdso_clock_mode >= VDSO_CLOCKMODE_MAX) { 927 pr_warn("clocksource %s registered with invalid VDSO mode %d. Disabling VDSO support.\n", 928 cs->name, cs->vdso_clock_mode); 929 cs->vdso_clock_mode = VDSO_CLOCKMODE_NONE; 930 } 931 932 /* Initialize mult/shift and max_idle_ns */ 933 __clocksource_update_freq_scale(cs, scale, freq); 934 935 /* Add clocksource to the clocksource list */ 936 mutex_lock(&clocksource_mutex); 937 938 clocksource_watchdog_lock(&flags); 939 clocksource_enqueue(cs); 940 clocksource_enqueue_watchdog(cs); 941 clocksource_watchdog_unlock(&flags); 942 943 clocksource_select(); 944 clocksource_select_watchdog(false); 945 __clocksource_suspend_select(cs); 946 mutex_unlock(&clocksource_mutex); 947 return 0; 948 } 949 EXPORT_SYMBOL_GPL(__clocksource_register_scale); 950 951 static void __clocksource_change_rating(struct clocksource *cs, int rating) 952 { 953 list_del(&cs->list); 954 cs->rating = rating; 955 clocksource_enqueue(cs); 956 } 957 958 /** 959 * clocksource_change_rating - Change the rating of a registered clocksource 960 * @cs: clocksource to be changed 961 * @rating: new rating 962 */ 963 void clocksource_change_rating(struct clocksource *cs, int rating) 964 { 965 unsigned long flags; 966 967 mutex_lock(&clocksource_mutex); 968 clocksource_watchdog_lock(&flags); 969 __clocksource_change_rating(cs, rating); 970 clocksource_watchdog_unlock(&flags); 971 972 clocksource_select(); 973 clocksource_select_watchdog(false); 974 clocksource_suspend_select(false); 975 mutex_unlock(&clocksource_mutex); 976 } 977 EXPORT_SYMBOL(clocksource_change_rating); 978 979 /* 980 * Unbind clocksource @cs. Called with clocksource_mutex held 981 */ 982 static int clocksource_unbind(struct clocksource *cs) 983 { 984 unsigned long flags; 985 986 if (clocksource_is_watchdog(cs)) { 987 /* Select and try to install a replacement watchdog. */ 988 clocksource_select_watchdog(true); 989 if (clocksource_is_watchdog(cs)) 990 return -EBUSY; 991 } 992 993 if (cs == curr_clocksource) { 994 /* Select and try to install a replacement clock source */ 995 clocksource_select_fallback(); 996 if (curr_clocksource == cs) 997 return -EBUSY; 998 } 999 1000 if (clocksource_is_suspend(cs)) { 1001 /* 1002 * Select and try to install a replacement suspend clocksource. 1003 * If no replacement suspend clocksource, we will just let the 1004 * clocksource go and have no suspend clocksource. 1005 */ 1006 clocksource_suspend_select(true); 1007 } 1008 1009 clocksource_watchdog_lock(&flags); 1010 clocksource_dequeue_watchdog(cs); 1011 list_del_init(&cs->list); 1012 clocksource_watchdog_unlock(&flags); 1013 1014 return 0; 1015 } 1016 1017 /** 1018 * clocksource_unregister - remove a registered clocksource 1019 * @cs: clocksource to be unregistered 1020 */ 1021 int clocksource_unregister(struct clocksource *cs) 1022 { 1023 int ret = 0; 1024 1025 mutex_lock(&clocksource_mutex); 1026 if (!list_empty(&cs->list)) 1027 ret = clocksource_unbind(cs); 1028 mutex_unlock(&clocksource_mutex); 1029 return ret; 1030 } 1031 EXPORT_SYMBOL(clocksource_unregister); 1032 1033 #ifdef CONFIG_SYSFS 1034 /** 1035 * current_clocksource_show - sysfs interface for current clocksource 1036 * @dev: unused 1037 * @attr: unused 1038 * @buf: char buffer to be filled with clocksource list 1039 * 1040 * Provides sysfs interface for listing current clocksource. 1041 */ 1042 static ssize_t current_clocksource_show(struct device *dev, 1043 struct device_attribute *attr, 1044 char *buf) 1045 { 1046 ssize_t count = 0; 1047 1048 mutex_lock(&clocksource_mutex); 1049 count = snprintf(buf, PAGE_SIZE, "%s\n", curr_clocksource->name); 1050 mutex_unlock(&clocksource_mutex); 1051 1052 return count; 1053 } 1054 1055 ssize_t sysfs_get_uname(const char *buf, char *dst, size_t cnt) 1056 { 1057 size_t ret = cnt; 1058 1059 /* strings from sysfs write are not 0 terminated! */ 1060 if (!cnt || cnt >= CS_NAME_LEN) 1061 return -EINVAL; 1062 1063 /* strip of \n: */ 1064 if (buf[cnt-1] == '\n') 1065 cnt--; 1066 if (cnt > 0) 1067 memcpy(dst, buf, cnt); 1068 dst[cnt] = 0; 1069 return ret; 1070 } 1071 1072 /** 1073 * current_clocksource_store - interface for manually overriding clocksource 1074 * @dev: unused 1075 * @attr: unused 1076 * @buf: name of override clocksource 1077 * @count: length of buffer 1078 * 1079 * Takes input from sysfs interface for manually overriding the default 1080 * clocksource selection. 1081 */ 1082 static ssize_t current_clocksource_store(struct device *dev, 1083 struct device_attribute *attr, 1084 const char *buf, size_t count) 1085 { 1086 ssize_t ret; 1087 1088 mutex_lock(&clocksource_mutex); 1089 1090 ret = sysfs_get_uname(buf, override_name, count); 1091 if (ret >= 0) 1092 clocksource_select(); 1093 1094 mutex_unlock(&clocksource_mutex); 1095 1096 return ret; 1097 } 1098 static DEVICE_ATTR_RW(current_clocksource); 1099 1100 /** 1101 * unbind_clocksource_store - interface for manually unbinding clocksource 1102 * @dev: unused 1103 * @attr: unused 1104 * @buf: unused 1105 * @count: length of buffer 1106 * 1107 * Takes input from sysfs interface for manually unbinding a clocksource. 1108 */ 1109 static ssize_t unbind_clocksource_store(struct device *dev, 1110 struct device_attribute *attr, 1111 const char *buf, size_t count) 1112 { 1113 struct clocksource *cs; 1114 char name[CS_NAME_LEN]; 1115 ssize_t ret; 1116 1117 ret = sysfs_get_uname(buf, name, count); 1118 if (ret < 0) 1119 return ret; 1120 1121 ret = -ENODEV; 1122 mutex_lock(&clocksource_mutex); 1123 list_for_each_entry(cs, &clocksource_list, list) { 1124 if (strcmp(cs->name, name)) 1125 continue; 1126 ret = clocksource_unbind(cs); 1127 break; 1128 } 1129 mutex_unlock(&clocksource_mutex); 1130 1131 return ret ? ret : count; 1132 } 1133 static DEVICE_ATTR_WO(unbind_clocksource); 1134 1135 /** 1136 * available_clocksource_show - sysfs interface for listing clocksource 1137 * @dev: unused 1138 * @attr: unused 1139 * @buf: char buffer to be filled with clocksource list 1140 * 1141 * Provides sysfs interface for listing registered clocksources 1142 */ 1143 static ssize_t available_clocksource_show(struct device *dev, 1144 struct device_attribute *attr, 1145 char *buf) 1146 { 1147 struct clocksource *src; 1148 ssize_t count = 0; 1149 1150 mutex_lock(&clocksource_mutex); 1151 list_for_each_entry(src, &clocksource_list, list) { 1152 /* 1153 * Don't show non-HRES clocksource if the tick code is 1154 * in one shot mode (highres=on or nohz=on) 1155 */ 1156 if (!tick_oneshot_mode_active() || 1157 (src->flags & CLOCK_SOURCE_VALID_FOR_HRES)) 1158 count += snprintf(buf + count, 1159 max((ssize_t)PAGE_SIZE - count, (ssize_t)0), 1160 "%s ", src->name); 1161 } 1162 mutex_unlock(&clocksource_mutex); 1163 1164 count += snprintf(buf + count, 1165 max((ssize_t)PAGE_SIZE - count, (ssize_t)0), "\n"); 1166 1167 return count; 1168 } 1169 static DEVICE_ATTR_RO(available_clocksource); 1170 1171 static struct attribute *clocksource_attrs[] = { 1172 &dev_attr_current_clocksource.attr, 1173 &dev_attr_unbind_clocksource.attr, 1174 &dev_attr_available_clocksource.attr, 1175 NULL 1176 }; 1177 ATTRIBUTE_GROUPS(clocksource); 1178 1179 static struct bus_type clocksource_subsys = { 1180 .name = "clocksource", 1181 .dev_name = "clocksource", 1182 }; 1183 1184 static struct device device_clocksource = { 1185 .id = 0, 1186 .bus = &clocksource_subsys, 1187 .groups = clocksource_groups, 1188 }; 1189 1190 static int __init init_clocksource_sysfs(void) 1191 { 1192 int error = subsys_system_register(&clocksource_subsys, NULL); 1193 1194 if (!error) 1195 error = device_register(&device_clocksource); 1196 1197 return error; 1198 } 1199 1200 device_initcall(init_clocksource_sysfs); 1201 #endif /* CONFIG_SYSFS */ 1202 1203 /** 1204 * boot_override_clocksource - boot clock override 1205 * @str: override name 1206 * 1207 * Takes a clocksource= boot argument and uses it 1208 * as the clocksource override name. 1209 */ 1210 static int __init boot_override_clocksource(char* str) 1211 { 1212 mutex_lock(&clocksource_mutex); 1213 if (str) 1214 strlcpy(override_name, str, sizeof(override_name)); 1215 mutex_unlock(&clocksource_mutex); 1216 return 1; 1217 } 1218 1219 __setup("clocksource=", boot_override_clocksource); 1220 1221 /** 1222 * boot_override_clock - Compatibility layer for deprecated boot option 1223 * @str: override name 1224 * 1225 * DEPRECATED! Takes a clock= boot argument and uses it 1226 * as the clocksource override name 1227 */ 1228 static int __init boot_override_clock(char* str) 1229 { 1230 if (!strcmp(str, "pmtmr")) { 1231 pr_warn("clock=pmtmr is deprecated - use clocksource=acpi_pm\n"); 1232 return boot_override_clocksource("acpi_pm"); 1233 } 1234 pr_warn("clock= boot option is deprecated - use clocksource=xyz\n"); 1235 return boot_override_clocksource(str); 1236 } 1237 1238 __setup("clock=", boot_override_clock); 1239