1 /* 2 * linux/kernel/hrtimer.c 3 * 4 * Copyright(C) 2005-2006, Thomas Gleixner <[email protected]> 5 * Copyright(C) 2005-2007, Red Hat, Inc., Ingo Molnar 6 * Copyright(C) 2006-2007 Timesys Corp., Thomas Gleixner 7 * 8 * High-resolution kernel timers 9 * 10 * In contrast to the low-resolution timeout API implemented in 11 * kernel/timer.c, hrtimers provide finer resolution and accuracy 12 * depending on system configuration and capabilities. 13 * 14 * These timers are currently used for: 15 * - itimers 16 * - POSIX timers 17 * - nanosleep 18 * - precise in-kernel timing 19 * 20 * Started by: Thomas Gleixner and Ingo Molnar 21 * 22 * Credits: 23 * based on kernel/timer.c 24 * 25 * Help, testing, suggestions, bugfixes, improvements were 26 * provided by: 27 * 28 * George Anzinger, Andrew Morton, Steven Rostedt, Roman Zippel 29 * et. al. 30 * 31 * For licencing details see kernel-base/COPYING 32 */ 33 34 #include <linux/cpu.h> 35 #include <linux/export.h> 36 #include <linux/percpu.h> 37 #include <linux/hrtimer.h> 38 #include <linux/notifier.h> 39 #include <linux/syscalls.h> 40 #include <linux/kallsyms.h> 41 #include <linux/interrupt.h> 42 #include <linux/tick.h> 43 #include <linux/seq_file.h> 44 #include <linux/err.h> 45 #include <linux/debugobjects.h> 46 #include <linux/sched.h> 47 #include <linux/sched/sysctl.h> 48 #include <linux/sched/rt.h> 49 #include <linux/sched/deadline.h> 50 #include <linux/timer.h> 51 #include <linux/freezer.h> 52 53 #include <asm/uaccess.h> 54 55 #include <trace/events/timer.h> 56 57 /* 58 * The timer bases: 59 * 60 * There are more clockids then hrtimer bases. Thus, we index 61 * into the timer bases by the hrtimer_base_type enum. When trying 62 * to reach a base using a clockid, hrtimer_clockid_to_base() 63 * is used to convert from clockid to the proper hrtimer_base_type. 64 */ 65 DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) = 66 { 67 68 .lock = __RAW_SPIN_LOCK_UNLOCKED(hrtimer_bases.lock), 69 .clock_base = 70 { 71 { 72 .index = HRTIMER_BASE_MONOTONIC, 73 .clockid = CLOCK_MONOTONIC, 74 .get_time = &ktime_get, 75 .resolution = KTIME_LOW_RES, 76 }, 77 { 78 .index = HRTIMER_BASE_REALTIME, 79 .clockid = CLOCK_REALTIME, 80 .get_time = &ktime_get_real, 81 .resolution = KTIME_LOW_RES, 82 }, 83 { 84 .index = HRTIMER_BASE_BOOTTIME, 85 .clockid = CLOCK_BOOTTIME, 86 .get_time = &ktime_get_boottime, 87 .resolution = KTIME_LOW_RES, 88 }, 89 { 90 .index = HRTIMER_BASE_TAI, 91 .clockid = CLOCK_TAI, 92 .get_time = &ktime_get_clocktai, 93 .resolution = KTIME_LOW_RES, 94 }, 95 } 96 }; 97 98 static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = { 99 [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME, 100 [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC, 101 [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME, 102 [CLOCK_TAI] = HRTIMER_BASE_TAI, 103 }; 104 105 static inline int hrtimer_clockid_to_base(clockid_t clock_id) 106 { 107 return hrtimer_clock_to_base_table[clock_id]; 108 } 109 110 111 /* 112 * Get the coarse grained time at the softirq based on xtime and 113 * wall_to_monotonic. 114 */ 115 static void hrtimer_get_softirq_time(struct hrtimer_cpu_base *base) 116 { 117 ktime_t xtim, mono, boot; 118 struct timespec xts, tom, slp; 119 s32 tai_offset; 120 121 get_xtime_and_monotonic_and_sleep_offset(&xts, &tom, &slp); 122 tai_offset = timekeeping_get_tai_offset(); 123 124 xtim = timespec_to_ktime(xts); 125 mono = ktime_add(xtim, timespec_to_ktime(tom)); 126 boot = ktime_add(mono, timespec_to_ktime(slp)); 127 base->clock_base[HRTIMER_BASE_REALTIME].softirq_time = xtim; 128 base->clock_base[HRTIMER_BASE_MONOTONIC].softirq_time = mono; 129 base->clock_base[HRTIMER_BASE_BOOTTIME].softirq_time = boot; 130 base->clock_base[HRTIMER_BASE_TAI].softirq_time = 131 ktime_add(xtim, ktime_set(tai_offset, 0)); 132 } 133 134 /* 135 * Functions and macros which are different for UP/SMP systems are kept in a 136 * single place 137 */ 138 #ifdef CONFIG_SMP 139 140 /* 141 * We are using hashed locking: holding per_cpu(hrtimer_bases)[n].lock 142 * means that all timers which are tied to this base via timer->base are 143 * locked, and the base itself is locked too. 144 * 145 * So __run_timers/migrate_timers can safely modify all timers which could 146 * be found on the lists/queues. 147 * 148 * When the timer's base is locked, and the timer removed from list, it is 149 * possible to set timer->base = NULL and drop the lock: the timer remains 150 * locked. 151 */ 152 static 153 struct hrtimer_clock_base *lock_hrtimer_base(const struct hrtimer *timer, 154 unsigned long *flags) 155 { 156 struct hrtimer_clock_base *base; 157 158 for (;;) { 159 base = timer->base; 160 if (likely(base != NULL)) { 161 raw_spin_lock_irqsave(&base->cpu_base->lock, *flags); 162 if (likely(base == timer->base)) 163 return base; 164 /* The timer has migrated to another CPU: */ 165 raw_spin_unlock_irqrestore(&base->cpu_base->lock, *flags); 166 } 167 cpu_relax(); 168 } 169 } 170 171 /* 172 * With HIGHRES=y we do not migrate the timer when it is expiring 173 * before the next event on the target cpu because we cannot reprogram 174 * the target cpu hardware and we would cause it to fire late. 175 * 176 * Called with cpu_base->lock of target cpu held. 177 */ 178 static int 179 hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base *new_base) 180 { 181 #ifdef CONFIG_HIGH_RES_TIMERS 182 ktime_t expires; 183 184 if (!new_base->cpu_base->hres_active) 185 return 0; 186 187 expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset); 188 return expires.tv64 <= new_base->cpu_base->expires_next.tv64; 189 #else 190 return 0; 191 #endif 192 } 193 194 /* 195 * Switch the timer base to the current CPU when possible. 196 */ 197 static inline struct hrtimer_clock_base * 198 switch_hrtimer_base(struct hrtimer *timer, struct hrtimer_clock_base *base, 199 int pinned) 200 { 201 struct hrtimer_clock_base *new_base; 202 struct hrtimer_cpu_base *new_cpu_base; 203 int this_cpu = smp_processor_id(); 204 int cpu = get_nohz_timer_target(pinned); 205 int basenum = base->index; 206 207 again: 208 new_cpu_base = &per_cpu(hrtimer_bases, cpu); 209 new_base = &new_cpu_base->clock_base[basenum]; 210 211 if (base != new_base) { 212 /* 213 * We are trying to move timer to new_base. 214 * However we can't change timer's base while it is running, 215 * so we keep it on the same CPU. No hassle vs. reprogramming 216 * the event source in the high resolution case. The softirq 217 * code will take care of this when the timer function has 218 * completed. There is no conflict as we hold the lock until 219 * the timer is enqueued. 220 */ 221 if (unlikely(hrtimer_callback_running(timer))) 222 return base; 223 224 /* See the comment in lock_timer_base() */ 225 timer->base = NULL; 226 raw_spin_unlock(&base->cpu_base->lock); 227 raw_spin_lock(&new_base->cpu_base->lock); 228 229 if (cpu != this_cpu && hrtimer_check_target(timer, new_base)) { 230 cpu = this_cpu; 231 raw_spin_unlock(&new_base->cpu_base->lock); 232 raw_spin_lock(&base->cpu_base->lock); 233 timer->base = base; 234 goto again; 235 } 236 timer->base = new_base; 237 } else { 238 if (cpu != this_cpu && hrtimer_check_target(timer, new_base)) { 239 cpu = this_cpu; 240 goto again; 241 } 242 } 243 return new_base; 244 } 245 246 #else /* CONFIG_SMP */ 247 248 static inline struct hrtimer_clock_base * 249 lock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags) 250 { 251 struct hrtimer_clock_base *base = timer->base; 252 253 raw_spin_lock_irqsave(&base->cpu_base->lock, *flags); 254 255 return base; 256 } 257 258 # define switch_hrtimer_base(t, b, p) (b) 259 260 #endif /* !CONFIG_SMP */ 261 262 /* 263 * Functions for the union type storage format of ktime_t which are 264 * too large for inlining: 265 */ 266 #if BITS_PER_LONG < 64 267 # ifndef CONFIG_KTIME_SCALAR 268 /** 269 * ktime_add_ns - Add a scalar nanoseconds value to a ktime_t variable 270 * @kt: addend 271 * @nsec: the scalar nsec value to add 272 * 273 * Returns the sum of kt and nsec in ktime_t format 274 */ 275 ktime_t ktime_add_ns(const ktime_t kt, u64 nsec) 276 { 277 ktime_t tmp; 278 279 if (likely(nsec < NSEC_PER_SEC)) { 280 tmp.tv64 = nsec; 281 } else { 282 unsigned long rem = do_div(nsec, NSEC_PER_SEC); 283 284 /* Make sure nsec fits into long */ 285 if (unlikely(nsec > KTIME_SEC_MAX)) 286 return (ktime_t){ .tv64 = KTIME_MAX }; 287 288 tmp = ktime_set((long)nsec, rem); 289 } 290 291 return ktime_add(kt, tmp); 292 } 293 294 EXPORT_SYMBOL_GPL(ktime_add_ns); 295 296 /** 297 * ktime_sub_ns - Subtract a scalar nanoseconds value from a ktime_t variable 298 * @kt: minuend 299 * @nsec: the scalar nsec value to subtract 300 * 301 * Returns the subtraction of @nsec from @kt in ktime_t format 302 */ 303 ktime_t ktime_sub_ns(const ktime_t kt, u64 nsec) 304 { 305 ktime_t tmp; 306 307 if (likely(nsec < NSEC_PER_SEC)) { 308 tmp.tv64 = nsec; 309 } else { 310 unsigned long rem = do_div(nsec, NSEC_PER_SEC); 311 312 tmp = ktime_set((long)nsec, rem); 313 } 314 315 return ktime_sub(kt, tmp); 316 } 317 318 EXPORT_SYMBOL_GPL(ktime_sub_ns); 319 # endif /* !CONFIG_KTIME_SCALAR */ 320 321 /* 322 * Divide a ktime value by a nanosecond value 323 */ 324 u64 ktime_divns(const ktime_t kt, s64 div) 325 { 326 u64 dclc; 327 int sft = 0; 328 329 dclc = ktime_to_ns(kt); 330 /* Make sure the divisor is less than 2^32: */ 331 while (div >> 32) { 332 sft++; 333 div >>= 1; 334 } 335 dclc >>= sft; 336 do_div(dclc, (unsigned long) div); 337 338 return dclc; 339 } 340 #endif /* BITS_PER_LONG >= 64 */ 341 342 /* 343 * Add two ktime values and do a safety check for overflow: 344 */ 345 ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs) 346 { 347 ktime_t res = ktime_add(lhs, rhs); 348 349 /* 350 * We use KTIME_SEC_MAX here, the maximum timeout which we can 351 * return to user space in a timespec: 352 */ 353 if (res.tv64 < 0 || res.tv64 < lhs.tv64 || res.tv64 < rhs.tv64) 354 res = ktime_set(KTIME_SEC_MAX, 0); 355 356 return res; 357 } 358 359 EXPORT_SYMBOL_GPL(ktime_add_safe); 360 361 #ifdef CONFIG_DEBUG_OBJECTS_TIMERS 362 363 static struct debug_obj_descr hrtimer_debug_descr; 364 365 static void *hrtimer_debug_hint(void *addr) 366 { 367 return ((struct hrtimer *) addr)->function; 368 } 369 370 /* 371 * fixup_init is called when: 372 * - an active object is initialized 373 */ 374 static int hrtimer_fixup_init(void *addr, enum debug_obj_state state) 375 { 376 struct hrtimer *timer = addr; 377 378 switch (state) { 379 case ODEBUG_STATE_ACTIVE: 380 hrtimer_cancel(timer); 381 debug_object_init(timer, &hrtimer_debug_descr); 382 return 1; 383 default: 384 return 0; 385 } 386 } 387 388 /* 389 * fixup_activate is called when: 390 * - an active object is activated 391 * - an unknown object is activated (might be a statically initialized object) 392 */ 393 static int hrtimer_fixup_activate(void *addr, enum debug_obj_state state) 394 { 395 switch (state) { 396 397 case ODEBUG_STATE_NOTAVAILABLE: 398 WARN_ON_ONCE(1); 399 return 0; 400 401 case ODEBUG_STATE_ACTIVE: 402 WARN_ON(1); 403 404 default: 405 return 0; 406 } 407 } 408 409 /* 410 * fixup_free is called when: 411 * - an active object is freed 412 */ 413 static int hrtimer_fixup_free(void *addr, enum debug_obj_state state) 414 { 415 struct hrtimer *timer = addr; 416 417 switch (state) { 418 case ODEBUG_STATE_ACTIVE: 419 hrtimer_cancel(timer); 420 debug_object_free(timer, &hrtimer_debug_descr); 421 return 1; 422 default: 423 return 0; 424 } 425 } 426 427 static struct debug_obj_descr hrtimer_debug_descr = { 428 .name = "hrtimer", 429 .debug_hint = hrtimer_debug_hint, 430 .fixup_init = hrtimer_fixup_init, 431 .fixup_activate = hrtimer_fixup_activate, 432 .fixup_free = hrtimer_fixup_free, 433 }; 434 435 static inline void debug_hrtimer_init(struct hrtimer *timer) 436 { 437 debug_object_init(timer, &hrtimer_debug_descr); 438 } 439 440 static inline void debug_hrtimer_activate(struct hrtimer *timer) 441 { 442 debug_object_activate(timer, &hrtimer_debug_descr); 443 } 444 445 static inline void debug_hrtimer_deactivate(struct hrtimer *timer) 446 { 447 debug_object_deactivate(timer, &hrtimer_debug_descr); 448 } 449 450 static inline void debug_hrtimer_free(struct hrtimer *timer) 451 { 452 debug_object_free(timer, &hrtimer_debug_descr); 453 } 454 455 static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, 456 enum hrtimer_mode mode); 457 458 void hrtimer_init_on_stack(struct hrtimer *timer, clockid_t clock_id, 459 enum hrtimer_mode mode) 460 { 461 debug_object_init_on_stack(timer, &hrtimer_debug_descr); 462 __hrtimer_init(timer, clock_id, mode); 463 } 464 EXPORT_SYMBOL_GPL(hrtimer_init_on_stack); 465 466 void destroy_hrtimer_on_stack(struct hrtimer *timer) 467 { 468 debug_object_free(timer, &hrtimer_debug_descr); 469 } 470 471 #else 472 static inline void debug_hrtimer_init(struct hrtimer *timer) { } 473 static inline void debug_hrtimer_activate(struct hrtimer *timer) { } 474 static inline void debug_hrtimer_deactivate(struct hrtimer *timer) { } 475 #endif 476 477 static inline void 478 debug_init(struct hrtimer *timer, clockid_t clockid, 479 enum hrtimer_mode mode) 480 { 481 debug_hrtimer_init(timer); 482 trace_hrtimer_init(timer, clockid, mode); 483 } 484 485 static inline void debug_activate(struct hrtimer *timer) 486 { 487 debug_hrtimer_activate(timer); 488 trace_hrtimer_start(timer); 489 } 490 491 static inline void debug_deactivate(struct hrtimer *timer) 492 { 493 debug_hrtimer_deactivate(timer); 494 trace_hrtimer_cancel(timer); 495 } 496 497 /* High resolution timer related functions */ 498 #ifdef CONFIG_HIGH_RES_TIMERS 499 500 /* 501 * High resolution timer enabled ? 502 */ 503 static int hrtimer_hres_enabled __read_mostly = 1; 504 505 /* 506 * Enable / Disable high resolution mode 507 */ 508 static int __init setup_hrtimer_hres(char *str) 509 { 510 if (!strcmp(str, "off")) 511 hrtimer_hres_enabled = 0; 512 else if (!strcmp(str, "on")) 513 hrtimer_hres_enabled = 1; 514 else 515 return 0; 516 return 1; 517 } 518 519 __setup("highres=", setup_hrtimer_hres); 520 521 /* 522 * hrtimer_high_res_enabled - query, if the highres mode is enabled 523 */ 524 static inline int hrtimer_is_hres_enabled(void) 525 { 526 return hrtimer_hres_enabled; 527 } 528 529 /* 530 * Is the high resolution mode active ? 531 */ 532 static inline int hrtimer_hres_active(void) 533 { 534 return __this_cpu_read(hrtimer_bases.hres_active); 535 } 536 537 /* 538 * Reprogram the event source with checking both queues for the 539 * next event 540 * Called with interrupts disabled and base->lock held 541 */ 542 static void 543 hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal) 544 { 545 int i; 546 struct hrtimer_clock_base *base = cpu_base->clock_base; 547 ktime_t expires, expires_next; 548 549 expires_next.tv64 = KTIME_MAX; 550 551 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++, base++) { 552 struct hrtimer *timer; 553 struct timerqueue_node *next; 554 555 next = timerqueue_getnext(&base->active); 556 if (!next) 557 continue; 558 timer = container_of(next, struct hrtimer, node); 559 560 expires = ktime_sub(hrtimer_get_expires(timer), base->offset); 561 /* 562 * clock_was_set() has changed base->offset so the 563 * result might be negative. Fix it up to prevent a 564 * false positive in clockevents_program_event() 565 */ 566 if (expires.tv64 < 0) 567 expires.tv64 = 0; 568 if (expires.tv64 < expires_next.tv64) 569 expires_next = expires; 570 } 571 572 if (skip_equal && expires_next.tv64 == cpu_base->expires_next.tv64) 573 return; 574 575 cpu_base->expires_next.tv64 = expires_next.tv64; 576 577 /* 578 * If a hang was detected in the last timer interrupt then we 579 * leave the hang delay active in the hardware. We want the 580 * system to make progress. That also prevents the following 581 * scenario: 582 * T1 expires 50ms from now 583 * T2 expires 5s from now 584 * 585 * T1 is removed, so this code is called and would reprogram 586 * the hardware to 5s from now. Any hrtimer_start after that 587 * will not reprogram the hardware due to hang_detected being 588 * set. So we'd effectivly block all timers until the T2 event 589 * fires. 590 */ 591 if (cpu_base->hang_detected) 592 return; 593 594 if (cpu_base->expires_next.tv64 != KTIME_MAX) 595 tick_program_event(cpu_base->expires_next, 1); 596 } 597 598 /* 599 * Shared reprogramming for clock_realtime and clock_monotonic 600 * 601 * When a timer is enqueued and expires earlier than the already enqueued 602 * timers, we have to check, whether it expires earlier than the timer for 603 * which the clock event device was armed. 604 * 605 * Note, that in case the state has HRTIMER_STATE_CALLBACK set, no reprogramming 606 * and no expiry check happens. The timer gets enqueued into the rbtree. The 607 * reprogramming and expiry check is done in the hrtimer_interrupt or in the 608 * softirq. 609 * 610 * Called with interrupts disabled and base->cpu_base.lock held 611 */ 612 static int hrtimer_reprogram(struct hrtimer *timer, 613 struct hrtimer_clock_base *base) 614 { 615 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); 616 ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset); 617 int res; 618 619 WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0); 620 621 /* 622 * When the callback is running, we do not reprogram the clock event 623 * device. The timer callback is either running on a different CPU or 624 * the callback is executed in the hrtimer_interrupt context. The 625 * reprogramming is handled either by the softirq, which called the 626 * callback or at the end of the hrtimer_interrupt. 627 */ 628 if (hrtimer_callback_running(timer)) 629 return 0; 630 631 /* 632 * CLOCK_REALTIME timer might be requested with an absolute 633 * expiry time which is less than base->offset. Nothing wrong 634 * about that, just avoid to call into the tick code, which 635 * has now objections against negative expiry values. 636 */ 637 if (expires.tv64 < 0) 638 return -ETIME; 639 640 if (expires.tv64 >= cpu_base->expires_next.tv64) 641 return 0; 642 643 /* 644 * If a hang was detected in the last timer interrupt then we 645 * do not schedule a timer which is earlier than the expiry 646 * which we enforced in the hang detection. We want the system 647 * to make progress. 648 */ 649 if (cpu_base->hang_detected) 650 return 0; 651 652 /* 653 * Clockevents returns -ETIME, when the event was in the past. 654 */ 655 res = tick_program_event(expires, 0); 656 if (!IS_ERR_VALUE(res)) 657 cpu_base->expires_next = expires; 658 return res; 659 } 660 661 /* 662 * Initialize the high resolution related parts of cpu_base 663 */ 664 static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) 665 { 666 base->expires_next.tv64 = KTIME_MAX; 667 base->hres_active = 0; 668 } 669 670 static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base) 671 { 672 ktime_t *offs_real = &base->clock_base[HRTIMER_BASE_REALTIME].offset; 673 ktime_t *offs_boot = &base->clock_base[HRTIMER_BASE_BOOTTIME].offset; 674 ktime_t *offs_tai = &base->clock_base[HRTIMER_BASE_TAI].offset; 675 676 return ktime_get_update_offsets(offs_real, offs_boot, offs_tai); 677 } 678 679 /* 680 * Retrigger next event is called after clock was set 681 * 682 * Called with interrupts disabled via on_each_cpu() 683 */ 684 static void retrigger_next_event(void *arg) 685 { 686 struct hrtimer_cpu_base *base = &__get_cpu_var(hrtimer_bases); 687 688 if (!hrtimer_hres_active()) 689 return; 690 691 raw_spin_lock(&base->lock); 692 hrtimer_update_base(base); 693 hrtimer_force_reprogram(base, 0); 694 raw_spin_unlock(&base->lock); 695 } 696 697 /* 698 * Switch to high resolution mode 699 */ 700 static int hrtimer_switch_to_hres(void) 701 { 702 int i, cpu = smp_processor_id(); 703 struct hrtimer_cpu_base *base = &per_cpu(hrtimer_bases, cpu); 704 unsigned long flags; 705 706 if (base->hres_active) 707 return 1; 708 709 local_irq_save(flags); 710 711 if (tick_init_highres()) { 712 local_irq_restore(flags); 713 printk(KERN_WARNING "Could not switch to high resolution " 714 "mode on CPU %d\n", cpu); 715 return 0; 716 } 717 base->hres_active = 1; 718 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) 719 base->clock_base[i].resolution = KTIME_HIGH_RES; 720 721 tick_setup_sched_timer(); 722 /* "Retrigger" the interrupt to get things going */ 723 retrigger_next_event(NULL); 724 local_irq_restore(flags); 725 return 1; 726 } 727 728 static void clock_was_set_work(struct work_struct *work) 729 { 730 clock_was_set(); 731 } 732 733 static DECLARE_WORK(hrtimer_work, clock_was_set_work); 734 735 /* 736 * Called from timekeeping and resume code to reprogramm the hrtimer 737 * interrupt device on all cpus. 738 */ 739 void clock_was_set_delayed(void) 740 { 741 schedule_work(&hrtimer_work); 742 } 743 744 #else 745 746 static inline int hrtimer_hres_active(void) { return 0; } 747 static inline int hrtimer_is_hres_enabled(void) { return 0; } 748 static inline int hrtimer_switch_to_hres(void) { return 0; } 749 static inline void 750 hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { } 751 static inline int hrtimer_reprogram(struct hrtimer *timer, 752 struct hrtimer_clock_base *base) 753 { 754 return 0; 755 } 756 static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { } 757 static inline void retrigger_next_event(void *arg) { } 758 759 #endif /* CONFIG_HIGH_RES_TIMERS */ 760 761 /* 762 * Clock realtime was set 763 * 764 * Change the offset of the realtime clock vs. the monotonic 765 * clock. 766 * 767 * We might have to reprogram the high resolution timer interrupt. On 768 * SMP we call the architecture specific code to retrigger _all_ high 769 * resolution timer interrupts. On UP we just disable interrupts and 770 * call the high resolution interrupt code. 771 */ 772 void clock_was_set(void) 773 { 774 #ifdef CONFIG_HIGH_RES_TIMERS 775 /* Retrigger the CPU local events everywhere */ 776 on_each_cpu(retrigger_next_event, NULL, 1); 777 #endif 778 timerfd_clock_was_set(); 779 } 780 781 /* 782 * During resume we might have to reprogram the high resolution timer 783 * interrupt on all online CPUs. However, all other CPUs will be 784 * stopped with IRQs interrupts disabled so the clock_was_set() call 785 * must be deferred. 786 */ 787 void hrtimers_resume(void) 788 { 789 WARN_ONCE(!irqs_disabled(), 790 KERN_INFO "hrtimers_resume() called with IRQs enabled!"); 791 792 /* Retrigger on the local CPU */ 793 retrigger_next_event(NULL); 794 /* And schedule a retrigger for all others */ 795 clock_was_set_delayed(); 796 } 797 798 static inline void timer_stats_hrtimer_set_start_info(struct hrtimer *timer) 799 { 800 #ifdef CONFIG_TIMER_STATS 801 if (timer->start_site) 802 return; 803 timer->start_site = __builtin_return_address(0); 804 memcpy(timer->start_comm, current->comm, TASK_COMM_LEN); 805 timer->start_pid = current->pid; 806 #endif 807 } 808 809 static inline void timer_stats_hrtimer_clear_start_info(struct hrtimer *timer) 810 { 811 #ifdef CONFIG_TIMER_STATS 812 timer->start_site = NULL; 813 #endif 814 } 815 816 static inline void timer_stats_account_hrtimer(struct hrtimer *timer) 817 { 818 #ifdef CONFIG_TIMER_STATS 819 if (likely(!timer_stats_active)) 820 return; 821 timer_stats_update_stats(timer, timer->start_pid, timer->start_site, 822 timer->function, timer->start_comm, 0); 823 #endif 824 } 825 826 /* 827 * Counterpart to lock_hrtimer_base above: 828 */ 829 static inline 830 void unlock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags) 831 { 832 raw_spin_unlock_irqrestore(&timer->base->cpu_base->lock, *flags); 833 } 834 835 /** 836 * hrtimer_forward - forward the timer expiry 837 * @timer: hrtimer to forward 838 * @now: forward past this time 839 * @interval: the interval to forward 840 * 841 * Forward the timer expiry so it will expire in the future. 842 * Returns the number of overruns. 843 */ 844 u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) 845 { 846 u64 orun = 1; 847 ktime_t delta; 848 849 delta = ktime_sub(now, hrtimer_get_expires(timer)); 850 851 if (delta.tv64 < 0) 852 return 0; 853 854 if (interval.tv64 < timer->base->resolution.tv64) 855 interval.tv64 = timer->base->resolution.tv64; 856 857 if (unlikely(delta.tv64 >= interval.tv64)) { 858 s64 incr = ktime_to_ns(interval); 859 860 orun = ktime_divns(delta, incr); 861 hrtimer_add_expires_ns(timer, incr * orun); 862 if (hrtimer_get_expires_tv64(timer) > now.tv64) 863 return orun; 864 /* 865 * This (and the ktime_add() below) is the 866 * correction for exact: 867 */ 868 orun++; 869 } 870 hrtimer_add_expires(timer, interval); 871 872 return orun; 873 } 874 EXPORT_SYMBOL_GPL(hrtimer_forward); 875 876 /* 877 * enqueue_hrtimer - internal function to (re)start a timer 878 * 879 * The timer is inserted in expiry order. Insertion into the 880 * red black tree is O(log(n)). Must hold the base lock. 881 * 882 * Returns 1 when the new timer is the leftmost timer in the tree. 883 */ 884 static int enqueue_hrtimer(struct hrtimer *timer, 885 struct hrtimer_clock_base *base) 886 { 887 debug_activate(timer); 888 889 timerqueue_add(&base->active, &timer->node); 890 base->cpu_base->active_bases |= 1 << base->index; 891 892 /* 893 * HRTIMER_STATE_ENQUEUED is or'ed to the current state to preserve the 894 * state of a possibly running callback. 895 */ 896 timer->state |= HRTIMER_STATE_ENQUEUED; 897 898 return (&timer->node == base->active.next); 899 } 900 901 /* 902 * __remove_hrtimer - internal function to remove a timer 903 * 904 * Caller must hold the base lock. 905 * 906 * High resolution timer mode reprograms the clock event device when the 907 * timer is the one which expires next. The caller can disable this by setting 908 * reprogram to zero. This is useful, when the context does a reprogramming 909 * anyway (e.g. timer interrupt) 910 */ 911 static void __remove_hrtimer(struct hrtimer *timer, 912 struct hrtimer_clock_base *base, 913 unsigned long newstate, int reprogram) 914 { 915 struct timerqueue_node *next_timer; 916 if (!(timer->state & HRTIMER_STATE_ENQUEUED)) 917 goto out; 918 919 next_timer = timerqueue_getnext(&base->active); 920 timerqueue_del(&base->active, &timer->node); 921 if (&timer->node == next_timer) { 922 #ifdef CONFIG_HIGH_RES_TIMERS 923 /* Reprogram the clock event device. if enabled */ 924 if (reprogram && hrtimer_hres_active()) { 925 ktime_t expires; 926 927 expires = ktime_sub(hrtimer_get_expires(timer), 928 base->offset); 929 if (base->cpu_base->expires_next.tv64 == expires.tv64) 930 hrtimer_force_reprogram(base->cpu_base, 1); 931 } 932 #endif 933 } 934 if (!timerqueue_getnext(&base->active)) 935 base->cpu_base->active_bases &= ~(1 << base->index); 936 out: 937 timer->state = newstate; 938 } 939 940 /* 941 * remove hrtimer, called with base lock held 942 */ 943 static inline int 944 remove_hrtimer(struct hrtimer *timer, struct hrtimer_clock_base *base) 945 { 946 if (hrtimer_is_queued(timer)) { 947 unsigned long state; 948 int reprogram; 949 950 /* 951 * Remove the timer and force reprogramming when high 952 * resolution mode is active and the timer is on the current 953 * CPU. If we remove a timer on another CPU, reprogramming is 954 * skipped. The interrupt event on this CPU is fired and 955 * reprogramming happens in the interrupt handler. This is a 956 * rare case and less expensive than a smp call. 957 */ 958 debug_deactivate(timer); 959 timer_stats_hrtimer_clear_start_info(timer); 960 reprogram = base->cpu_base == &__get_cpu_var(hrtimer_bases); 961 /* 962 * We must preserve the CALLBACK state flag here, 963 * otherwise we could move the timer base in 964 * switch_hrtimer_base. 965 */ 966 state = timer->state & HRTIMER_STATE_CALLBACK; 967 __remove_hrtimer(timer, base, state, reprogram); 968 return 1; 969 } 970 return 0; 971 } 972 973 int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, 974 unsigned long delta_ns, const enum hrtimer_mode mode, 975 int wakeup) 976 { 977 struct hrtimer_clock_base *base, *new_base; 978 unsigned long flags; 979 int ret, leftmost; 980 981 base = lock_hrtimer_base(timer, &flags); 982 983 /* Remove an active timer from the queue: */ 984 ret = remove_hrtimer(timer, base); 985 986 if (mode & HRTIMER_MODE_REL) { 987 tim = ktime_add_safe(tim, base->get_time()); 988 /* 989 * CONFIG_TIME_LOW_RES is a temporary way for architectures 990 * to signal that they simply return xtime in 991 * do_gettimeoffset(). In this case we want to round up by 992 * resolution when starting a relative timer, to avoid short 993 * timeouts. This will go away with the GTOD framework. 994 */ 995 #ifdef CONFIG_TIME_LOW_RES 996 tim = ktime_add_safe(tim, base->resolution); 997 #endif 998 } 999 1000 hrtimer_set_expires_range_ns(timer, tim, delta_ns); 1001 1002 /* Switch the timer base, if necessary: */ 1003 new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED); 1004 1005 timer_stats_hrtimer_set_start_info(timer); 1006 1007 leftmost = enqueue_hrtimer(timer, new_base); 1008 1009 if (!leftmost) { 1010 unlock_hrtimer_base(timer, &flags); 1011 return ret; 1012 } 1013 1014 if (!hrtimer_is_hres_active(timer)) { 1015 /* 1016 * Kick to reschedule the next tick to handle the new timer 1017 * on dynticks target. 1018 */ 1019 wake_up_nohz_cpu(new_base->cpu_base->cpu); 1020 } else if (new_base->cpu_base == &__get_cpu_var(hrtimer_bases) && 1021 hrtimer_reprogram(timer, new_base)) { 1022 /* 1023 * Only allow reprogramming if the new base is on this CPU. 1024 * (it might still be on another CPU if the timer was pending) 1025 * 1026 * XXX send_remote_softirq() ? 1027 */ 1028 if (wakeup) { 1029 /* 1030 * We need to drop cpu_base->lock to avoid a 1031 * lock ordering issue vs. rq->lock. 1032 */ 1033 raw_spin_unlock(&new_base->cpu_base->lock); 1034 raise_softirq_irqoff(HRTIMER_SOFTIRQ); 1035 local_irq_restore(flags); 1036 return ret; 1037 } else { 1038 __raise_softirq_irqoff(HRTIMER_SOFTIRQ); 1039 } 1040 } 1041 1042 unlock_hrtimer_base(timer, &flags); 1043 1044 return ret; 1045 } 1046 EXPORT_SYMBOL_GPL(__hrtimer_start_range_ns); 1047 1048 /** 1049 * hrtimer_start_range_ns - (re)start an hrtimer on the current CPU 1050 * @timer: the timer to be added 1051 * @tim: expiry time 1052 * @delta_ns: "slack" range for the timer 1053 * @mode: expiry mode: absolute (HRTIMER_MODE_ABS) or 1054 * relative (HRTIMER_MODE_REL) 1055 * 1056 * Returns: 1057 * 0 on success 1058 * 1 when the timer was active 1059 */ 1060 int hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, 1061 unsigned long delta_ns, const enum hrtimer_mode mode) 1062 { 1063 return __hrtimer_start_range_ns(timer, tim, delta_ns, mode, 1); 1064 } 1065 EXPORT_SYMBOL_GPL(hrtimer_start_range_ns); 1066 1067 /** 1068 * hrtimer_start - (re)start an hrtimer on the current CPU 1069 * @timer: the timer to be added 1070 * @tim: expiry time 1071 * @mode: expiry mode: absolute (HRTIMER_MODE_ABS) or 1072 * relative (HRTIMER_MODE_REL) 1073 * 1074 * Returns: 1075 * 0 on success 1076 * 1 when the timer was active 1077 */ 1078 int 1079 hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) 1080 { 1081 return __hrtimer_start_range_ns(timer, tim, 0, mode, 1); 1082 } 1083 EXPORT_SYMBOL_GPL(hrtimer_start); 1084 1085 1086 /** 1087 * hrtimer_try_to_cancel - try to deactivate a timer 1088 * @timer: hrtimer to stop 1089 * 1090 * Returns: 1091 * 0 when the timer was not active 1092 * 1 when the timer was active 1093 * -1 when the timer is currently excuting the callback function and 1094 * cannot be stopped 1095 */ 1096 int hrtimer_try_to_cancel(struct hrtimer *timer) 1097 { 1098 struct hrtimer_clock_base *base; 1099 unsigned long flags; 1100 int ret = -1; 1101 1102 base = lock_hrtimer_base(timer, &flags); 1103 1104 if (!hrtimer_callback_running(timer)) 1105 ret = remove_hrtimer(timer, base); 1106 1107 unlock_hrtimer_base(timer, &flags); 1108 1109 return ret; 1110 1111 } 1112 EXPORT_SYMBOL_GPL(hrtimer_try_to_cancel); 1113 1114 /** 1115 * hrtimer_cancel - cancel a timer and wait for the handler to finish. 1116 * @timer: the timer to be cancelled 1117 * 1118 * Returns: 1119 * 0 when the timer was not active 1120 * 1 when the timer was active 1121 */ 1122 int hrtimer_cancel(struct hrtimer *timer) 1123 { 1124 for (;;) { 1125 int ret = hrtimer_try_to_cancel(timer); 1126 1127 if (ret >= 0) 1128 return ret; 1129 cpu_relax(); 1130 } 1131 } 1132 EXPORT_SYMBOL_GPL(hrtimer_cancel); 1133 1134 /** 1135 * hrtimer_get_remaining - get remaining time for the timer 1136 * @timer: the timer to read 1137 */ 1138 ktime_t hrtimer_get_remaining(const struct hrtimer *timer) 1139 { 1140 unsigned long flags; 1141 ktime_t rem; 1142 1143 lock_hrtimer_base(timer, &flags); 1144 rem = hrtimer_expires_remaining(timer); 1145 unlock_hrtimer_base(timer, &flags); 1146 1147 return rem; 1148 } 1149 EXPORT_SYMBOL_GPL(hrtimer_get_remaining); 1150 1151 #ifdef CONFIG_NO_HZ_COMMON 1152 /** 1153 * hrtimer_get_next_event - get the time until next expiry event 1154 * 1155 * Returns the delta to the next expiry event or KTIME_MAX if no timer 1156 * is pending. 1157 */ 1158 ktime_t hrtimer_get_next_event(void) 1159 { 1160 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); 1161 struct hrtimer_clock_base *base = cpu_base->clock_base; 1162 ktime_t delta, mindelta = { .tv64 = KTIME_MAX }; 1163 unsigned long flags; 1164 int i; 1165 1166 raw_spin_lock_irqsave(&cpu_base->lock, flags); 1167 1168 if (!hrtimer_hres_active()) { 1169 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++, base++) { 1170 struct hrtimer *timer; 1171 struct timerqueue_node *next; 1172 1173 next = timerqueue_getnext(&base->active); 1174 if (!next) 1175 continue; 1176 1177 timer = container_of(next, struct hrtimer, node); 1178 delta.tv64 = hrtimer_get_expires_tv64(timer); 1179 delta = ktime_sub(delta, base->get_time()); 1180 if (delta.tv64 < mindelta.tv64) 1181 mindelta.tv64 = delta.tv64; 1182 } 1183 } 1184 1185 raw_spin_unlock_irqrestore(&cpu_base->lock, flags); 1186 1187 if (mindelta.tv64 < 0) 1188 mindelta.tv64 = 0; 1189 return mindelta; 1190 } 1191 #endif 1192 1193 static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, 1194 enum hrtimer_mode mode) 1195 { 1196 struct hrtimer_cpu_base *cpu_base; 1197 int base; 1198 1199 memset(timer, 0, sizeof(struct hrtimer)); 1200 1201 cpu_base = &__raw_get_cpu_var(hrtimer_bases); 1202 1203 if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS) 1204 clock_id = CLOCK_MONOTONIC; 1205 1206 base = hrtimer_clockid_to_base(clock_id); 1207 timer->base = &cpu_base->clock_base[base]; 1208 timerqueue_init(&timer->node); 1209 1210 #ifdef CONFIG_TIMER_STATS 1211 timer->start_site = NULL; 1212 timer->start_pid = -1; 1213 memset(timer->start_comm, 0, TASK_COMM_LEN); 1214 #endif 1215 } 1216 1217 /** 1218 * hrtimer_init - initialize a timer to the given clock 1219 * @timer: the timer to be initialized 1220 * @clock_id: the clock to be used 1221 * @mode: timer mode abs/rel 1222 */ 1223 void hrtimer_init(struct hrtimer *timer, clockid_t clock_id, 1224 enum hrtimer_mode mode) 1225 { 1226 debug_init(timer, clock_id, mode); 1227 __hrtimer_init(timer, clock_id, mode); 1228 } 1229 EXPORT_SYMBOL_GPL(hrtimer_init); 1230 1231 /** 1232 * hrtimer_get_res - get the timer resolution for a clock 1233 * @which_clock: which clock to query 1234 * @tp: pointer to timespec variable to store the resolution 1235 * 1236 * Store the resolution of the clock selected by @which_clock in the 1237 * variable pointed to by @tp. 1238 */ 1239 int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp) 1240 { 1241 struct hrtimer_cpu_base *cpu_base; 1242 int base = hrtimer_clockid_to_base(which_clock); 1243 1244 cpu_base = &__raw_get_cpu_var(hrtimer_bases); 1245 *tp = ktime_to_timespec(cpu_base->clock_base[base].resolution); 1246 1247 return 0; 1248 } 1249 EXPORT_SYMBOL_GPL(hrtimer_get_res); 1250 1251 static void __run_hrtimer(struct hrtimer *timer, ktime_t *now) 1252 { 1253 struct hrtimer_clock_base *base = timer->base; 1254 struct hrtimer_cpu_base *cpu_base = base->cpu_base; 1255 enum hrtimer_restart (*fn)(struct hrtimer *); 1256 int restart; 1257 1258 WARN_ON(!irqs_disabled()); 1259 1260 debug_deactivate(timer); 1261 __remove_hrtimer(timer, base, HRTIMER_STATE_CALLBACK, 0); 1262 timer_stats_account_hrtimer(timer); 1263 fn = timer->function; 1264 1265 /* 1266 * Because we run timers from hardirq context, there is no chance 1267 * they get migrated to another cpu, therefore its safe to unlock 1268 * the timer base. 1269 */ 1270 raw_spin_unlock(&cpu_base->lock); 1271 trace_hrtimer_expire_entry(timer, now); 1272 restart = fn(timer); 1273 trace_hrtimer_expire_exit(timer); 1274 raw_spin_lock(&cpu_base->lock); 1275 1276 /* 1277 * Note: We clear the CALLBACK bit after enqueue_hrtimer and 1278 * we do not reprogramm the event hardware. Happens either in 1279 * hrtimer_start_range_ns() or in hrtimer_interrupt() 1280 */ 1281 if (restart != HRTIMER_NORESTART) { 1282 BUG_ON(timer->state != HRTIMER_STATE_CALLBACK); 1283 enqueue_hrtimer(timer, base); 1284 } 1285 1286 WARN_ON_ONCE(!(timer->state & HRTIMER_STATE_CALLBACK)); 1287 1288 timer->state &= ~HRTIMER_STATE_CALLBACK; 1289 } 1290 1291 #ifdef CONFIG_HIGH_RES_TIMERS 1292 1293 /* 1294 * High resolution timer interrupt 1295 * Called with interrupts disabled 1296 */ 1297 void hrtimer_interrupt(struct clock_event_device *dev) 1298 { 1299 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); 1300 ktime_t expires_next, now, entry_time, delta; 1301 int i, retries = 0; 1302 1303 BUG_ON(!cpu_base->hres_active); 1304 cpu_base->nr_events++; 1305 dev->next_event.tv64 = KTIME_MAX; 1306 1307 raw_spin_lock(&cpu_base->lock); 1308 entry_time = now = hrtimer_update_base(cpu_base); 1309 retry: 1310 expires_next.tv64 = KTIME_MAX; 1311 /* 1312 * We set expires_next to KTIME_MAX here with cpu_base->lock 1313 * held to prevent that a timer is enqueued in our queue via 1314 * the migration code. This does not affect enqueueing of 1315 * timers which run their callback and need to be requeued on 1316 * this CPU. 1317 */ 1318 cpu_base->expires_next.tv64 = KTIME_MAX; 1319 1320 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { 1321 struct hrtimer_clock_base *base; 1322 struct timerqueue_node *node; 1323 ktime_t basenow; 1324 1325 if (!(cpu_base->active_bases & (1 << i))) 1326 continue; 1327 1328 base = cpu_base->clock_base + i; 1329 basenow = ktime_add(now, base->offset); 1330 1331 while ((node = timerqueue_getnext(&base->active))) { 1332 struct hrtimer *timer; 1333 1334 timer = container_of(node, struct hrtimer, node); 1335 1336 /* 1337 * The immediate goal for using the softexpires is 1338 * minimizing wakeups, not running timers at the 1339 * earliest interrupt after their soft expiration. 1340 * This allows us to avoid using a Priority Search 1341 * Tree, which can answer a stabbing querry for 1342 * overlapping intervals and instead use the simple 1343 * BST we already have. 1344 * We don't add extra wakeups by delaying timers that 1345 * are right-of a not yet expired timer, because that 1346 * timer will have to trigger a wakeup anyway. 1347 */ 1348 1349 if (basenow.tv64 < hrtimer_get_softexpires_tv64(timer)) { 1350 ktime_t expires; 1351 1352 expires = ktime_sub(hrtimer_get_expires(timer), 1353 base->offset); 1354 if (expires.tv64 < 0) 1355 expires.tv64 = KTIME_MAX; 1356 if (expires.tv64 < expires_next.tv64) 1357 expires_next = expires; 1358 break; 1359 } 1360 1361 __run_hrtimer(timer, &basenow); 1362 } 1363 } 1364 1365 /* 1366 * Store the new expiry value so the migration code can verify 1367 * against it. 1368 */ 1369 cpu_base->expires_next = expires_next; 1370 raw_spin_unlock(&cpu_base->lock); 1371 1372 /* Reprogramming necessary ? */ 1373 if (expires_next.tv64 == KTIME_MAX || 1374 !tick_program_event(expires_next, 0)) { 1375 cpu_base->hang_detected = 0; 1376 return; 1377 } 1378 1379 /* 1380 * The next timer was already expired due to: 1381 * - tracing 1382 * - long lasting callbacks 1383 * - being scheduled away when running in a VM 1384 * 1385 * We need to prevent that we loop forever in the hrtimer 1386 * interrupt routine. We give it 3 attempts to avoid 1387 * overreacting on some spurious event. 1388 * 1389 * Acquire base lock for updating the offsets and retrieving 1390 * the current time. 1391 */ 1392 raw_spin_lock(&cpu_base->lock); 1393 now = hrtimer_update_base(cpu_base); 1394 cpu_base->nr_retries++; 1395 if (++retries < 3) 1396 goto retry; 1397 /* 1398 * Give the system a chance to do something else than looping 1399 * here. We stored the entry time, so we know exactly how long 1400 * we spent here. We schedule the next event this amount of 1401 * time away. 1402 */ 1403 cpu_base->nr_hangs++; 1404 cpu_base->hang_detected = 1; 1405 raw_spin_unlock(&cpu_base->lock); 1406 delta = ktime_sub(now, entry_time); 1407 if (delta.tv64 > cpu_base->max_hang_time.tv64) 1408 cpu_base->max_hang_time = delta; 1409 /* 1410 * Limit it to a sensible value as we enforce a longer 1411 * delay. Give the CPU at least 100ms to catch up. 1412 */ 1413 if (delta.tv64 > 100 * NSEC_PER_MSEC) 1414 expires_next = ktime_add_ns(now, 100 * NSEC_PER_MSEC); 1415 else 1416 expires_next = ktime_add(now, delta); 1417 tick_program_event(expires_next, 1); 1418 printk_once(KERN_WARNING "hrtimer: interrupt took %llu ns\n", 1419 ktime_to_ns(delta)); 1420 } 1421 1422 /* 1423 * local version of hrtimer_peek_ahead_timers() called with interrupts 1424 * disabled. 1425 */ 1426 static void __hrtimer_peek_ahead_timers(void) 1427 { 1428 struct tick_device *td; 1429 1430 if (!hrtimer_hres_active()) 1431 return; 1432 1433 td = &__get_cpu_var(tick_cpu_device); 1434 if (td && td->evtdev) 1435 hrtimer_interrupt(td->evtdev); 1436 } 1437 1438 /** 1439 * hrtimer_peek_ahead_timers -- run soft-expired timers now 1440 * 1441 * hrtimer_peek_ahead_timers will peek at the timer queue of 1442 * the current cpu and check if there are any timers for which 1443 * the soft expires time has passed. If any such timers exist, 1444 * they are run immediately and then removed from the timer queue. 1445 * 1446 */ 1447 void hrtimer_peek_ahead_timers(void) 1448 { 1449 unsigned long flags; 1450 1451 local_irq_save(flags); 1452 __hrtimer_peek_ahead_timers(); 1453 local_irq_restore(flags); 1454 } 1455 1456 static void run_hrtimer_softirq(struct softirq_action *h) 1457 { 1458 hrtimer_peek_ahead_timers(); 1459 } 1460 1461 #else /* CONFIG_HIGH_RES_TIMERS */ 1462 1463 static inline void __hrtimer_peek_ahead_timers(void) { } 1464 1465 #endif /* !CONFIG_HIGH_RES_TIMERS */ 1466 1467 /* 1468 * Called from timer softirq every jiffy, expire hrtimers: 1469 * 1470 * For HRT its the fall back code to run the softirq in the timer 1471 * softirq context in case the hrtimer initialization failed or has 1472 * not been done yet. 1473 */ 1474 void hrtimer_run_pending(void) 1475 { 1476 if (hrtimer_hres_active()) 1477 return; 1478 1479 /* 1480 * This _is_ ugly: We have to check in the softirq context, 1481 * whether we can switch to highres and / or nohz mode. The 1482 * clocksource switch happens in the timer interrupt with 1483 * xtime_lock held. Notification from there only sets the 1484 * check bit in the tick_oneshot code, otherwise we might 1485 * deadlock vs. xtime_lock. 1486 */ 1487 if (tick_check_oneshot_change(!hrtimer_is_hres_enabled())) 1488 hrtimer_switch_to_hres(); 1489 } 1490 1491 /* 1492 * Called from hardirq context every jiffy 1493 */ 1494 void hrtimer_run_queues(void) 1495 { 1496 struct timerqueue_node *node; 1497 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); 1498 struct hrtimer_clock_base *base; 1499 int index, gettime = 1; 1500 1501 if (hrtimer_hres_active()) 1502 return; 1503 1504 for (index = 0; index < HRTIMER_MAX_CLOCK_BASES; index++) { 1505 base = &cpu_base->clock_base[index]; 1506 if (!timerqueue_getnext(&base->active)) 1507 continue; 1508 1509 if (gettime) { 1510 hrtimer_get_softirq_time(cpu_base); 1511 gettime = 0; 1512 } 1513 1514 raw_spin_lock(&cpu_base->lock); 1515 1516 while ((node = timerqueue_getnext(&base->active))) { 1517 struct hrtimer *timer; 1518 1519 timer = container_of(node, struct hrtimer, node); 1520 if (base->softirq_time.tv64 <= 1521 hrtimer_get_expires_tv64(timer)) 1522 break; 1523 1524 __run_hrtimer(timer, &base->softirq_time); 1525 } 1526 raw_spin_unlock(&cpu_base->lock); 1527 } 1528 } 1529 1530 /* 1531 * Sleep related functions: 1532 */ 1533 static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer) 1534 { 1535 struct hrtimer_sleeper *t = 1536 container_of(timer, struct hrtimer_sleeper, timer); 1537 struct task_struct *task = t->task; 1538 1539 t->task = NULL; 1540 if (task) 1541 wake_up_process(task); 1542 1543 return HRTIMER_NORESTART; 1544 } 1545 1546 void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task) 1547 { 1548 sl->timer.function = hrtimer_wakeup; 1549 sl->task = task; 1550 } 1551 EXPORT_SYMBOL_GPL(hrtimer_init_sleeper); 1552 1553 static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mode) 1554 { 1555 hrtimer_init_sleeper(t, current); 1556 1557 do { 1558 set_current_state(TASK_INTERRUPTIBLE); 1559 hrtimer_start_expires(&t->timer, mode); 1560 if (!hrtimer_active(&t->timer)) 1561 t->task = NULL; 1562 1563 if (likely(t->task)) 1564 freezable_schedule(); 1565 1566 hrtimer_cancel(&t->timer); 1567 mode = HRTIMER_MODE_ABS; 1568 1569 } while (t->task && !signal_pending(current)); 1570 1571 __set_current_state(TASK_RUNNING); 1572 1573 return t->task == NULL; 1574 } 1575 1576 static int update_rmtp(struct hrtimer *timer, struct timespec __user *rmtp) 1577 { 1578 struct timespec rmt; 1579 ktime_t rem; 1580 1581 rem = hrtimer_expires_remaining(timer); 1582 if (rem.tv64 <= 0) 1583 return 0; 1584 rmt = ktime_to_timespec(rem); 1585 1586 if (copy_to_user(rmtp, &rmt, sizeof(*rmtp))) 1587 return -EFAULT; 1588 1589 return 1; 1590 } 1591 1592 long __sched hrtimer_nanosleep_restart(struct restart_block *restart) 1593 { 1594 struct hrtimer_sleeper t; 1595 struct timespec __user *rmtp; 1596 int ret = 0; 1597 1598 hrtimer_init_on_stack(&t.timer, restart->nanosleep.clockid, 1599 HRTIMER_MODE_ABS); 1600 hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires); 1601 1602 if (do_nanosleep(&t, HRTIMER_MODE_ABS)) 1603 goto out; 1604 1605 rmtp = restart->nanosleep.rmtp; 1606 if (rmtp) { 1607 ret = update_rmtp(&t.timer, rmtp); 1608 if (ret <= 0) 1609 goto out; 1610 } 1611 1612 /* The other values in restart are already filled in */ 1613 ret = -ERESTART_RESTARTBLOCK; 1614 out: 1615 destroy_hrtimer_on_stack(&t.timer); 1616 return ret; 1617 } 1618 1619 long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp, 1620 const enum hrtimer_mode mode, const clockid_t clockid) 1621 { 1622 struct restart_block *restart; 1623 struct hrtimer_sleeper t; 1624 int ret = 0; 1625 unsigned long slack; 1626 1627 slack = current->timer_slack_ns; 1628 if (dl_task(current) || rt_task(current)) 1629 slack = 0; 1630 1631 hrtimer_init_on_stack(&t.timer, clockid, mode); 1632 hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack); 1633 if (do_nanosleep(&t, mode)) 1634 goto out; 1635 1636 /* Absolute timers do not update the rmtp value and restart: */ 1637 if (mode == HRTIMER_MODE_ABS) { 1638 ret = -ERESTARTNOHAND; 1639 goto out; 1640 } 1641 1642 if (rmtp) { 1643 ret = update_rmtp(&t.timer, rmtp); 1644 if (ret <= 0) 1645 goto out; 1646 } 1647 1648 restart = ¤t_thread_info()->restart_block; 1649 restart->fn = hrtimer_nanosleep_restart; 1650 restart->nanosleep.clockid = t.timer.base->clockid; 1651 restart->nanosleep.rmtp = rmtp; 1652 restart->nanosleep.expires = hrtimer_get_expires_tv64(&t.timer); 1653 1654 ret = -ERESTART_RESTARTBLOCK; 1655 out: 1656 destroy_hrtimer_on_stack(&t.timer); 1657 return ret; 1658 } 1659 1660 SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, 1661 struct timespec __user *, rmtp) 1662 { 1663 struct timespec tu; 1664 1665 if (copy_from_user(&tu, rqtp, sizeof(tu))) 1666 return -EFAULT; 1667 1668 if (!timespec_valid(&tu)) 1669 return -EINVAL; 1670 1671 return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC); 1672 } 1673 1674 /* 1675 * Functions related to boot-time initialization: 1676 */ 1677 static void init_hrtimers_cpu(int cpu) 1678 { 1679 struct hrtimer_cpu_base *cpu_base = &per_cpu(hrtimer_bases, cpu); 1680 int i; 1681 1682 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { 1683 cpu_base->clock_base[i].cpu_base = cpu_base; 1684 timerqueue_init_head(&cpu_base->clock_base[i].active); 1685 } 1686 1687 cpu_base->cpu = cpu; 1688 hrtimer_init_hres(cpu_base); 1689 } 1690 1691 #ifdef CONFIG_HOTPLUG_CPU 1692 1693 static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base, 1694 struct hrtimer_clock_base *new_base) 1695 { 1696 struct hrtimer *timer; 1697 struct timerqueue_node *node; 1698 1699 while ((node = timerqueue_getnext(&old_base->active))) { 1700 timer = container_of(node, struct hrtimer, node); 1701 BUG_ON(hrtimer_callback_running(timer)); 1702 debug_deactivate(timer); 1703 1704 /* 1705 * Mark it as STATE_MIGRATE not INACTIVE otherwise the 1706 * timer could be seen as !active and just vanish away 1707 * under us on another CPU 1708 */ 1709 __remove_hrtimer(timer, old_base, HRTIMER_STATE_MIGRATE, 0); 1710 timer->base = new_base; 1711 /* 1712 * Enqueue the timers on the new cpu. This does not 1713 * reprogram the event device in case the timer 1714 * expires before the earliest on this CPU, but we run 1715 * hrtimer_interrupt after we migrated everything to 1716 * sort out already expired timers and reprogram the 1717 * event device. 1718 */ 1719 enqueue_hrtimer(timer, new_base); 1720 1721 /* Clear the migration state bit */ 1722 timer->state &= ~HRTIMER_STATE_MIGRATE; 1723 } 1724 } 1725 1726 static void migrate_hrtimers(int scpu) 1727 { 1728 struct hrtimer_cpu_base *old_base, *new_base; 1729 int i; 1730 1731 BUG_ON(cpu_online(scpu)); 1732 tick_cancel_sched_timer(scpu); 1733 1734 local_irq_disable(); 1735 old_base = &per_cpu(hrtimer_bases, scpu); 1736 new_base = &__get_cpu_var(hrtimer_bases); 1737 /* 1738 * The caller is globally serialized and nobody else 1739 * takes two locks at once, deadlock is not possible. 1740 */ 1741 raw_spin_lock(&new_base->lock); 1742 raw_spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING); 1743 1744 for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { 1745 migrate_hrtimer_list(&old_base->clock_base[i], 1746 &new_base->clock_base[i]); 1747 } 1748 1749 raw_spin_unlock(&old_base->lock); 1750 raw_spin_unlock(&new_base->lock); 1751 1752 /* Check, if we got expired work to do */ 1753 __hrtimer_peek_ahead_timers(); 1754 local_irq_enable(); 1755 } 1756 1757 #endif /* CONFIG_HOTPLUG_CPU */ 1758 1759 static int hrtimer_cpu_notify(struct notifier_block *self, 1760 unsigned long action, void *hcpu) 1761 { 1762 int scpu = (long)hcpu; 1763 1764 switch (action) { 1765 1766 case CPU_UP_PREPARE: 1767 case CPU_UP_PREPARE_FROZEN: 1768 init_hrtimers_cpu(scpu); 1769 break; 1770 1771 #ifdef CONFIG_HOTPLUG_CPU 1772 case CPU_DYING: 1773 case CPU_DYING_FROZEN: 1774 clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DYING, &scpu); 1775 break; 1776 case CPU_DEAD: 1777 case CPU_DEAD_FROZEN: 1778 { 1779 clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DEAD, &scpu); 1780 migrate_hrtimers(scpu); 1781 break; 1782 } 1783 #endif 1784 1785 default: 1786 break; 1787 } 1788 1789 return NOTIFY_OK; 1790 } 1791 1792 static struct notifier_block hrtimers_nb = { 1793 .notifier_call = hrtimer_cpu_notify, 1794 }; 1795 1796 void __init hrtimers_init(void) 1797 { 1798 hrtimer_cpu_notify(&hrtimers_nb, (unsigned long)CPU_UP_PREPARE, 1799 (void *)(long)smp_processor_id()); 1800 register_cpu_notifier(&hrtimers_nb); 1801 #ifdef CONFIG_HIGH_RES_TIMERS 1802 open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq); 1803 #endif 1804 } 1805 1806 /** 1807 * schedule_hrtimeout_range_clock - sleep until timeout 1808 * @expires: timeout value (ktime_t) 1809 * @delta: slack in expires timeout (ktime_t) 1810 * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL 1811 * @clock: timer clock, CLOCK_MONOTONIC or CLOCK_REALTIME 1812 */ 1813 int __sched 1814 schedule_hrtimeout_range_clock(ktime_t *expires, unsigned long delta, 1815 const enum hrtimer_mode mode, int clock) 1816 { 1817 struct hrtimer_sleeper t; 1818 1819 /* 1820 * Optimize when a zero timeout value is given. It does not 1821 * matter whether this is an absolute or a relative time. 1822 */ 1823 if (expires && !expires->tv64) { 1824 __set_current_state(TASK_RUNNING); 1825 return 0; 1826 } 1827 1828 /* 1829 * A NULL parameter means "infinite" 1830 */ 1831 if (!expires) { 1832 schedule(); 1833 __set_current_state(TASK_RUNNING); 1834 return -EINTR; 1835 } 1836 1837 hrtimer_init_on_stack(&t.timer, clock, mode); 1838 hrtimer_set_expires_range_ns(&t.timer, *expires, delta); 1839 1840 hrtimer_init_sleeper(&t, current); 1841 1842 hrtimer_start_expires(&t.timer, mode); 1843 if (!hrtimer_active(&t.timer)) 1844 t.task = NULL; 1845 1846 if (likely(t.task)) 1847 schedule(); 1848 1849 hrtimer_cancel(&t.timer); 1850 destroy_hrtimer_on_stack(&t.timer); 1851 1852 __set_current_state(TASK_RUNNING); 1853 1854 return !t.task ? 0 : -EINTR; 1855 } 1856 1857 /** 1858 * schedule_hrtimeout_range - sleep until timeout 1859 * @expires: timeout value (ktime_t) 1860 * @delta: slack in expires timeout (ktime_t) 1861 * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL 1862 * 1863 * Make the current task sleep until the given expiry time has 1864 * elapsed. The routine will return immediately unless 1865 * the current task state has been set (see set_current_state()). 1866 * 1867 * The @delta argument gives the kernel the freedom to schedule the 1868 * actual wakeup to a time that is both power and performance friendly. 1869 * The kernel give the normal best effort behavior for "@expires+@delta", 1870 * but may decide to fire the timer earlier, but no earlier than @expires. 1871 * 1872 * You can set the task state as follows - 1873 * 1874 * %TASK_UNINTERRUPTIBLE - at least @timeout time is guaranteed to 1875 * pass before the routine returns. 1876 * 1877 * %TASK_INTERRUPTIBLE - the routine may return early if a signal is 1878 * delivered to the current task. 1879 * 1880 * The current task state is guaranteed to be TASK_RUNNING when this 1881 * routine returns. 1882 * 1883 * Returns 0 when the timer has expired otherwise -EINTR 1884 */ 1885 int __sched schedule_hrtimeout_range(ktime_t *expires, unsigned long delta, 1886 const enum hrtimer_mode mode) 1887 { 1888 return schedule_hrtimeout_range_clock(expires, delta, mode, 1889 CLOCK_MONOTONIC); 1890 } 1891 EXPORT_SYMBOL_GPL(schedule_hrtimeout_range); 1892 1893 /** 1894 * schedule_hrtimeout - sleep until timeout 1895 * @expires: timeout value (ktime_t) 1896 * @mode: timer mode, HRTIMER_MODE_ABS or HRTIMER_MODE_REL 1897 * 1898 * Make the current task sleep until the given expiry time has 1899 * elapsed. The routine will return immediately unless 1900 * the current task state has been set (see set_current_state()). 1901 * 1902 * You can set the task state as follows - 1903 * 1904 * %TASK_UNINTERRUPTIBLE - at least @timeout time is guaranteed to 1905 * pass before the routine returns. 1906 * 1907 * %TASK_INTERRUPTIBLE - the routine may return early if a signal is 1908 * delivered to the current task. 1909 * 1910 * The current task state is guaranteed to be TASK_RUNNING when this 1911 * routine returns. 1912 * 1913 * Returns 0 when the timer has expired otherwise -EINTR 1914 */ 1915 int __sched schedule_hrtimeout(ktime_t *expires, 1916 const enum hrtimer_mode mode) 1917 { 1918 return schedule_hrtimeout_range(expires, 0, mode); 1919 } 1920 EXPORT_SYMBOL_GPL(schedule_hrtimeout); 1921