Merge remote-tracking branch 'torvalds/master' into perf/core
[linux-2.6-microblaze.git] / kernel / time / tick-sched.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  *  Copyright(C) 2005-2006, Thomas Gleixner <tglx@linutronix.de>
4  *  Copyright(C) 2005-2007, Red Hat, Inc., Ingo Molnar
5  *  Copyright(C) 2006-2007  Timesys Corp., Thomas Gleixner
6  *
7  *  No idle tick implementation for low and high resolution timers
8  *
9  *  Started by: Thomas Gleixner and Ingo Molnar
10  */
11 #include <linux/cpu.h>
12 #include <linux/err.h>
13 #include <linux/hrtimer.h>
14 #include <linux/interrupt.h>
15 #include <linux/kernel_stat.h>
16 #include <linux/percpu.h>
17 #include <linux/nmi.h>
18 #include <linux/profile.h>
19 #include <linux/sched/signal.h>
20 #include <linux/sched/clock.h>
21 #include <linux/sched/stat.h>
22 #include <linux/sched/nohz.h>
23 #include <linux/sched/loadavg.h>
24 #include <linux/module.h>
25 #include <linux/irq_work.h>
26 #include <linux/posix-timers.h>
27 #include <linux/context_tracking.h>
28 #include <linux/mm.h>
29
30 #include <asm/irq_regs.h>
31
32 #include "tick-internal.h"
33
34 #include <trace/events/timer.h>
35
36 /*
37  * Per-CPU nohz control structure
38  */
39 static DEFINE_PER_CPU(struct tick_sched, tick_cpu_sched);
40
41 struct tick_sched *tick_get_tick_sched(int cpu)
42 {
43         return &per_cpu(tick_cpu_sched, cpu);
44 }
45
46 #if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS)
47 /*
48  * The time, when the last jiffy update happened. Write access must hold
49  * jiffies_lock and jiffies_seq. tick_nohz_next_event() needs to get a
50  * consistent view of jiffies and last_jiffies_update.
51  */
52 static ktime_t last_jiffies_update;
53
54 /*
55  * Must be called with interrupts disabled !
56  */
57 static void tick_do_update_jiffies64(ktime_t now)
58 {
59         unsigned long ticks = 1;
60         ktime_t delta, nextp;
61
62         /*
63          * 64bit can do a quick check without holding jiffies lock and
64          * without looking at the sequence count. The smp_load_acquire()
65          * pairs with the update done later in this function.
66          *
67          * 32bit cannot do that because the store of tick_next_period
68          * consists of two 32bit stores and the first store could move it
69          * to a random point in the future.
70          */
71         if (IS_ENABLED(CONFIG_64BIT)) {
72                 if (ktime_before(now, smp_load_acquire(&tick_next_period)))
73                         return;
74         } else {
75                 unsigned int seq;
76
77                 /*
78                  * Avoid contention on jiffies_lock and protect the quick
79                  * check with the sequence count.
80                  */
81                 do {
82                         seq = read_seqcount_begin(&jiffies_seq);
83                         nextp = tick_next_period;
84                 } while (read_seqcount_retry(&jiffies_seq, seq));
85
86                 if (ktime_before(now, nextp))
87                         return;
88         }
89
90         /* Quick check failed, i.e. update is required. */
91         raw_spin_lock(&jiffies_lock);
92         /*
93          * Reevaluate with the lock held. Another CPU might have done the
94          * update already.
95          */
96         if (ktime_before(now, tick_next_period)) {
97                 raw_spin_unlock(&jiffies_lock);
98                 return;
99         }
100
101         write_seqcount_begin(&jiffies_seq);
102
103         delta = ktime_sub(now, tick_next_period);
104         if (unlikely(delta >= TICK_NSEC)) {
105                 /* Slow path for long idle sleep times */
106                 s64 incr = TICK_NSEC;
107
108                 ticks += ktime_divns(delta, incr);
109
110                 last_jiffies_update = ktime_add_ns(last_jiffies_update,
111                                                    incr * ticks);
112         } else {
113                 last_jiffies_update = ktime_add_ns(last_jiffies_update,
114                                                    TICK_NSEC);
115         }
116
117         /* Advance jiffies to complete the jiffies_seq protected job */
118         jiffies_64 += ticks;
119
120         /*
121          * Keep the tick_next_period variable up to date.
122          */
123         nextp = ktime_add_ns(last_jiffies_update, TICK_NSEC);
124
125         if (IS_ENABLED(CONFIG_64BIT)) {
126                 /*
127                  * Pairs with smp_load_acquire() in the lockless quick
128                  * check above and ensures that the update to jiffies_64 is
129                  * not reordered vs. the store to tick_next_period, neither
130                  * by the compiler nor by the CPU.
131                  */
132                 smp_store_release(&tick_next_period, nextp);
133         } else {
134                 /*
135                  * A plain store is good enough on 32bit as the quick check
136                  * above is protected by the sequence count.
137                  */
138                 tick_next_period = nextp;
139         }
140
141         /*
142          * Release the sequence count. calc_global_load() below is not
143          * protected by it, but jiffies_lock needs to be held to prevent
144          * concurrent invocations.
145          */
146         write_seqcount_end(&jiffies_seq);
147
148         calc_global_load();
149
150         raw_spin_unlock(&jiffies_lock);
151         update_wall_time();
152 }
153
154 /*
155  * Initialize and return retrieve the jiffies update.
156  */
157 static ktime_t tick_init_jiffy_update(void)
158 {
159         ktime_t period;
160
161         raw_spin_lock(&jiffies_lock);
162         write_seqcount_begin(&jiffies_seq);
163         /* Did we start the jiffies update yet ? */
164         if (last_jiffies_update == 0)
165                 last_jiffies_update = tick_next_period;
166         period = last_jiffies_update;
167         write_seqcount_end(&jiffies_seq);
168         raw_spin_unlock(&jiffies_lock);
169         return period;
170 }
171
172 static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)
173 {
174         int cpu = smp_processor_id();
175
176 #ifdef CONFIG_NO_HZ_COMMON
177         /*
178          * Check if the do_timer duty was dropped. We don't care about
179          * concurrency: This happens only when the CPU in charge went
180          * into a long sleep. If two CPUs happen to assign themselves to
181          * this duty, then the jiffies update is still serialized by
182          * jiffies_lock.
183          *
184          * If nohz_full is enabled, this should not happen because the
185          * tick_do_timer_cpu never relinquishes.
186          */
187         if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_NONE)) {
188 #ifdef CONFIG_NO_HZ_FULL
189                 WARN_ON(tick_nohz_full_running);
190 #endif
191                 tick_do_timer_cpu = cpu;
192         }
193 #endif
194
195         /* Check, if the jiffies need an update */
196         if (tick_do_timer_cpu == cpu)
197                 tick_do_update_jiffies64(now);
198
199         if (ts->inidle)
200                 ts->got_idle_tick = 1;
201 }
202
203 static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs)
204 {
205 #ifdef CONFIG_NO_HZ_COMMON
206         /*
207          * When we are idle and the tick is stopped, we have to touch
208          * the watchdog as we might not schedule for a really long
209          * time. This happens on complete idle SMP systems while
210          * waiting on the login prompt. We also increment the "start of
211          * idle" jiffy stamp so the idle accounting adjustment we do
212          * when we go busy again does not account too much ticks.
213          */
214         if (ts->tick_stopped) {
215                 touch_softlockup_watchdog_sched();
216                 if (is_idle_task(current))
217                         ts->idle_jiffies++;
218                 /*
219                  * In case the current tick fired too early past its expected
220                  * expiration, make sure we don't bypass the next clock reprogramming
221                  * to the same deadline.
222                  */
223                 ts->next_tick = 0;
224         }
225 #endif
226         update_process_times(user_mode(regs));
227         profile_tick(CPU_PROFILING);
228 }
229 #endif
230
231 #ifdef CONFIG_NO_HZ_FULL
232 cpumask_var_t tick_nohz_full_mask;
233 EXPORT_SYMBOL_GPL(tick_nohz_full_mask);
234 bool tick_nohz_full_running;
235 EXPORT_SYMBOL_GPL(tick_nohz_full_running);
236 static atomic_t tick_dep_mask;
237
238 static bool check_tick_dependency(atomic_t *dep)
239 {
240         int val = atomic_read(dep);
241
242         if (val & TICK_DEP_MASK_POSIX_TIMER) {
243                 trace_tick_stop(0, TICK_DEP_MASK_POSIX_TIMER);
244                 return true;
245         }
246
247         if (val & TICK_DEP_MASK_PERF_EVENTS) {
248                 trace_tick_stop(0, TICK_DEP_MASK_PERF_EVENTS);
249                 return true;
250         }
251
252         if (val & TICK_DEP_MASK_SCHED) {
253                 trace_tick_stop(0, TICK_DEP_MASK_SCHED);
254                 return true;
255         }
256
257         if (val & TICK_DEP_MASK_CLOCK_UNSTABLE) {
258                 trace_tick_stop(0, TICK_DEP_MASK_CLOCK_UNSTABLE);
259                 return true;
260         }
261
262         if (val & TICK_DEP_MASK_RCU) {
263                 trace_tick_stop(0, TICK_DEP_MASK_RCU);
264                 return true;
265         }
266
267         return false;
268 }
269
270 static bool can_stop_full_tick(int cpu, struct tick_sched *ts)
271 {
272         lockdep_assert_irqs_disabled();
273
274         if (unlikely(!cpu_online(cpu)))
275                 return false;
276
277         if (check_tick_dependency(&tick_dep_mask))
278                 return false;
279
280         if (check_tick_dependency(&ts->tick_dep_mask))
281                 return false;
282
283         if (check_tick_dependency(&current->tick_dep_mask))
284                 return false;
285
286         if (check_tick_dependency(&current->signal->tick_dep_mask))
287                 return false;
288
289         return true;
290 }
291
292 static void nohz_full_kick_func(struct irq_work *work)
293 {
294         /* Empty, the tick restart happens on tick_nohz_irq_exit() */
295 }
296
297 static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) =
298         IRQ_WORK_INIT_HARD(nohz_full_kick_func);
299
300 /*
301  * Kick this CPU if it's full dynticks in order to force it to
302  * re-evaluate its dependency on the tick and restart it if necessary.
303  * This kick, unlike tick_nohz_full_kick_cpu() and tick_nohz_full_kick_all(),
304  * is NMI safe.
305  */
306 static void tick_nohz_full_kick(void)
307 {
308         if (!tick_nohz_full_cpu(smp_processor_id()))
309                 return;
310
311         irq_work_queue(this_cpu_ptr(&nohz_full_kick_work));
312 }
313
314 /*
315  * Kick the CPU if it's full dynticks in order to force it to
316  * re-evaluate its dependency on the tick and restart it if necessary.
317  */
318 void tick_nohz_full_kick_cpu(int cpu)
319 {
320         if (!tick_nohz_full_cpu(cpu))
321                 return;
322
323         irq_work_queue_on(&per_cpu(nohz_full_kick_work, cpu), cpu);
324 }
325
326 /*
327  * Kick all full dynticks CPUs in order to force these to re-evaluate
328  * their dependency on the tick and restart it if necessary.
329  */
330 static void tick_nohz_full_kick_all(void)
331 {
332         int cpu;
333
334         if (!tick_nohz_full_running)
335                 return;
336
337         preempt_disable();
338         for_each_cpu_and(cpu, tick_nohz_full_mask, cpu_online_mask)
339                 tick_nohz_full_kick_cpu(cpu);
340         preempt_enable();
341 }
342
343 static void tick_nohz_dep_set_all(atomic_t *dep,
344                                   enum tick_dep_bits bit)
345 {
346         int prev;
347
348         prev = atomic_fetch_or(BIT(bit), dep);
349         if (!prev)
350                 tick_nohz_full_kick_all();
351 }
352
353 /*
354  * Set a global tick dependency. Used by perf events that rely on freq and
355  * by unstable clock.
356  */
357 void tick_nohz_dep_set(enum tick_dep_bits bit)
358 {
359         tick_nohz_dep_set_all(&tick_dep_mask, bit);
360 }
361
362 void tick_nohz_dep_clear(enum tick_dep_bits bit)
363 {
364         atomic_andnot(BIT(bit), &tick_dep_mask);
365 }
366
367 /*
368  * Set per-CPU tick dependency. Used by scheduler and perf events in order to
369  * manage events throttling.
370  */
371 void tick_nohz_dep_set_cpu(int cpu, enum tick_dep_bits bit)
372 {
373         int prev;
374         struct tick_sched *ts;
375
376         ts = per_cpu_ptr(&tick_cpu_sched, cpu);
377
378         prev = atomic_fetch_or(BIT(bit), &ts->tick_dep_mask);
379         if (!prev) {
380                 preempt_disable();
381                 /* Perf needs local kick that is NMI safe */
382                 if (cpu == smp_processor_id()) {
383                         tick_nohz_full_kick();
384                 } else {
385                         /* Remote irq work not NMI-safe */
386                         if (!WARN_ON_ONCE(in_nmi()))
387                                 tick_nohz_full_kick_cpu(cpu);
388                 }
389                 preempt_enable();
390         }
391 }
392 EXPORT_SYMBOL_GPL(tick_nohz_dep_set_cpu);
393
394 void tick_nohz_dep_clear_cpu(int cpu, enum tick_dep_bits bit)
395 {
396         struct tick_sched *ts = per_cpu_ptr(&tick_cpu_sched, cpu);
397
398         atomic_andnot(BIT(bit), &ts->tick_dep_mask);
399 }
400 EXPORT_SYMBOL_GPL(tick_nohz_dep_clear_cpu);
401
402 /*
403  * Set a per-task tick dependency. RCU need this. Also posix CPU timers
404  * in order to elapse per task timers.
405  */
406 void tick_nohz_dep_set_task(struct task_struct *tsk, enum tick_dep_bits bit)
407 {
408         if (!atomic_fetch_or(BIT(bit), &tsk->tick_dep_mask)) {
409                 if (tsk == current) {
410                         preempt_disable();
411                         tick_nohz_full_kick();
412                         preempt_enable();
413                 } else {
414                         /*
415                          * Some future tick_nohz_full_kick_task()
416                          * should optimize this.
417                          */
418                         tick_nohz_full_kick_all();
419                 }
420         }
421 }
422 EXPORT_SYMBOL_GPL(tick_nohz_dep_set_task);
423
424 void tick_nohz_dep_clear_task(struct task_struct *tsk, enum tick_dep_bits bit)
425 {
426         atomic_andnot(BIT(bit), &tsk->tick_dep_mask);
427 }
428 EXPORT_SYMBOL_GPL(tick_nohz_dep_clear_task);
429
430 /*
431  * Set a per-taskgroup tick dependency. Posix CPU timers need this in order to elapse
432  * per process timers.
433  */
434 void tick_nohz_dep_set_signal(struct signal_struct *sig, enum tick_dep_bits bit)
435 {
436         tick_nohz_dep_set_all(&sig->tick_dep_mask, bit);
437 }
438
439 void tick_nohz_dep_clear_signal(struct signal_struct *sig, enum tick_dep_bits bit)
440 {
441         atomic_andnot(BIT(bit), &sig->tick_dep_mask);
442 }
443
444 /*
445  * Re-evaluate the need for the tick as we switch the current task.
446  * It might need the tick due to per task/process properties:
447  * perf events, posix CPU timers, ...
448  */
449 void __tick_nohz_task_switch(void)
450 {
451         unsigned long flags;
452         struct tick_sched *ts;
453
454         local_irq_save(flags);
455
456         if (!tick_nohz_full_cpu(smp_processor_id()))
457                 goto out;
458
459         ts = this_cpu_ptr(&tick_cpu_sched);
460
461         if (ts->tick_stopped) {
462                 if (atomic_read(&current->tick_dep_mask) ||
463                     atomic_read(&current->signal->tick_dep_mask))
464                         tick_nohz_full_kick();
465         }
466 out:
467         local_irq_restore(flags);
468 }
469
470 /* Get the boot-time nohz CPU list from the kernel parameters. */
471 void __init tick_nohz_full_setup(cpumask_var_t cpumask)
472 {
473         alloc_bootmem_cpumask_var(&tick_nohz_full_mask);
474         cpumask_copy(tick_nohz_full_mask, cpumask);
475         tick_nohz_full_running = true;
476 }
477 EXPORT_SYMBOL_GPL(tick_nohz_full_setup);
478
479 static int tick_nohz_cpu_down(unsigned int cpu)
480 {
481         /*
482          * The tick_do_timer_cpu CPU handles housekeeping duty (unbound
483          * timers, workqueues, timekeeping, ...) on behalf of full dynticks
484          * CPUs. It must remain online when nohz full is enabled.
485          */
486         if (tick_nohz_full_running && tick_do_timer_cpu == cpu)
487                 return -EBUSY;
488         return 0;
489 }
490
491 void __init tick_nohz_init(void)
492 {
493         int cpu, ret;
494
495         if (!tick_nohz_full_running)
496                 return;
497
498         /*
499          * Full dynticks uses irq work to drive the tick rescheduling on safe
500          * locking contexts. But then we need irq work to raise its own
501          * interrupts to avoid circular dependency on the tick
502          */
503         if (!arch_irq_work_has_interrupt()) {
504                 pr_warn("NO_HZ: Can't run full dynticks because arch doesn't support irq work self-IPIs\n");
505                 cpumask_clear(tick_nohz_full_mask);
506                 tick_nohz_full_running = false;
507                 return;
508         }
509
510         if (IS_ENABLED(CONFIG_PM_SLEEP_SMP) &&
511                         !IS_ENABLED(CONFIG_PM_SLEEP_SMP_NONZERO_CPU)) {
512                 cpu = smp_processor_id();
513
514                 if (cpumask_test_cpu(cpu, tick_nohz_full_mask)) {
515                         pr_warn("NO_HZ: Clearing %d from nohz_full range "
516                                 "for timekeeping\n", cpu);
517                         cpumask_clear_cpu(cpu, tick_nohz_full_mask);
518                 }
519         }
520
521         for_each_cpu(cpu, tick_nohz_full_mask)
522                 context_tracking_cpu_set(cpu);
523
524         ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
525                                         "kernel/nohz:predown", NULL,
526                                         tick_nohz_cpu_down);
527         WARN_ON(ret < 0);
528         pr_info("NO_HZ: Full dynticks CPUs: %*pbl.\n",
529                 cpumask_pr_args(tick_nohz_full_mask));
530 }
531 #endif
532
533 /*
534  * NOHZ - aka dynamic tick functionality
535  */
536 #ifdef CONFIG_NO_HZ_COMMON
537 /*
538  * NO HZ enabled ?
539  */
540 bool tick_nohz_enabled __read_mostly  = true;
541 unsigned long tick_nohz_active  __read_mostly;
542 /*
543  * Enable / Disable tickless mode
544  */
545 static int __init setup_tick_nohz(char *str)
546 {
547         return (kstrtobool(str, &tick_nohz_enabled) == 0);
548 }
549
550 __setup("nohz=", setup_tick_nohz);
551
552 bool tick_nohz_tick_stopped(void)
553 {
554         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
555
556         return ts->tick_stopped;
557 }
558
559 bool tick_nohz_tick_stopped_cpu(int cpu)
560 {
561         struct tick_sched *ts = per_cpu_ptr(&tick_cpu_sched, cpu);
562
563         return ts->tick_stopped;
564 }
565
566 /**
567  * tick_nohz_update_jiffies - update jiffies when idle was interrupted
568  *
569  * Called from interrupt entry when the CPU was idle
570  *
571  * In case the sched_tick was stopped on this CPU, we have to check if jiffies
572  * must be updated. Otherwise an interrupt handler could use a stale jiffy
573  * value. We do this unconditionally on any CPU, as we don't know whether the
574  * CPU, which has the update task assigned is in a long sleep.
575  */
576 static void tick_nohz_update_jiffies(ktime_t now)
577 {
578         unsigned long flags;
579
580         __this_cpu_write(tick_cpu_sched.idle_waketime, now);
581
582         local_irq_save(flags);
583         tick_do_update_jiffies64(now);
584         local_irq_restore(flags);
585
586         touch_softlockup_watchdog_sched();
587 }
588
589 /*
590  * Updates the per-CPU time idle statistics counters
591  */
592 static void
593 update_ts_time_stats(int cpu, struct tick_sched *ts, ktime_t now, u64 *last_update_time)
594 {
595         ktime_t delta;
596
597         if (ts->idle_active) {
598                 delta = ktime_sub(now, ts->idle_entrytime);
599                 if (nr_iowait_cpu(cpu) > 0)
600                         ts->iowait_sleeptime = ktime_add(ts->iowait_sleeptime, delta);
601                 else
602                         ts->idle_sleeptime = ktime_add(ts->idle_sleeptime, delta);
603                 ts->idle_entrytime = now;
604         }
605
606         if (last_update_time)
607                 *last_update_time = ktime_to_us(now);
608
609 }
610
611 static void tick_nohz_stop_idle(struct tick_sched *ts, ktime_t now)
612 {
613         update_ts_time_stats(smp_processor_id(), ts, now, NULL);
614         ts->idle_active = 0;
615
616         sched_clock_idle_wakeup_event();
617 }
618
619 static void tick_nohz_start_idle(struct tick_sched *ts)
620 {
621         ts->idle_entrytime = ktime_get();
622         ts->idle_active = 1;
623         sched_clock_idle_sleep_event();
624 }
625
626 /**
627  * get_cpu_idle_time_us - get the total idle time of a CPU
628  * @cpu: CPU number to query
629  * @last_update_time: variable to store update time in. Do not update
630  * counters if NULL.
631  *
632  * Return the cumulative idle time (since boot) for a given
633  * CPU, in microseconds.
634  *
635  * This time is measured via accounting rather than sampling,
636  * and is as accurate as ktime_get() is.
637  *
638  * This function returns -1 if NOHZ is not enabled.
639  */
640 u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time)
641 {
642         struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
643         ktime_t now, idle;
644
645         if (!tick_nohz_active)
646                 return -1;
647
648         now = ktime_get();
649         if (last_update_time) {
650                 update_ts_time_stats(cpu, ts, now, last_update_time);
651                 idle = ts->idle_sleeptime;
652         } else {
653                 if (ts->idle_active && !nr_iowait_cpu(cpu)) {
654                         ktime_t delta = ktime_sub(now, ts->idle_entrytime);
655
656                         idle = ktime_add(ts->idle_sleeptime, delta);
657                 } else {
658                         idle = ts->idle_sleeptime;
659                 }
660         }
661
662         return ktime_to_us(idle);
663
664 }
665 EXPORT_SYMBOL_GPL(get_cpu_idle_time_us);
666
667 /**
668  * get_cpu_iowait_time_us - get the total iowait time of a CPU
669  * @cpu: CPU number to query
670  * @last_update_time: variable to store update time in. Do not update
671  * counters if NULL.
672  *
673  * Return the cumulative iowait time (since boot) for a given
674  * CPU, in microseconds.
675  *
676  * This time is measured via accounting rather than sampling,
677  * and is as accurate as ktime_get() is.
678  *
679  * This function returns -1 if NOHZ is not enabled.
680  */
681 u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time)
682 {
683         struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
684         ktime_t now, iowait;
685
686         if (!tick_nohz_active)
687                 return -1;
688
689         now = ktime_get();
690         if (last_update_time) {
691                 update_ts_time_stats(cpu, ts, now, last_update_time);
692                 iowait = ts->iowait_sleeptime;
693         } else {
694                 if (ts->idle_active && nr_iowait_cpu(cpu) > 0) {
695                         ktime_t delta = ktime_sub(now, ts->idle_entrytime);
696
697                         iowait = ktime_add(ts->iowait_sleeptime, delta);
698                 } else {
699                         iowait = ts->iowait_sleeptime;
700                 }
701         }
702
703         return ktime_to_us(iowait);
704 }
705 EXPORT_SYMBOL_GPL(get_cpu_iowait_time_us);
706
707 static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)
708 {
709         hrtimer_cancel(&ts->sched_timer);
710         hrtimer_set_expires(&ts->sched_timer, ts->last_tick);
711
712         /* Forward the time to expire in the future */
713         hrtimer_forward(&ts->sched_timer, now, TICK_NSEC);
714
715         if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
716                 hrtimer_start_expires(&ts->sched_timer,
717                                       HRTIMER_MODE_ABS_PINNED_HARD);
718         } else {
719                 tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1);
720         }
721
722         /*
723          * Reset to make sure next tick stop doesn't get fooled by past
724          * cached clock deadline.
725          */
726         ts->next_tick = 0;
727 }
728
729 static inline bool local_timer_softirq_pending(void)
730 {
731         return local_softirq_pending() & BIT(TIMER_SOFTIRQ);
732 }
733
734 static ktime_t tick_nohz_next_event(struct tick_sched *ts, int cpu)
735 {
736         u64 basemono, next_tick, next_tmr, next_rcu, delta, expires;
737         unsigned long basejiff;
738         unsigned int seq;
739
740         /* Read jiffies and the time when jiffies were updated last */
741         do {
742                 seq = read_seqcount_begin(&jiffies_seq);
743                 basemono = last_jiffies_update;
744                 basejiff = jiffies;
745         } while (read_seqcount_retry(&jiffies_seq, seq));
746         ts->last_jiffies = basejiff;
747         ts->timer_expires_base = basemono;
748
749         /*
750          * Keep the periodic tick, when RCU, architecture or irq_work
751          * requests it.
752          * Aside of that check whether the local timer softirq is
753          * pending. If so its a bad idea to call get_next_timer_interrupt()
754          * because there is an already expired timer, so it will request
755          * immediate expiry, which rearms the hardware timer with a
756          * minimal delta which brings us back to this place
757          * immediately. Lather, rinse and repeat...
758          */
759         if (rcu_needs_cpu(basemono, &next_rcu) || arch_needs_cpu() ||
760             irq_work_needs_cpu() || local_timer_softirq_pending()) {
761                 next_tick = basemono + TICK_NSEC;
762         } else {
763                 /*
764                  * Get the next pending timer. If high resolution
765                  * timers are enabled this only takes the timer wheel
766                  * timers into account. If high resolution timers are
767                  * disabled this also looks at the next expiring
768                  * hrtimer.
769                  */
770                 next_tmr = get_next_timer_interrupt(basejiff, basemono);
771                 ts->next_timer = next_tmr;
772                 /* Take the next rcu event into account */
773                 next_tick = next_rcu < next_tmr ? next_rcu : next_tmr;
774         }
775
776         /*
777          * If the tick is due in the next period, keep it ticking or
778          * force prod the timer.
779          */
780         delta = next_tick - basemono;
781         if (delta <= (u64)TICK_NSEC) {
782                 /*
783                  * Tell the timer code that the base is not idle, i.e. undo
784                  * the effect of get_next_timer_interrupt():
785                  */
786                 timer_clear_idle();
787                 /*
788                  * We've not stopped the tick yet, and there's a timer in the
789                  * next period, so no point in stopping it either, bail.
790                  */
791                 if (!ts->tick_stopped) {
792                         ts->timer_expires = 0;
793                         goto out;
794                 }
795         }
796
797         /*
798          * If this CPU is the one which had the do_timer() duty last, we limit
799          * the sleep time to the timekeeping max_deferment value.
800          * Otherwise we can sleep as long as we want.
801          */
802         delta = timekeeping_max_deferment();
803         if (cpu != tick_do_timer_cpu &&
804             (tick_do_timer_cpu != TICK_DO_TIMER_NONE || !ts->do_timer_last))
805                 delta = KTIME_MAX;
806
807         /* Calculate the next expiry time */
808         if (delta < (KTIME_MAX - basemono))
809                 expires = basemono + delta;
810         else
811                 expires = KTIME_MAX;
812
813         ts->timer_expires = min_t(u64, expires, next_tick);
814
815 out:
816         return ts->timer_expires;
817 }
818
819 static void tick_nohz_stop_tick(struct tick_sched *ts, int cpu)
820 {
821         struct clock_event_device *dev = __this_cpu_read(tick_cpu_device.evtdev);
822         u64 basemono = ts->timer_expires_base;
823         u64 expires = ts->timer_expires;
824         ktime_t tick = expires;
825
826         /* Make sure we won't be trying to stop it twice in a row. */
827         ts->timer_expires_base = 0;
828
829         /*
830          * If this CPU is the one which updates jiffies, then give up
831          * the assignment and let it be taken by the CPU which runs
832          * the tick timer next, which might be this CPU as well. If we
833          * don't drop this here the jiffies might be stale and
834          * do_timer() never invoked. Keep track of the fact that it
835          * was the one which had the do_timer() duty last.
836          */
837         if (cpu == tick_do_timer_cpu) {
838                 tick_do_timer_cpu = TICK_DO_TIMER_NONE;
839                 ts->do_timer_last = 1;
840         } else if (tick_do_timer_cpu != TICK_DO_TIMER_NONE) {
841                 ts->do_timer_last = 0;
842         }
843
844         /* Skip reprogram of event if its not changed */
845         if (ts->tick_stopped && (expires == ts->next_tick)) {
846                 /* Sanity check: make sure clockevent is actually programmed */
847                 if (tick == KTIME_MAX || ts->next_tick == hrtimer_get_expires(&ts->sched_timer))
848                         return;
849
850                 WARN_ON_ONCE(1);
851                 printk_once("basemono: %llu ts->next_tick: %llu dev->next_event: %llu timer->active: %d timer->expires: %llu\n",
852                             basemono, ts->next_tick, dev->next_event,
853                             hrtimer_active(&ts->sched_timer), hrtimer_get_expires(&ts->sched_timer));
854         }
855
856         /*
857          * nohz_stop_sched_tick can be called several times before
858          * the nohz_restart_sched_tick is called. This happens when
859          * interrupts arrive which do not cause a reschedule. In the
860          * first call we save the current tick time, so we can restart
861          * the scheduler tick in nohz_restart_sched_tick.
862          */
863         if (!ts->tick_stopped) {
864                 calc_load_nohz_start();
865                 quiet_vmstat();
866
867                 ts->last_tick = hrtimer_get_expires(&ts->sched_timer);
868                 ts->tick_stopped = 1;
869                 trace_tick_stop(1, TICK_DEP_MASK_NONE);
870         }
871
872         ts->next_tick = tick;
873
874         /*
875          * If the expiration time == KTIME_MAX, then we simply stop
876          * the tick timer.
877          */
878         if (unlikely(expires == KTIME_MAX)) {
879                 if (ts->nohz_mode == NOHZ_MODE_HIGHRES)
880                         hrtimer_cancel(&ts->sched_timer);
881                 return;
882         }
883
884         if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
885                 hrtimer_start(&ts->sched_timer, tick,
886                               HRTIMER_MODE_ABS_PINNED_HARD);
887         } else {
888                 hrtimer_set_expires(&ts->sched_timer, tick);
889                 tick_program_event(tick, 1);
890         }
891 }
892
893 static void tick_nohz_retain_tick(struct tick_sched *ts)
894 {
895         ts->timer_expires_base = 0;
896 }
897
898 #ifdef CONFIG_NO_HZ_FULL
899 static void tick_nohz_stop_sched_tick(struct tick_sched *ts, int cpu)
900 {
901         if (tick_nohz_next_event(ts, cpu))
902                 tick_nohz_stop_tick(ts, cpu);
903         else
904                 tick_nohz_retain_tick(ts);
905 }
906 #endif /* CONFIG_NO_HZ_FULL */
907
908 static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now)
909 {
910         /* Update jiffies first */
911         tick_do_update_jiffies64(now);
912
913         /*
914          * Clear the timer idle flag, so we avoid IPIs on remote queueing and
915          * the clock forward checks in the enqueue path:
916          */
917         timer_clear_idle();
918
919         calc_load_nohz_stop();
920         touch_softlockup_watchdog_sched();
921         /*
922          * Cancel the scheduled timer and restore the tick
923          */
924         ts->tick_stopped  = 0;
925         ts->idle_exittime = now;
926
927         tick_nohz_restart(ts, now);
928 }
929
930 static void tick_nohz_full_update_tick(struct tick_sched *ts)
931 {
932 #ifdef CONFIG_NO_HZ_FULL
933         int cpu = smp_processor_id();
934
935         if (!tick_nohz_full_cpu(cpu))
936                 return;
937
938         if (!ts->tick_stopped && ts->nohz_mode == NOHZ_MODE_INACTIVE)
939                 return;
940
941         if (can_stop_full_tick(cpu, ts))
942                 tick_nohz_stop_sched_tick(ts, cpu);
943         else if (ts->tick_stopped)
944                 tick_nohz_restart_sched_tick(ts, ktime_get());
945 #endif
946 }
947
948 static bool can_stop_idle_tick(int cpu, struct tick_sched *ts)
949 {
950         /*
951          * If this CPU is offline and it is the one which updates
952          * jiffies, then give up the assignment and let it be taken by
953          * the CPU which runs the tick timer next. If we don't drop
954          * this here the jiffies might be stale and do_timer() never
955          * invoked.
956          */
957         if (unlikely(!cpu_online(cpu))) {
958                 if (cpu == tick_do_timer_cpu)
959                         tick_do_timer_cpu = TICK_DO_TIMER_NONE;
960                 /*
961                  * Make sure the CPU doesn't get fooled by obsolete tick
962                  * deadline if it comes back online later.
963                  */
964                 ts->next_tick = 0;
965                 return false;
966         }
967
968         if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE))
969                 return false;
970
971         if (need_resched())
972                 return false;
973
974         if (unlikely(local_softirq_pending())) {
975                 static int ratelimit;
976
977                 if (ratelimit < 10 && !local_bh_blocked() &&
978                     (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) {
979                         pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n",
980                                 (unsigned int) local_softirq_pending());
981                         ratelimit++;
982                 }
983                 return false;
984         }
985
986         if (tick_nohz_full_enabled()) {
987                 /*
988                  * Keep the tick alive to guarantee timekeeping progression
989                  * if there are full dynticks CPUs around
990                  */
991                 if (tick_do_timer_cpu == cpu)
992                         return false;
993
994                 /* Should not happen for nohz-full */
995                 if (WARN_ON_ONCE(tick_do_timer_cpu == TICK_DO_TIMER_NONE))
996                         return false;
997         }
998
999         return true;
1000 }
1001
1002 static void __tick_nohz_idle_stop_tick(struct tick_sched *ts)
1003 {
1004         ktime_t expires;
1005         int cpu = smp_processor_id();
1006
1007         /*
1008          * If tick_nohz_get_sleep_length() ran tick_nohz_next_event(), the
1009          * tick timer expiration time is known already.
1010          */
1011         if (ts->timer_expires_base)
1012                 expires = ts->timer_expires;
1013         else if (can_stop_idle_tick(cpu, ts))
1014                 expires = tick_nohz_next_event(ts, cpu);
1015         else
1016                 return;
1017
1018         ts->idle_calls++;
1019
1020         if (expires > 0LL) {
1021                 int was_stopped = ts->tick_stopped;
1022
1023                 tick_nohz_stop_tick(ts, cpu);
1024
1025                 ts->idle_sleeps++;
1026                 ts->idle_expires = expires;
1027
1028                 if (!was_stopped && ts->tick_stopped) {
1029                         ts->idle_jiffies = ts->last_jiffies;
1030                         nohz_balance_enter_idle(cpu);
1031                 }
1032         } else {
1033                 tick_nohz_retain_tick(ts);
1034         }
1035 }
1036
1037 /**
1038  * tick_nohz_idle_stop_tick - stop the idle tick from the idle task
1039  *
1040  * When the next event is more than a tick into the future, stop the idle tick
1041  */
1042 void tick_nohz_idle_stop_tick(void)
1043 {
1044         __tick_nohz_idle_stop_tick(this_cpu_ptr(&tick_cpu_sched));
1045 }
1046
1047 void tick_nohz_idle_retain_tick(void)
1048 {
1049         tick_nohz_retain_tick(this_cpu_ptr(&tick_cpu_sched));
1050         /*
1051          * Undo the effect of get_next_timer_interrupt() called from
1052          * tick_nohz_next_event().
1053          */
1054         timer_clear_idle();
1055 }
1056
1057 /**
1058  * tick_nohz_idle_enter - prepare for entering idle on the current CPU
1059  *
1060  * Called when we start the idle loop.
1061  */
1062 void tick_nohz_idle_enter(void)
1063 {
1064         struct tick_sched *ts;
1065
1066         lockdep_assert_irqs_enabled();
1067
1068         local_irq_disable();
1069
1070         ts = this_cpu_ptr(&tick_cpu_sched);
1071
1072         WARN_ON_ONCE(ts->timer_expires_base);
1073
1074         ts->inidle = 1;
1075         tick_nohz_start_idle(ts);
1076
1077         local_irq_enable();
1078 }
1079
1080 /**
1081  * tick_nohz_irq_exit - update next tick event from interrupt exit
1082  *
1083  * When an interrupt fires while we are idle and it doesn't cause
1084  * a reschedule, it may still add, modify or delete a timer, enqueue
1085  * an RCU callback, etc...
1086  * So we need to re-calculate and reprogram the next tick event.
1087  */
1088 void tick_nohz_irq_exit(void)
1089 {
1090         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1091
1092         if (ts->inidle)
1093                 tick_nohz_start_idle(ts);
1094         else
1095                 tick_nohz_full_update_tick(ts);
1096 }
1097
1098 /**
1099  * tick_nohz_idle_got_tick - Check whether or not the tick handler has run
1100  */
1101 bool tick_nohz_idle_got_tick(void)
1102 {
1103         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1104
1105         if (ts->got_idle_tick) {
1106                 ts->got_idle_tick = 0;
1107                 return true;
1108         }
1109         return false;
1110 }
1111
1112 /**
1113  * tick_nohz_get_next_hrtimer - return the next expiration time for the hrtimer
1114  * or the tick, whatever that expires first. Note that, if the tick has been
1115  * stopped, it returns the next hrtimer.
1116  *
1117  * Called from power state control code with interrupts disabled
1118  */
1119 ktime_t tick_nohz_get_next_hrtimer(void)
1120 {
1121         return __this_cpu_read(tick_cpu_device.evtdev)->next_event;
1122 }
1123
1124 /**
1125  * tick_nohz_get_sleep_length - return the expected length of the current sleep
1126  * @delta_next: duration until the next event if the tick cannot be stopped
1127  *
1128  * Called from power state control code with interrupts disabled.
1129  *
1130  * The return value of this function and/or the value returned by it through the
1131  * @delta_next pointer can be negative which must be taken into account by its
1132  * callers.
1133  */
1134 ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next)
1135 {
1136         struct clock_event_device *dev = __this_cpu_read(tick_cpu_device.evtdev);
1137         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1138         int cpu = smp_processor_id();
1139         /*
1140          * The idle entry time is expected to be a sufficient approximation of
1141          * the current time at this point.
1142          */
1143         ktime_t now = ts->idle_entrytime;
1144         ktime_t next_event;
1145
1146         WARN_ON_ONCE(!ts->inidle);
1147
1148         *delta_next = ktime_sub(dev->next_event, now);
1149
1150         if (!can_stop_idle_tick(cpu, ts))
1151                 return *delta_next;
1152
1153         next_event = tick_nohz_next_event(ts, cpu);
1154         if (!next_event)
1155                 return *delta_next;
1156
1157         /*
1158          * If the next highres timer to expire is earlier than next_event, the
1159          * idle governor needs to know that.
1160          */
1161         next_event = min_t(u64, next_event,
1162                            hrtimer_next_event_without(&ts->sched_timer));
1163
1164         return ktime_sub(next_event, now);
1165 }
1166
1167 /**
1168  * tick_nohz_get_idle_calls_cpu - return the current idle calls counter value
1169  * for a particular CPU.
1170  *
1171  * Called from the schedutil frequency scaling governor in scheduler context.
1172  */
1173 unsigned long tick_nohz_get_idle_calls_cpu(int cpu)
1174 {
1175         struct tick_sched *ts = tick_get_tick_sched(cpu);
1176
1177         return ts->idle_calls;
1178 }
1179
1180 /**
1181  * tick_nohz_get_idle_calls - return the current idle calls counter value
1182  *
1183  * Called from the schedutil frequency scaling governor in scheduler context.
1184  */
1185 unsigned long tick_nohz_get_idle_calls(void)
1186 {
1187         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1188
1189         return ts->idle_calls;
1190 }
1191
1192 static void tick_nohz_account_idle_ticks(struct tick_sched *ts)
1193 {
1194 #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
1195         unsigned long ticks;
1196
1197         if (vtime_accounting_enabled_this_cpu())
1198                 return;
1199         /*
1200          * We stopped the tick in idle. Update process times would miss the
1201          * time we slept as update_process_times does only a 1 tick
1202          * accounting. Enforce that this is accounted to idle !
1203          */
1204         ticks = jiffies - ts->idle_jiffies;
1205         /*
1206          * We might be one off. Do not randomly account a huge number of ticks!
1207          */
1208         if (ticks && ticks < LONG_MAX)
1209                 account_idle_ticks(ticks);
1210 #endif
1211 }
1212
1213 static void __tick_nohz_idle_restart_tick(struct tick_sched *ts, ktime_t now)
1214 {
1215         tick_nohz_restart_sched_tick(ts, now);
1216         tick_nohz_account_idle_ticks(ts);
1217 }
1218
1219 void tick_nohz_idle_restart_tick(void)
1220 {
1221         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1222
1223         if (ts->tick_stopped)
1224                 __tick_nohz_idle_restart_tick(ts, ktime_get());
1225 }
1226
1227 /**
1228  * tick_nohz_idle_exit - restart the idle tick from the idle task
1229  *
1230  * Restart the idle tick when the CPU is woken up from idle
1231  * This also exit the RCU extended quiescent state. The CPU
1232  * can use RCU again after this function is called.
1233  */
1234 void tick_nohz_idle_exit(void)
1235 {
1236         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1237         bool idle_active, tick_stopped;
1238         ktime_t now;
1239
1240         local_irq_disable();
1241
1242         WARN_ON_ONCE(!ts->inidle);
1243         WARN_ON_ONCE(ts->timer_expires_base);
1244
1245         ts->inidle = 0;
1246         idle_active = ts->idle_active;
1247         tick_stopped = ts->tick_stopped;
1248
1249         if (idle_active || tick_stopped)
1250                 now = ktime_get();
1251
1252         if (idle_active)
1253                 tick_nohz_stop_idle(ts, now);
1254
1255         if (tick_stopped)
1256                 __tick_nohz_idle_restart_tick(ts, now);
1257
1258         local_irq_enable();
1259 }
1260
1261 /*
1262  * The nohz low res interrupt handler
1263  */
1264 static void tick_nohz_handler(struct clock_event_device *dev)
1265 {
1266         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1267         struct pt_regs *regs = get_irq_regs();
1268         ktime_t now = ktime_get();
1269
1270         dev->next_event = KTIME_MAX;
1271
1272         tick_sched_do_timer(ts, now);
1273         tick_sched_handle(ts, regs);
1274
1275         /* No need to reprogram if we are running tickless  */
1276         if (unlikely(ts->tick_stopped))
1277                 return;
1278
1279         hrtimer_forward(&ts->sched_timer, now, TICK_NSEC);
1280         tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1);
1281 }
1282
1283 static inline void tick_nohz_activate(struct tick_sched *ts, int mode)
1284 {
1285         if (!tick_nohz_enabled)
1286                 return;
1287         ts->nohz_mode = mode;
1288         /* One update is enough */
1289         if (!test_and_set_bit(0, &tick_nohz_active))
1290                 timers_update_nohz();
1291 }
1292
1293 /**
1294  * tick_nohz_switch_to_nohz - switch to nohz mode
1295  */
1296 static void tick_nohz_switch_to_nohz(void)
1297 {
1298         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1299         ktime_t next;
1300
1301         if (!tick_nohz_enabled)
1302                 return;
1303
1304         if (tick_switch_to_oneshot(tick_nohz_handler))
1305                 return;
1306
1307         /*
1308          * Recycle the hrtimer in ts, so we can share the
1309          * hrtimer_forward with the highres code.
1310          */
1311         hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
1312         /* Get the next period */
1313         next = tick_init_jiffy_update();
1314
1315         hrtimer_set_expires(&ts->sched_timer, next);
1316         hrtimer_forward_now(&ts->sched_timer, TICK_NSEC);
1317         tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1);
1318         tick_nohz_activate(ts, NOHZ_MODE_LOWRES);
1319 }
1320
1321 static inline void tick_nohz_irq_enter(void)
1322 {
1323         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1324         ktime_t now;
1325
1326         if (!ts->idle_active && !ts->tick_stopped)
1327                 return;
1328         now = ktime_get();
1329         if (ts->idle_active)
1330                 tick_nohz_stop_idle(ts, now);
1331         if (ts->tick_stopped)
1332                 tick_nohz_update_jiffies(now);
1333 }
1334
1335 #else
1336
1337 static inline void tick_nohz_switch_to_nohz(void) { }
1338 static inline void tick_nohz_irq_enter(void) { }
1339 static inline void tick_nohz_activate(struct tick_sched *ts, int mode) { }
1340
1341 #endif /* CONFIG_NO_HZ_COMMON */
1342
1343 /*
1344  * Called from irq_enter to notify about the possible interruption of idle()
1345  */
1346 void tick_irq_enter(void)
1347 {
1348         tick_check_oneshot_broadcast_this_cpu();
1349         tick_nohz_irq_enter();
1350 }
1351
1352 /*
1353  * High resolution timer specific code
1354  */
1355 #ifdef CONFIG_HIGH_RES_TIMERS
1356 /*
1357  * We rearm the timer until we get disabled by the idle code.
1358  * Called with interrupts disabled.
1359  */
1360 static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
1361 {
1362         struct tick_sched *ts =
1363                 container_of(timer, struct tick_sched, sched_timer);
1364         struct pt_regs *regs = get_irq_regs();
1365         ktime_t now = ktime_get();
1366
1367         tick_sched_do_timer(ts, now);
1368
1369         /*
1370          * Do not call, when we are not in irq context and have
1371          * no valid regs pointer
1372          */
1373         if (regs)
1374                 tick_sched_handle(ts, regs);
1375         else
1376                 ts->next_tick = 0;
1377
1378         /* No need to reprogram if we are in idle or full dynticks mode */
1379         if (unlikely(ts->tick_stopped))
1380                 return HRTIMER_NORESTART;
1381
1382         hrtimer_forward(timer, now, TICK_NSEC);
1383
1384         return HRTIMER_RESTART;
1385 }
1386
1387 static int sched_skew_tick;
1388
1389 static int __init skew_tick(char *str)
1390 {
1391         get_option(&str, &sched_skew_tick);
1392
1393         return 0;
1394 }
1395 early_param("skew_tick", skew_tick);
1396
1397 /**
1398  * tick_setup_sched_timer - setup the tick emulation timer
1399  */
1400 void tick_setup_sched_timer(void)
1401 {
1402         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1403         ktime_t now = ktime_get();
1404
1405         /*
1406          * Emulate tick processing via per-CPU hrtimers:
1407          */
1408         hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
1409         ts->sched_timer.function = tick_sched_timer;
1410
1411         /* Get the next period (per-CPU) */
1412         hrtimer_set_expires(&ts->sched_timer, tick_init_jiffy_update());
1413
1414         /* Offset the tick to avert jiffies_lock contention. */
1415         if (sched_skew_tick) {
1416                 u64 offset = TICK_NSEC >> 1;
1417                 do_div(offset, num_possible_cpus());
1418                 offset *= smp_processor_id();
1419                 hrtimer_add_expires_ns(&ts->sched_timer, offset);
1420         }
1421
1422         hrtimer_forward(&ts->sched_timer, now, TICK_NSEC);
1423         hrtimer_start_expires(&ts->sched_timer, HRTIMER_MODE_ABS_PINNED_HARD);
1424         tick_nohz_activate(ts, NOHZ_MODE_HIGHRES);
1425 }
1426 #endif /* HIGH_RES_TIMERS */
1427
1428 #if defined CONFIG_NO_HZ_COMMON || defined CONFIG_HIGH_RES_TIMERS
1429 void tick_cancel_sched_timer(int cpu)
1430 {
1431         struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
1432
1433 # ifdef CONFIG_HIGH_RES_TIMERS
1434         if (ts->sched_timer.base)
1435                 hrtimer_cancel(&ts->sched_timer);
1436 # endif
1437
1438         memset(ts, 0, sizeof(*ts));
1439 }
1440 #endif
1441
1442 /**
1443  * Async notification about clocksource changes
1444  */
1445 void tick_clock_notify(void)
1446 {
1447         int cpu;
1448
1449         for_each_possible_cpu(cpu)
1450                 set_bit(0, &per_cpu(tick_cpu_sched, cpu).check_clocks);
1451 }
1452
1453 /*
1454  * Async notification about clock event changes
1455  */
1456 void tick_oneshot_notify(void)
1457 {
1458         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1459
1460         set_bit(0, &ts->check_clocks);
1461 }
1462
1463 /**
1464  * Check, if a change happened, which makes oneshot possible.
1465  *
1466  * Called cyclic from the hrtimer softirq (driven by the timer
1467  * softirq) allow_nohz signals, that we can switch into low-res nohz
1468  * mode, because high resolution timers are disabled (either compile
1469  * or runtime). Called with interrupts disabled.
1470  */
1471 int tick_check_oneshot_change(int allow_nohz)
1472 {
1473         struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
1474
1475         if (!test_and_clear_bit(0, &ts->check_clocks))
1476                 return 0;
1477
1478         if (ts->nohz_mode != NOHZ_MODE_INACTIVE)
1479                 return 0;
1480
1481         if (!timekeeping_valid_for_hres() || !tick_is_oneshot_available())
1482                 return 0;
1483
1484         if (!allow_nohz)
1485                 return 1;
1486
1487         tick_nohz_switch_to_nohz();
1488         return 0;
1489 }