1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#include <linux/kernel_stat.h>
22#include <linux/export.h>
23#include <linux/interrupt.h>
24#include <linux/percpu.h>
25#include <linux/init.h>
26#include <linux/mm.h>
27#include <linux/swap.h>
28#include <linux/pid_namespace.h>
29#include <linux/notifier.h>
30#include <linux/thread_info.h>
31#include <linux/time.h>
32#include <linux/jiffies.h>
33#include <linux/posix-timers.h>
34#include <linux/cpu.h>
35#include <linux/syscalls.h>
36#include <linux/delay.h>
37#include <linux/tick.h>
38#include <linux/kallsyms.h>
39#include <linux/irq_work.h>
40#include <linux/sched/signal.h>
41#include <linux/sched/sysctl.h>
42#include <linux/sched/nohz.h>
43#include <linux/sched/debug.h>
44#include <linux/slab.h>
45#include <linux/compat.h>
46
47#include <linux/uaccess.h>
48#include <asm/unistd.h>
49#include <asm/div64.h>
50#include <asm/timex.h>
51#include <asm/io.h>
52
53#include "tick-internal.h"
54
55#define CREATE_TRACE_POINTS
56#include <trace/events/timer.h>
57
58__visible u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
59
60EXPORT_SYMBOL(jiffies_64);
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151#define LVL_CLK_SHIFT 3
152#define LVL_CLK_DIV (1UL << LVL_CLK_SHIFT)
153#define LVL_CLK_MASK (LVL_CLK_DIV - 1)
154#define LVL_SHIFT(n) ((n) * LVL_CLK_SHIFT)
155#define LVL_GRAN(n) (1UL << LVL_SHIFT(n))
156
157
158
159
160
161#define LVL_START(n) ((LVL_SIZE - 1) << (((n) - 1) * LVL_CLK_SHIFT))
162
163
164#define LVL_BITS 6
165#define LVL_SIZE (1UL << LVL_BITS)
166#define LVL_MASK (LVL_SIZE - 1)
167#define LVL_OFFS(n) ((n) * LVL_SIZE)
168
169
170#if HZ > 100
171# define LVL_DEPTH 9
172# else
173# define LVL_DEPTH 8
174#endif
175
176
177#define WHEEL_TIMEOUT_CUTOFF (LVL_START(LVL_DEPTH))
178#define WHEEL_TIMEOUT_MAX (WHEEL_TIMEOUT_CUTOFF - LVL_GRAN(LVL_DEPTH - 1))
179
180
181
182
183
184#define WHEEL_SIZE (LVL_SIZE * LVL_DEPTH)
185
186#ifdef CONFIG_NO_HZ_COMMON
187# define NR_BASES 2
188# define BASE_STD 0
189# define BASE_DEF 1
190#else
191# define NR_BASES 1
192# define BASE_STD 0
193# define BASE_DEF 0
194#endif
195
196struct timer_base {
197 raw_spinlock_t lock;
198 struct timer_list *running_timer;
199 unsigned long clk;
200 unsigned long next_expiry;
201 unsigned int cpu;
202 bool is_idle;
203 bool must_forward_clk;
204 DECLARE_BITMAP(pending_map, WHEEL_SIZE);
205 struct hlist_head vectors[WHEEL_SIZE];
206} ____cacheline_aligned;
207
208static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]);
209
210#ifdef CONFIG_NO_HZ_COMMON
211
212static DEFINE_STATIC_KEY_FALSE(timers_nohz_active);
213static DEFINE_MUTEX(timer_keys_mutex);
214
215static void timer_update_keys(struct work_struct *work);
216static DECLARE_WORK(timer_update_work, timer_update_keys);
217
218#ifdef CONFIG_SMP
219unsigned int sysctl_timer_migration = 1;
220
221DEFINE_STATIC_KEY_FALSE(timers_migration_enabled);
222
223static void timers_update_migration(void)
224{
225 if (sysctl_timer_migration && tick_nohz_active)
226 static_branch_enable(&timers_migration_enabled);
227 else
228 static_branch_disable(&timers_migration_enabled);
229}
230#else
231static inline void timers_update_migration(void) { }
232#endif
233
234static void timer_update_keys(struct work_struct *work)
235{
236 mutex_lock(&timer_keys_mutex);
237 timers_update_migration();
238 static_branch_enable(&timers_nohz_active);
239 mutex_unlock(&timer_keys_mutex);
240}
241
242void timers_update_nohz(void)
243{
244 schedule_work(&timer_update_work);
245}
246
247int timer_migration_handler(struct ctl_table *table, int write,
248 void __user *buffer, size_t *lenp,
249 loff_t *ppos)
250{
251 int ret;
252
253 mutex_lock(&timer_keys_mutex);
254 ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
255 if (!ret && write)
256 timers_update_migration();
257 mutex_unlock(&timer_keys_mutex);
258 return ret;
259}
260
261static inline bool is_timers_nohz_active(void)
262{
263 return static_branch_unlikely(&timers_nohz_active);
264}
265#else
266static inline bool is_timers_nohz_active(void) { return false; }
267#endif
268
269static unsigned long round_jiffies_common(unsigned long j, int cpu,
270 bool force_up)
271{
272 int rem;
273 unsigned long original = j;
274
275
276
277
278
279
280
281
282
283 j += cpu * 3;
284
285 rem = j % HZ;
286
287
288
289
290
291
292
293
294 if (rem < HZ/4 && !force_up)
295 j = j - rem;
296 else
297 j = j - rem + HZ;
298
299
300 j -= cpu * 3;
301
302
303
304
305
306 return time_is_after_jiffies(j) ? j : original;
307}
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329unsigned long __round_jiffies(unsigned long j, int cpu)
330{
331 return round_jiffies_common(j, cpu, false);
332}
333EXPORT_SYMBOL_GPL(__round_jiffies);
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355unsigned long __round_jiffies_relative(unsigned long j, int cpu)
356{
357 unsigned long j0 = jiffies;
358
359
360 return round_jiffies_common(j + j0, cpu, false) - j0;
361}
362EXPORT_SYMBOL_GPL(__round_jiffies_relative);
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379unsigned long round_jiffies(unsigned long j)
380{
381 return round_jiffies_common(j, raw_smp_processor_id(), false);
382}
383EXPORT_SYMBOL_GPL(round_jiffies);
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400unsigned long round_jiffies_relative(unsigned long j)
401{
402 return __round_jiffies_relative(j, raw_smp_processor_id());
403}
404EXPORT_SYMBOL_GPL(round_jiffies_relative);
405
406
407
408
409
410
411
412
413
414
415
416unsigned long __round_jiffies_up(unsigned long j, int cpu)
417{
418 return round_jiffies_common(j, cpu, true);
419}
420EXPORT_SYMBOL_GPL(__round_jiffies_up);
421
422
423
424
425
426
427
428
429
430
431
432unsigned long __round_jiffies_up_relative(unsigned long j, int cpu)
433{
434 unsigned long j0 = jiffies;
435
436
437 return round_jiffies_common(j + j0, cpu, true) - j0;
438}
439EXPORT_SYMBOL_GPL(__round_jiffies_up_relative);
440
441
442
443
444
445
446
447
448
449
450unsigned long round_jiffies_up(unsigned long j)
451{
452 return round_jiffies_common(j, raw_smp_processor_id(), true);
453}
454EXPORT_SYMBOL_GPL(round_jiffies_up);
455
456
457
458
459
460
461
462
463
464
465unsigned long round_jiffies_up_relative(unsigned long j)
466{
467 return __round_jiffies_up_relative(j, raw_smp_processor_id());
468}
469EXPORT_SYMBOL_GPL(round_jiffies_up_relative);
470
471
472static inline unsigned int timer_get_idx(struct timer_list *timer)
473{
474 return (timer->flags & TIMER_ARRAYMASK) >> TIMER_ARRAYSHIFT;
475}
476
477static inline void timer_set_idx(struct timer_list *timer, unsigned int idx)
478{
479 timer->flags = (timer->flags & ~TIMER_ARRAYMASK) |
480 idx << TIMER_ARRAYSHIFT;
481}
482
483
484
485
486
487static inline unsigned calc_index(unsigned expires, unsigned lvl)
488{
489 expires = (expires + LVL_GRAN(lvl)) >> LVL_SHIFT(lvl);
490 return LVL_OFFS(lvl) + (expires & LVL_MASK);
491}
492
493static int calc_wheel_index(unsigned long expires, unsigned long clk)
494{
495 unsigned long delta = expires - clk;
496 unsigned int idx;
497
498 if (delta < LVL_START(1)) {
499 idx = calc_index(expires, 0);
500 } else if (delta < LVL_START(2)) {
501 idx = calc_index(expires, 1);
502 } else if (delta < LVL_START(3)) {
503 idx = calc_index(expires, 2);
504 } else if (delta < LVL_START(4)) {
505 idx = calc_index(expires, 3);
506 } else if (delta < LVL_START(5)) {
507 idx = calc_index(expires, 4);
508 } else if (delta < LVL_START(6)) {
509 idx = calc_index(expires, 5);
510 } else if (delta < LVL_START(7)) {
511 idx = calc_index(expires, 6);
512 } else if (LVL_DEPTH > 8 && delta < LVL_START(8)) {
513 idx = calc_index(expires, 7);
514 } else if ((long) delta < 0) {
515 idx = clk & LVL_MASK;
516 } else {
517
518
519
520
521 if (expires >= WHEEL_TIMEOUT_CUTOFF)
522 expires = WHEEL_TIMEOUT_MAX;
523
524 idx = calc_index(expires, LVL_DEPTH - 1);
525 }
526 return idx;
527}
528
529
530
531
532
533static void enqueue_timer(struct timer_base *base, struct timer_list *timer,
534 unsigned int idx)
535{
536 hlist_add_head(&timer->entry, base->vectors + idx);
537 __set_bit(idx, base->pending_map);
538 timer_set_idx(timer, idx);
539}
540
541static void
542__internal_add_timer(struct timer_base *base, struct timer_list *timer)
543{
544 unsigned int idx;
545
546 idx = calc_wheel_index(timer->expires, base->clk);
547 enqueue_timer(base, timer, idx);
548}
549
550static void
551trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer)
552{
553 if (!is_timers_nohz_active())
554 return;
555
556
557
558
559
560 if (timer->flags & TIMER_DEFERRABLE) {
561 if (tick_nohz_full_cpu(base->cpu))
562 wake_up_nohz_cpu(base->cpu);
563 return;
564 }
565
566
567
568
569
570
571 if (!base->is_idle)
572 return;
573
574
575 if (time_after_eq(timer->expires, base->next_expiry))
576 return;
577
578
579
580
581
582 base->next_expiry = timer->expires;
583 wake_up_nohz_cpu(base->cpu);
584}
585
586static void
587internal_add_timer(struct timer_base *base, struct timer_list *timer)
588{
589 __internal_add_timer(base, timer);
590 trigger_dyntick_cpu(base, timer);
591}
592
593#ifdef CONFIG_DEBUG_OBJECTS_TIMERS
594
595static struct debug_obj_descr timer_debug_descr;
596
597static void *timer_debug_hint(void *addr)
598{
599 return ((struct timer_list *) addr)->function;
600}
601
602static bool timer_is_static_object(void *addr)
603{
604 struct timer_list *timer = addr;
605
606 return (timer->entry.pprev == NULL &&
607 timer->entry.next == TIMER_ENTRY_STATIC);
608}
609
610
611
612
613
614static bool timer_fixup_init(void *addr, enum debug_obj_state state)
615{
616 struct timer_list *timer = addr;
617
618 switch (state) {
619 case ODEBUG_STATE_ACTIVE:
620 del_timer_sync(timer);
621 debug_object_init(timer, &timer_debug_descr);
622 return true;
623 default:
624 return false;
625 }
626}
627
628
629static void stub_timer(struct timer_list *unused)
630{
631 WARN_ON(1);
632}
633
634
635
636
637
638
639static bool timer_fixup_activate(void *addr, enum debug_obj_state state)
640{
641 struct timer_list *timer = addr;
642
643 switch (state) {
644 case ODEBUG_STATE_NOTAVAILABLE:
645 timer_setup(timer, stub_timer, 0);
646 return true;
647
648 case ODEBUG_STATE_ACTIVE:
649 WARN_ON(1);
650
651 default:
652 return false;
653 }
654}
655
656
657
658
659
660static bool timer_fixup_free(void *addr, enum debug_obj_state state)
661{
662 struct timer_list *timer = addr;
663
664 switch (state) {
665 case ODEBUG_STATE_ACTIVE:
666 del_timer_sync(timer);
667 debug_object_free(timer, &timer_debug_descr);
668 return true;
669 default:
670 return false;
671 }
672}
673
674
675
676
677
678static bool timer_fixup_assert_init(void *addr, enum debug_obj_state state)
679{
680 struct timer_list *timer = addr;
681
682 switch (state) {
683 case ODEBUG_STATE_NOTAVAILABLE:
684 timer_setup(timer, stub_timer, 0);
685 return true;
686 default:
687 return false;
688 }
689}
690
691static struct debug_obj_descr timer_debug_descr = {
692 .name = "timer_list",
693 .debug_hint = timer_debug_hint,
694 .is_static_object = timer_is_static_object,
695 .fixup_init = timer_fixup_init,
696 .fixup_activate = timer_fixup_activate,
697 .fixup_free = timer_fixup_free,
698 .fixup_assert_init = timer_fixup_assert_init,
699};
700
701static inline void debug_timer_init(struct timer_list *timer)
702{
703 debug_object_init(timer, &timer_debug_descr);
704}
705
706static inline void debug_timer_activate(struct timer_list *timer)
707{
708 debug_object_activate(timer, &timer_debug_descr);
709}
710
711static inline void debug_timer_deactivate(struct timer_list *timer)
712{
713 debug_object_deactivate(timer, &timer_debug_descr);
714}
715
716static inline void debug_timer_free(struct timer_list *timer)
717{
718 debug_object_free(timer, &timer_debug_descr);
719}
720
721static inline void debug_timer_assert_init(struct timer_list *timer)
722{
723 debug_object_assert_init(timer, &timer_debug_descr);
724}
725
726static void do_init_timer(struct timer_list *timer,
727 void (*func)(struct timer_list *),
728 unsigned int flags,
729 const char *name, struct lock_class_key *key);
730
731void init_timer_on_stack_key(struct timer_list *timer,
732 void (*func)(struct timer_list *),
733 unsigned int flags,
734 const char *name, struct lock_class_key *key)
735{
736 debug_object_init_on_stack(timer, &timer_debug_descr);
737 do_init_timer(timer, func, flags, name, key);
738}
739EXPORT_SYMBOL_GPL(init_timer_on_stack_key);
740
741void destroy_timer_on_stack(struct timer_list *timer)
742{
743 debug_object_free(timer, &timer_debug_descr);
744}
745EXPORT_SYMBOL_GPL(destroy_timer_on_stack);
746
747#else
748static inline void debug_timer_init(struct timer_list *timer) { }
749static inline void debug_timer_activate(struct timer_list *timer) { }
750static inline void debug_timer_deactivate(struct timer_list *timer) { }
751static inline void debug_timer_assert_init(struct timer_list *timer) { }
752#endif
753
754static inline void debug_init(struct timer_list *timer)
755{
756 debug_timer_init(timer);
757 trace_timer_init(timer);
758}
759
760static inline void
761debug_activate(struct timer_list *timer, unsigned long expires)
762{
763 debug_timer_activate(timer);
764 trace_timer_start(timer, expires, timer->flags);
765}
766
767static inline void debug_deactivate(struct timer_list *timer)
768{
769 debug_timer_deactivate(timer);
770 trace_timer_cancel(timer);
771}
772
773static inline void debug_assert_init(struct timer_list *timer)
774{
775 debug_timer_assert_init(timer);
776}
777
778static void do_init_timer(struct timer_list *timer,
779 void (*func)(struct timer_list *),
780 unsigned int flags,
781 const char *name, struct lock_class_key *key)
782{
783 timer->entry.pprev = NULL;
784 timer->function = func;
785 timer->flags = flags | raw_smp_processor_id();
786 lockdep_init_map(&timer->lockdep_map, name, key, 0);
787}
788
789
790
791
792
793
794
795
796
797
798
799
800
801void init_timer_key(struct timer_list *timer,
802 void (*func)(struct timer_list *), unsigned int flags,
803 const char *name, struct lock_class_key *key)
804{
805 debug_init(timer);
806 do_init_timer(timer, func, flags, name, key);
807}
808EXPORT_SYMBOL(init_timer_key);
809
810static inline void detach_timer(struct timer_list *timer, bool clear_pending)
811{
812 struct hlist_node *entry = &timer->entry;
813
814 debug_deactivate(timer);
815
816 __hlist_del(entry);
817 if (clear_pending)
818 entry->pprev = NULL;
819 entry->next = LIST_POISON2;
820}
821
822static int detach_if_pending(struct timer_list *timer, struct timer_base *base,
823 bool clear_pending)
824{
825 unsigned idx = timer_get_idx(timer);
826
827 if (!timer_pending(timer))
828 return 0;
829
830 if (hlist_is_singular_node(&timer->entry, base->vectors + idx))
831 __clear_bit(idx, base->pending_map);
832
833 detach_timer(timer, clear_pending);
834 return 1;
835}
836
837static inline struct timer_base *get_timer_cpu_base(u32 tflags, u32 cpu)
838{
839 struct timer_base *base = per_cpu_ptr(&timer_bases[BASE_STD], cpu);
840
841
842
843
844
845 if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
846 base = per_cpu_ptr(&timer_bases[BASE_DEF], cpu);
847 return base;
848}
849
850static inline struct timer_base *get_timer_this_cpu_base(u32 tflags)
851{
852 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
853
854
855
856
857
858 if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
859 base = this_cpu_ptr(&timer_bases[BASE_DEF]);
860 return base;
861}
862
863static inline struct timer_base *get_timer_base(u32 tflags)
864{
865 return get_timer_cpu_base(tflags, tflags & TIMER_CPUMASK);
866}
867
868static inline struct timer_base *
869get_target_base(struct timer_base *base, unsigned tflags)
870{
871#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON)
872 if (static_branch_likely(&timers_migration_enabled) &&
873 !(tflags & TIMER_PINNED))
874 return get_timer_cpu_base(tflags, get_nohz_timer_target());
875#endif
876 return get_timer_this_cpu_base(tflags);
877}
878
879static inline void forward_timer_base(struct timer_base *base)
880{
881#ifdef CONFIG_NO_HZ_COMMON
882 unsigned long jnow;
883
884
885
886
887
888
889 if (likely(!base->must_forward_clk))
890 return;
891
892 jnow = READ_ONCE(jiffies);
893 base->must_forward_clk = base->is_idle;
894 if ((long)(jnow - base->clk) < 2)
895 return;
896
897
898
899
900
901 if (time_after(base->next_expiry, jnow))
902 base->clk = jnow;
903 else
904 base->clk = base->next_expiry;
905#endif
906}
907
908
909
910
911
912
913
914
915
916
917
918
919
920static struct timer_base *lock_timer_base(struct timer_list *timer,
921 unsigned long *flags)
922 __acquires(timer->base->lock)
923{
924 for (;;) {
925 struct timer_base *base;
926 u32 tf;
927
928
929
930
931
932
933 tf = READ_ONCE(timer->flags);
934
935 if (!(tf & TIMER_MIGRATING)) {
936 base = get_timer_base(tf);
937 raw_spin_lock_irqsave(&base->lock, *flags);
938 if (timer->flags == tf)
939 return base;
940 raw_spin_unlock_irqrestore(&base->lock, *flags);
941 }
942 cpu_relax();
943 }
944}
945
946#define MOD_TIMER_PENDING_ONLY 0x01
947#define MOD_TIMER_REDUCE 0x02
948
949static inline int
950__mod_timer(struct timer_list *timer, unsigned long expires, unsigned int options)
951{
952 struct timer_base *base, *new_base;
953 unsigned int idx = UINT_MAX;
954 unsigned long clk = 0, flags;
955 int ret = 0;
956
957 BUG_ON(!timer->function);
958
959
960
961
962
963
964 if (timer_pending(timer)) {
965
966
967
968
969
970 long diff = timer->expires - expires;
971
972 if (!diff)
973 return 1;
974 if (options & MOD_TIMER_REDUCE && diff <= 0)
975 return 1;
976
977
978
979
980
981
982
983 base = lock_timer_base(timer, &flags);
984 forward_timer_base(base);
985
986 if (timer_pending(timer) && (options & MOD_TIMER_REDUCE) &&
987 time_before_eq(timer->expires, expires)) {
988 ret = 1;
989 goto out_unlock;
990 }
991
992 clk = base->clk;
993 idx = calc_wheel_index(expires, clk);
994
995
996
997
998
999
1000 if (idx == timer_get_idx(timer)) {
1001 if (!(options & MOD_TIMER_REDUCE))
1002 timer->expires = expires;
1003 else if (time_after(timer->expires, expires))
1004 timer->expires = expires;
1005 ret = 1;
1006 goto out_unlock;
1007 }
1008 } else {
1009 base = lock_timer_base(timer, &flags);
1010 forward_timer_base(base);
1011 }
1012
1013 ret = detach_if_pending(timer, base, false);
1014 if (!ret && (options & MOD_TIMER_PENDING_ONLY))
1015 goto out_unlock;
1016
1017 new_base = get_target_base(base, timer->flags);
1018
1019 if (base != new_base) {
1020
1021
1022
1023
1024
1025
1026
1027 if (likely(base->running_timer != timer)) {
1028
1029 timer->flags |= TIMER_MIGRATING;
1030
1031 raw_spin_unlock(&base->lock);
1032 base = new_base;
1033 raw_spin_lock(&base->lock);
1034 WRITE_ONCE(timer->flags,
1035 (timer->flags & ~TIMER_BASEMASK) | base->cpu);
1036 forward_timer_base(base);
1037 }
1038 }
1039
1040 debug_activate(timer, expires);
1041
1042 timer->expires = expires;
1043
1044
1045
1046
1047
1048
1049
1050 if (idx != UINT_MAX && clk == base->clk) {
1051 enqueue_timer(base, timer, idx);
1052 trigger_dyntick_cpu(base, timer);
1053 } else {
1054 internal_add_timer(base, timer);
1055 }
1056
1057out_unlock:
1058 raw_spin_unlock_irqrestore(&base->lock, flags);
1059
1060 return ret;
1061}
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073int mod_timer_pending(struct timer_list *timer, unsigned long expires)
1074{
1075 return __mod_timer(timer, expires, MOD_TIMER_PENDING_ONLY);
1076}
1077EXPORT_SYMBOL(mod_timer_pending);
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099int mod_timer(struct timer_list *timer, unsigned long expires)
1100{
1101 return __mod_timer(timer, expires, 0);
1102}
1103EXPORT_SYMBOL(mod_timer);
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114int timer_reduce(struct timer_list *timer, unsigned long expires)
1115{
1116 return __mod_timer(timer, expires, MOD_TIMER_REDUCE);
1117}
1118EXPORT_SYMBOL(timer_reduce);
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134void add_timer(struct timer_list *timer)
1135{
1136 BUG_ON(timer_pending(timer));
1137 mod_timer(timer, timer->expires);
1138}
1139EXPORT_SYMBOL(add_timer);
1140
1141
1142
1143
1144
1145
1146
1147
1148void add_timer_on(struct timer_list *timer, int cpu)
1149{
1150 struct timer_base *new_base, *base;
1151 unsigned long flags;
1152
1153 BUG_ON(timer_pending(timer) || !timer->function);
1154
1155 new_base = get_timer_cpu_base(timer->flags, cpu);
1156
1157
1158
1159
1160
1161
1162 base = lock_timer_base(timer, &flags);
1163 if (base != new_base) {
1164 timer->flags |= TIMER_MIGRATING;
1165
1166 raw_spin_unlock(&base->lock);
1167 base = new_base;
1168 raw_spin_lock(&base->lock);
1169 WRITE_ONCE(timer->flags,
1170 (timer->flags & ~TIMER_BASEMASK) | cpu);
1171 }
1172 forward_timer_base(base);
1173
1174 debug_activate(timer, timer->expires);
1175 internal_add_timer(base, timer);
1176 raw_spin_unlock_irqrestore(&base->lock, flags);
1177}
1178EXPORT_SYMBOL_GPL(add_timer_on);
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191int del_timer(struct timer_list *timer)
1192{
1193 struct timer_base *base;
1194 unsigned long flags;
1195 int ret = 0;
1196
1197 debug_assert_init(timer);
1198
1199 if (timer_pending(timer)) {
1200 base = lock_timer_base(timer, &flags);
1201 ret = detach_if_pending(timer, base, true);
1202 raw_spin_unlock_irqrestore(&base->lock, flags);
1203 }
1204
1205 return ret;
1206}
1207EXPORT_SYMBOL(del_timer);
1208
1209
1210
1211
1212
1213
1214
1215
1216int try_to_del_timer_sync(struct timer_list *timer)
1217{
1218 struct timer_base *base;
1219 unsigned long flags;
1220 int ret = -1;
1221
1222 debug_assert_init(timer);
1223
1224 base = lock_timer_base(timer, &flags);
1225
1226 if (base->running_timer != timer)
1227 ret = detach_if_pending(timer, base, true);
1228
1229 raw_spin_unlock_irqrestore(&base->lock, flags);
1230
1231 return ret;
1232}
1233EXPORT_SYMBOL(try_to_del_timer_sync);
1234
1235#ifdef CONFIG_SMP
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272int del_timer_sync(struct timer_list *timer)
1273{
1274#ifdef CONFIG_LOCKDEP
1275 unsigned long flags;
1276
1277
1278
1279
1280
1281 local_irq_save(flags);
1282 lock_map_acquire(&timer->lockdep_map);
1283 lock_map_release(&timer->lockdep_map);
1284 local_irq_restore(flags);
1285#endif
1286
1287
1288
1289
1290 WARN_ON(in_irq() && !(timer->flags & TIMER_IRQSAFE));
1291 for (;;) {
1292 int ret = try_to_del_timer_sync(timer);
1293 if (ret >= 0)
1294 return ret;
1295 cpu_relax();
1296 }
1297}
1298EXPORT_SYMBOL(del_timer_sync);
1299#endif
1300
1301static void call_timer_fn(struct timer_list *timer, void (*fn)(struct timer_list *))
1302{
1303 int count = preempt_count();
1304
1305#ifdef CONFIG_LOCKDEP
1306
1307
1308
1309
1310
1311
1312
1313 struct lockdep_map lockdep_map;
1314
1315 lockdep_copy_map(&lockdep_map, &timer->lockdep_map);
1316#endif
1317
1318
1319
1320
1321
1322 lock_map_acquire(&lockdep_map);
1323
1324 trace_timer_expire_entry(timer);
1325 fn(timer);
1326 trace_timer_expire_exit(timer);
1327
1328 lock_map_release(&lockdep_map);
1329
1330 if (count != preempt_count()) {
1331 WARN_ONCE(1, "timer: %pF preempt leak: %08x -> %08x\n",
1332 fn, count, preempt_count());
1333
1334
1335
1336
1337
1338
1339 preempt_count_set(count);
1340 }
1341}
1342
1343static void expire_timers(struct timer_base *base, struct hlist_head *head)
1344{
1345 while (!hlist_empty(head)) {
1346 struct timer_list *timer;
1347 void (*fn)(struct timer_list *);
1348
1349 timer = hlist_entry(head->first, struct timer_list, entry);
1350
1351 base->running_timer = timer;
1352 detach_timer(timer, true);
1353
1354 fn = timer->function;
1355
1356 if (timer->flags & TIMER_IRQSAFE) {
1357 raw_spin_unlock(&base->lock);
1358 call_timer_fn(timer, fn);
1359 raw_spin_lock(&base->lock);
1360 } else {
1361 raw_spin_unlock_irq(&base->lock);
1362 call_timer_fn(timer, fn);
1363 raw_spin_lock_irq(&base->lock);
1364 }
1365 }
1366}
1367
1368static int __collect_expired_timers(struct timer_base *base,
1369 struct hlist_head *heads)
1370{
1371 unsigned long clk = base->clk;
1372 struct hlist_head *vec;
1373 int i, levels = 0;
1374 unsigned int idx;
1375
1376 for (i = 0; i < LVL_DEPTH; i++) {
1377 idx = (clk & LVL_MASK) + i * LVL_SIZE;
1378
1379 if (__test_and_clear_bit(idx, base->pending_map)) {
1380 vec = base->vectors + idx;
1381 hlist_move_list(vec, heads++);
1382 levels++;
1383 }
1384
1385 if (clk & LVL_CLK_MASK)
1386 break;
1387
1388 clk >>= LVL_CLK_SHIFT;
1389 }
1390 return levels;
1391}
1392
1393#ifdef CONFIG_NO_HZ_COMMON
1394
1395
1396
1397
1398
1399static int next_pending_bucket(struct timer_base *base, unsigned offset,
1400 unsigned clk)
1401{
1402 unsigned pos, start = offset + clk;
1403 unsigned end = offset + LVL_SIZE;
1404
1405 pos = find_next_bit(base->pending_map, end, start);
1406 if (pos < end)
1407 return pos - start;
1408
1409 pos = find_next_bit(base->pending_map, start, offset);
1410 return pos < start ? pos + LVL_SIZE - start : -1;
1411}
1412
1413
1414
1415
1416
1417static unsigned long __next_timer_interrupt(struct timer_base *base)
1418{
1419 unsigned long clk, next, adj;
1420 unsigned lvl, offset = 0;
1421
1422 next = base->clk + NEXT_TIMER_MAX_DELTA;
1423 clk = base->clk;
1424 for (lvl = 0; lvl < LVL_DEPTH; lvl++, offset += LVL_SIZE) {
1425 int pos = next_pending_bucket(base, offset, clk & LVL_MASK);
1426
1427 if (pos >= 0) {
1428 unsigned long tmp = clk + (unsigned long) pos;
1429
1430 tmp <<= LVL_SHIFT(lvl);
1431 if (time_before(tmp, next))
1432 next = tmp;
1433 }
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470 adj = clk & LVL_CLK_MASK ? 1 : 0;
1471 clk >>= LVL_CLK_SHIFT;
1472 clk += adj;
1473 }
1474 return next;
1475}
1476
1477
1478
1479
1480
1481static u64 cmp_next_hrtimer_event(u64 basem, u64 expires)
1482{
1483 u64 nextevt = hrtimer_get_next_event();
1484
1485
1486
1487
1488
1489 if (expires <= nextevt)
1490 return expires;
1491
1492
1493
1494
1495
1496 if (nextevt <= basem)
1497 return basem;
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507 return DIV_ROUND_UP_ULL(nextevt, TICK_NSEC) * TICK_NSEC;
1508}
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518u64 get_next_timer_interrupt(unsigned long basej, u64 basem)
1519{
1520 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
1521 u64 expires = KTIME_MAX;
1522 unsigned long nextevt;
1523 bool is_max_delta;
1524
1525
1526
1527
1528
1529 if (cpu_is_offline(smp_processor_id()))
1530 return expires;
1531
1532 raw_spin_lock(&base->lock);
1533 nextevt = __next_timer_interrupt(base);
1534 is_max_delta = (nextevt == base->clk + NEXT_TIMER_MAX_DELTA);
1535 base->next_expiry = nextevt;
1536
1537
1538
1539
1540
1541 if (time_after(basej, base->clk)) {
1542 if (time_after(nextevt, basej))
1543 base->clk = basej;
1544 else if (time_after(nextevt, base->clk))
1545 base->clk = nextevt;
1546 }
1547
1548 if (time_before_eq(nextevt, basej)) {
1549 expires = basem;
1550 base->is_idle = false;
1551 } else {
1552 if (!is_max_delta)
1553 expires = basem + (u64)(nextevt - basej) * TICK_NSEC;
1554
1555
1556
1557
1558
1559
1560
1561 if ((expires - basem) > TICK_NSEC) {
1562 base->must_forward_clk = true;
1563 base->is_idle = true;
1564 }
1565 }
1566 raw_spin_unlock(&base->lock);
1567
1568 return cmp_next_hrtimer_event(basem, expires);
1569}
1570
1571
1572
1573
1574
1575
1576void timer_clear_idle(void)
1577{
1578 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
1579
1580
1581
1582
1583
1584
1585
1586 base->is_idle = false;
1587}
1588
1589static int collect_expired_timers(struct timer_base *base,
1590 struct hlist_head *heads)
1591{
1592
1593
1594
1595
1596
1597 if ((long)(jiffies - base->clk) > 2) {
1598 unsigned long next = __next_timer_interrupt(base);
1599
1600
1601
1602
1603
1604 if (time_after(next, jiffies)) {
1605
1606
1607
1608
1609 base->clk = jiffies;
1610 return 0;
1611 }
1612 base->clk = next;
1613 }
1614 return __collect_expired_timers(base, heads);
1615}
1616#else
1617static inline int collect_expired_timers(struct timer_base *base,
1618 struct hlist_head *heads)
1619{
1620 return __collect_expired_timers(base, heads);
1621}
1622#endif
1623
1624
1625
1626
1627
1628void update_process_times(int user_tick)
1629{
1630 struct task_struct *p = current;
1631
1632
1633 account_process_tick(p, user_tick);
1634 run_local_timers();
1635 rcu_sched_clock_irq(user_tick);
1636#ifdef CONFIG_IRQ_WORK
1637 if (in_irq())
1638 irq_work_tick();
1639#endif
1640 scheduler_tick();
1641 if (IS_ENABLED(CONFIG_POSIX_TIMERS))
1642 run_posix_cpu_timers(p);
1643}
1644
1645
1646
1647
1648
1649static inline void __run_timers(struct timer_base *base)
1650{
1651 struct hlist_head heads[LVL_DEPTH];
1652 int levels;
1653
1654 if (!time_after_eq(jiffies, base->clk))
1655 return;
1656
1657 raw_spin_lock_irq(&base->lock);
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673 base->must_forward_clk = false;
1674
1675 while (time_after_eq(jiffies, base->clk)) {
1676
1677 levels = collect_expired_timers(base, heads);
1678 base->clk++;
1679
1680 while (levels--)
1681 expire_timers(base, heads + levels);
1682 }
1683 base->running_timer = NULL;
1684 raw_spin_unlock_irq(&base->lock);
1685}
1686
1687
1688
1689
1690static __latent_entropy void run_timer_softirq(struct softirq_action *h)
1691{
1692 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
1693
1694 __run_timers(base);
1695 if (IS_ENABLED(CONFIG_NO_HZ_COMMON))
1696 __run_timers(this_cpu_ptr(&timer_bases[BASE_DEF]));
1697}
1698
1699
1700
1701
1702void run_local_timers(void)
1703{
1704 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);
1705
1706 hrtimer_run_queues();
1707
1708 if (time_before(jiffies, base->clk)) {
1709 if (!IS_ENABLED(CONFIG_NO_HZ_COMMON))
1710 return;
1711
1712 base++;
1713 if (time_before(jiffies, base->clk))
1714 return;
1715 }
1716 raise_softirq(TIMER_SOFTIRQ);
1717}
1718
1719
1720
1721
1722
1723struct process_timer {
1724 struct timer_list timer;
1725 struct task_struct *task;
1726};
1727
1728static void process_timeout(struct timer_list *t)
1729{
1730 struct process_timer *timeout = from_timer(timeout, t, timer);
1731
1732 wake_up_process(timeout->task);
1733}
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764signed long __sched schedule_timeout(signed long timeout)
1765{
1766 struct process_timer timer;
1767 unsigned long expire;
1768
1769 switch (timeout)
1770 {
1771 case MAX_SCHEDULE_TIMEOUT:
1772
1773
1774
1775
1776
1777
1778
1779 schedule();
1780 goto out;
1781 default:
1782
1783
1784
1785
1786
1787
1788
1789 if (timeout < 0) {
1790 printk(KERN_ERR "schedule_timeout: wrong timeout "
1791 "value %lx\n", timeout);
1792 dump_stack();
1793 current->state = TASK_RUNNING;
1794 goto out;
1795 }
1796 }
1797
1798 expire = timeout + jiffies;
1799
1800 timer.task = current;
1801 timer_setup_on_stack(&timer.timer, process_timeout, 0);
1802 __mod_timer(&timer.timer, expire, 0);
1803 schedule();
1804 del_singleshot_timer_sync(&timer.timer);
1805
1806
1807 destroy_timer_on_stack(&timer.timer);
1808
1809 timeout = expire - jiffies;
1810
1811 out:
1812 return timeout < 0 ? 0 : timeout;
1813}
1814EXPORT_SYMBOL(schedule_timeout);
1815
1816
1817
1818
1819
1820signed long __sched schedule_timeout_interruptible(signed long timeout)
1821{
1822 __set_current_state(TASK_INTERRUPTIBLE);
1823 return schedule_timeout(timeout);
1824}
1825EXPORT_SYMBOL(schedule_timeout_interruptible);
1826
1827signed long __sched schedule_timeout_killable(signed long timeout)
1828{
1829 __set_current_state(TASK_KILLABLE);
1830 return schedule_timeout(timeout);
1831}
1832EXPORT_SYMBOL(schedule_timeout_killable);
1833
1834signed long __sched schedule_timeout_uninterruptible(signed long timeout)
1835{
1836 __set_current_state(TASK_UNINTERRUPTIBLE);
1837 return schedule_timeout(timeout);
1838}
1839EXPORT_SYMBOL(schedule_timeout_uninterruptible);
1840
1841
1842
1843
1844
1845signed long __sched schedule_timeout_idle(signed long timeout)
1846{
1847 __set_current_state(TASK_IDLE);
1848 return schedule_timeout(timeout);
1849}
1850EXPORT_SYMBOL(schedule_timeout_idle);
1851
1852#ifdef CONFIG_HOTPLUG_CPU
1853static void migrate_timer_list(struct timer_base *new_base, struct hlist_head *head)
1854{
1855 struct timer_list *timer;
1856 int cpu = new_base->cpu;
1857
1858 while (!hlist_empty(head)) {
1859 timer = hlist_entry(head->first, struct timer_list, entry);
1860 detach_timer(timer, false);
1861 timer->flags = (timer->flags & ~TIMER_BASEMASK) | cpu;
1862 internal_add_timer(new_base, timer);
1863 }
1864}
1865
1866int timers_prepare_cpu(unsigned int cpu)
1867{
1868 struct timer_base *base;
1869 int b;
1870
1871 for (b = 0; b < NR_BASES; b++) {
1872 base = per_cpu_ptr(&timer_bases[b], cpu);
1873 base->clk = jiffies;
1874 base->next_expiry = base->clk + NEXT_TIMER_MAX_DELTA;
1875 base->is_idle = false;
1876 base->must_forward_clk = true;
1877 }
1878 return 0;
1879}
1880
1881int timers_dead_cpu(unsigned int cpu)
1882{
1883 struct timer_base *old_base;
1884 struct timer_base *new_base;
1885 int b, i;
1886
1887 BUG_ON(cpu_online(cpu));
1888
1889 for (b = 0; b < NR_BASES; b++) {
1890 old_base = per_cpu_ptr(&timer_bases[b], cpu);
1891 new_base = get_cpu_ptr(&timer_bases[b]);
1892
1893
1894
1895
1896 raw_spin_lock_irq(&new_base->lock);
1897 raw_spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING);
1898
1899
1900
1901
1902
1903 forward_timer_base(new_base);
1904
1905 BUG_ON(old_base->running_timer);
1906
1907 for (i = 0; i < WHEEL_SIZE; i++)
1908 migrate_timer_list(new_base, old_base->vectors + i);
1909
1910 raw_spin_unlock(&old_base->lock);
1911 raw_spin_unlock_irq(&new_base->lock);
1912 put_cpu_ptr(&timer_bases);
1913 }
1914 return 0;
1915}
1916
1917#endif
1918
1919static void __init init_timer_cpu(int cpu)
1920{
1921 struct timer_base *base;
1922 int i;
1923
1924 for (i = 0; i < NR_BASES; i++) {
1925 base = per_cpu_ptr(&timer_bases[i], cpu);
1926 base->cpu = cpu;
1927 raw_spin_lock_init(&base->lock);
1928 base->clk = jiffies;
1929 }
1930}
1931
1932static void __init init_timer_cpus(void)
1933{
1934 int cpu;
1935
1936 for_each_possible_cpu(cpu)
1937 init_timer_cpu(cpu);
1938}
1939
1940void __init init_timers(void)
1941{
1942 init_timer_cpus();
1943 open_softirq(TIMER_SOFTIRQ, run_timer_softirq);
1944}
1945
1946
1947
1948
1949
1950void msleep(unsigned int msecs)
1951{
1952 unsigned long timeout = msecs_to_jiffies(msecs) + 1;
1953
1954 while (timeout)
1955 timeout = schedule_timeout_uninterruptible(timeout);
1956}
1957
1958EXPORT_SYMBOL(msleep);
1959
1960
1961
1962
1963
1964unsigned long msleep_interruptible(unsigned int msecs)
1965{
1966 unsigned long timeout = msecs_to_jiffies(msecs) + 1;
1967
1968 while (timeout && !signal_pending(current))
1969 timeout = schedule_timeout_interruptible(timeout);
1970 return jiffies_to_msecs(timeout);
1971}
1972
1973EXPORT_SYMBOL(msleep_interruptible);
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986void __sched usleep_range(unsigned long min, unsigned long max)
1987{
1988 ktime_t exp = ktime_add_us(ktime_get(), min);
1989 u64 delta = (u64)(max - min) * NSEC_PER_USEC;
1990
1991 for (;;) {
1992 __set_current_state(TASK_UNINTERRUPTIBLE);
1993
1994 if (!schedule_hrtimeout_range(&exp, delta, HRTIMER_MODE_ABS))
1995 break;
1996 }
1997}
1998EXPORT_SYMBOL(usleep_range);
1999