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