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