File Index
Files and directories
Sign in
FILE

timer.c

File preview with syntax highlighting.

linux-6.19.14/kernel/time/timer.c C
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 *  Kernel internal timers
   4 *
   5 *  Copyright (C) 1991, 1992  Linus Torvalds
   6 *
   7 *  1997-01-28  Modified by Finn Arne Gangstad to make timers scale better.
   8 *
   9 *  1997-09-10  Updated NTP code according to technical memorandum Jan '96
  10 *              "A Kernel Model for Precision Timekeeping" by Dave Mills
  11 *  1998-12-24  Fixed a xtime SMP race (we need the xtime_lock rw spinlock to
  12 *              serialize accesses to xtime/lost_ticks).
  13 *                              Copyright (C) 1998  Andrea Arcangeli
  14 *  1999-03-10  Improved NTP compatibility by Ulrich Windl
  15 *  2002-05-31	Move sys_sysinfo here and make its locking sane, Robert Love
  16 *  2000-10-05  Implemented scalable SMP per-CPU timer handling.
  17 *                              Copyright (C) 2000, 2001, 2002  Ingo Molnar
  18 *              Designed by David S. Miller, Alexey Kuznetsov and Ingo Molnar
  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/sysctl.h>
  41#include <linux/sched/nohz.h>
  42#include <linux/sched/debug.h>
  43#include <linux/slab.h>
  44#include <linux/compat.h>
  45#include <linux/random.h>
  46#include <linux/sysctl.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#include "timer_migration.h"
  56
  57#define CREATE_TRACE_POINTS
  58#include <trace/events/timer.h>
  59
  60__visible u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
  61
  62EXPORT_SYMBOL(jiffies_64);
  63
  64/*
  65 * The timer wheel has LVL_DEPTH array levels. Each level provides an array of
  66 * LVL_SIZE buckets. Each level is driven by its own clock and therefore each
  67 * level has a different granularity.
  68 *
  69 * The level granularity is:		LVL_CLK_DIV ^ level
  70 * The level clock frequency is:	HZ / (LVL_CLK_DIV ^ level)
  71 *
  72 * The array level of a newly armed timer depends on the relative expiry
  73 * time. The farther the expiry time is away the higher the array level and
  74 * therefore the granularity becomes.
  75 *
  76 * Contrary to the original timer wheel implementation, which aims for 'exact'
  77 * expiry of the timers, this implementation removes the need for recascading
  78 * the timers into the lower array levels. The previous 'classic' timer wheel
  79 * implementation of the kernel already violated the 'exact' expiry by adding
  80 * slack to the expiry time to provide batched expiration. The granularity
  81 * levels provide implicit batching.
  82 *
  83 * This is an optimization of the original timer wheel implementation for the
  84 * majority of the timer wheel use cases: timeouts. The vast majority of
  85 * timeout timers (networking, disk I/O ...) are canceled before expiry. If
  86 * the timeout expires it indicates that normal operation is disturbed, so it
  87 * does not matter much whether the timeout comes with a slight delay.
  88 *
  89 * The only exception to this are networking timers with a small expiry
  90 * time. They rely on the granularity. Those fit into the first wheel level,
  91 * which has HZ granularity.
  92 *
  93 * We don't have cascading anymore. timers with a expiry time above the
  94 * capacity of the last wheel level are force expired at the maximum timeout
  95 * value of the last wheel level. From data sampling we know that the maximum
  96 * value observed is 5 days (network connection tracking), so this should not
  97 * be an issue.
  98 *
  99 * The currently chosen array constants values are a good compromise between
 100 * array size and granularity.
 101 *
 102 * This results in the following granularity and range levels:
 103 *
 104 * HZ 1000 steps
 105 * Level Offset  Granularity            Range
 106 *  0      0         1 ms                0 ms -         63 ms
 107 *  1     64         8 ms               64 ms -        511 ms
 108 *  2    128        64 ms              512 ms -       4095 ms (512ms - ~4s)
 109 *  3    192       512 ms             4096 ms -      32767 ms (~4s - ~32s)
 110 *  4    256      4096 ms (~4s)      32768 ms -     262143 ms (~32s - ~4m)
 111 *  5    320     32768 ms (~32s)    262144 ms -    2097151 ms (~4m - ~34m)
 112 *  6    384    262144 ms (~4m)    2097152 ms -   16777215 ms (~34m - ~4h)
 113 *  7    448   2097152 ms (~34m)  16777216 ms -  134217727 ms (~4h - ~1d)
 114 *  8    512  16777216 ms (~4h)  134217728 ms - 1073741822 ms (~1d - ~12d)
 115 *
 116 * HZ  300
 117 * Level Offset  Granularity            Range
 118 *  0	   0         3 ms                0 ms -        210 ms
 119 *  1	  64        26 ms              213 ms -       1703 ms (213ms - ~1s)
 120 *  2	 128       213 ms             1706 ms -      13650 ms (~1s - ~13s)
 121 *  3	 192      1706 ms (~1s)      13653 ms -     109223 ms (~13s - ~1m)
 122 *  4	 256     13653 ms (~13s)    109226 ms -     873810 ms (~1m - ~14m)
 123 *  5	 320    109226 ms (~1m)     873813 ms -    6990503 ms (~14m - ~1h)
 124 *  6	 384    873813 ms (~14m)   6990506 ms -   55924050 ms (~1h - ~15h)
 125 *  7	 448   6990506 ms (~1h)   55924053 ms -  447392423 ms (~15h - ~5d)
 126 *  8    512  55924053 ms (~15h) 447392426 ms - 3579139406 ms (~5d - ~41d)
 127 *
 128 * HZ  250
 129 * Level Offset  Granularity            Range
 130 *  0	   0         4 ms                0 ms -        255 ms
 131 *  1	  64        32 ms              256 ms -       2047 ms (256ms - ~2s)
 132 *  2	 128       256 ms             2048 ms -      16383 ms (~2s - ~16s)
 133 *  3	 192      2048 ms (~2s)      16384 ms -     131071 ms (~16s - ~2m)
 134 *  4	 256     16384 ms (~16s)    131072 ms -    1048575 ms (~2m - ~17m)
 135 *  5	 320    131072 ms (~2m)    1048576 ms -    8388607 ms (~17m - ~2h)
 136 *  6	 384   1048576 ms (~17m)   8388608 ms -   67108863 ms (~2h - ~18h)
 137 *  7	 448   8388608 ms (~2h)   67108864 ms -  536870911 ms (~18h - ~6d)
 138 *  8    512  67108864 ms (~18h) 536870912 ms - 4294967288 ms (~6d - ~49d)
 139 *
 140 * HZ  100
 141 * Level Offset  Granularity            Range
 142 *  0	   0         10 ms               0 ms -        630 ms
 143 *  1	  64         80 ms             640 ms -       5110 ms (640ms - ~5s)
 144 *  2	 128        640 ms            5120 ms -      40950 ms (~5s - ~40s)
 145 *  3	 192       5120 ms (~5s)     40960 ms -     327670 ms (~40s - ~5m)
 146 *  4	 256      40960 ms (~40s)   327680 ms -    2621430 ms (~5m - ~43m)
 147 *  5	 320     327680 ms (~5m)   2621440 ms -   20971510 ms (~43m - ~5h)
 148 *  6	 384    2621440 ms (~43m) 20971520 ms -  167772150 ms (~5h - ~1d)
 149 *  7	 448   20971520 ms (~5h) 167772160 ms - 1342177270 ms (~1d - ~15d)
 150 */
 151
 152/* Clock divisor for the next level */
 153#define LVL_CLK_SHIFT	3
 154#define LVL_CLK_DIV	(1UL << LVL_CLK_SHIFT)
 155#define LVL_CLK_MASK	(LVL_CLK_DIV - 1)
 156#define LVL_SHIFT(n)	((n) * LVL_CLK_SHIFT)
 157#define LVL_GRAN(n)	(1UL << LVL_SHIFT(n))
 158
 159/*
 160 * The time start value for each level to select the bucket at enqueue
 161 * time. We start from the last possible delta of the previous level
 162 * so that we can later add an extra LVL_GRAN(n) to n (see calc_index()).
 163 */
 164#define LVL_START(n)	((LVL_SIZE - 1) << (((n) - 1) * LVL_CLK_SHIFT))
 165
 166/* Size of each clock level */
 167#define LVL_BITS	6
 168#define LVL_SIZE	(1UL << LVL_BITS)
 169#define LVL_MASK	(LVL_SIZE - 1)
 170#define LVL_OFFS(n)	((n) * LVL_SIZE)
 171
 172/* Level depth */
 173#if HZ > 100
 174# define LVL_DEPTH	9
 175# else
 176# define LVL_DEPTH	8
 177#endif
 178
 179/* The cutoff (max. capacity of the wheel) */
 180#define WHEEL_TIMEOUT_CUTOFF	(LVL_START(LVL_DEPTH))
 181#define WHEEL_TIMEOUT_MAX	(WHEEL_TIMEOUT_CUTOFF - LVL_GRAN(LVL_DEPTH - 1))
 182
 183/*
 184 * The resulting wheel size. If NOHZ is configured we allocate two
 185 * wheels so we have a separate storage for the deferrable timers.
 186 */
 187#define WHEEL_SIZE	(LVL_SIZE * LVL_DEPTH)
 188
 189#ifdef CONFIG_NO_HZ_COMMON
 190/*
 191 * If multiple bases need to be locked, use the base ordering for lock
 192 * nesting, i.e. lowest number first.
 193 */
 194# define NR_BASES	3
 195# define BASE_LOCAL	0
 196# define BASE_GLOBAL	1
 197# define BASE_DEF	2
 198#else
 199# define NR_BASES	1
 200# define BASE_LOCAL	0
 201# define BASE_GLOBAL	0
 202# define BASE_DEF	0
 203#endif
 204
 205/**
 206 * struct timer_base - Per CPU timer base (number of base depends on config)
 207 * @lock:		Lock protecting the timer_base
 208 * @running_timer:	When expiring timers, the lock is dropped. To make
 209 *			sure not to race against deleting/modifying a
 210 *			currently running timer, the pointer is set to the
 211 *			timer, which expires at the moment. If no timer is
 212 *			running, the pointer is NULL.
 213 * @expiry_lock:	PREEMPT_RT only: Lock is taken in softirq around
 214 *			timer expiry callback execution and when trying to
 215 *			delete a running timer and it wasn't successful in
 216 *			the first glance. It prevents priority inversion
 217 *			when callback was preempted on a remote CPU and a
 218 *			caller tries to delete the running timer. It also
 219 *			prevents a life lock, when the task which tries to
 220 *			delete a timer preempted the softirq thread which
 221 *			is running the timer callback function.
 222 * @timer_waiters:	PREEMPT_RT only: Tells, if there is a waiter
 223 *			waiting for the end of the timer callback function
 224 *			execution.
 225 * @clk:		clock of the timer base; is updated before enqueue
 226 *			of a timer; during expiry, it is 1 offset ahead of
 227 *			jiffies to avoid endless requeuing to current
 228 *			jiffies
 229 * @next_expiry:	expiry value of the first timer; it is updated when
 230 *			finding the next timer and during enqueue; the
 231 *			value is not valid, when next_expiry_recalc is set
 232 * @cpu:		Number of CPU the timer base belongs to
 233 * @next_expiry_recalc: States, whether a recalculation of next_expiry is
 234 *			required. Value is set true, when a timer was
 235 *			deleted.
 236 * @is_idle:		Is set, when timer_base is idle. It is triggered by NOHZ
 237 *			code. This state is only used in standard
 238 *			base. Deferrable timers, which are enqueued remotely
 239 *			never wake up an idle CPU. So no matter of supporting it
 240 *			for this base.
 241 * @timers_pending:	Is set, when a timer is pending in the base. It is only
 242 *			reliable when next_expiry_recalc is not set.
 243 * @pending_map:	bitmap of the timer wheel; each bit reflects a
 244 *			bucket of the wheel. When a bit is set, at least a
 245 *			single timer is enqueued in the related bucket.
 246 * @vectors:		Array of lists; Each array member reflects a bucket
 247 *			of the timer wheel. The list contains all timers
 248 *			which are enqueued into a specific bucket.
 249 */
 250struct timer_base {
 251	raw_spinlock_t		lock;
 252	struct timer_list	*running_timer;
 253#ifdef CONFIG_PREEMPT_RT
 254	spinlock_t		expiry_lock;
 255	atomic_t		timer_waiters;
 256#endif
 257	unsigned long		clk;
 258	unsigned long		next_expiry;
 259	unsigned int		cpu;
 260	bool			next_expiry_recalc;
 261	bool			is_idle;
 262	bool			timers_pending;
 263	DECLARE_BITMAP(pending_map, WHEEL_SIZE);
 264	struct hlist_head	vectors[WHEEL_SIZE];
 265} ____cacheline_aligned;
 266
 267static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]);
 268
 269#ifdef CONFIG_NO_HZ_COMMON
 270
 271static DEFINE_STATIC_KEY_FALSE(timers_nohz_active);
 272static DEFINE_MUTEX(timer_keys_mutex);
 273
 274static void timer_update_keys(struct work_struct *work);
 275static DECLARE_WORK(timer_update_work, timer_update_keys);
 276
 277#ifdef CONFIG_SMP
 278static unsigned int sysctl_timer_migration = 1;
 279
 280DEFINE_STATIC_KEY_FALSE(timers_migration_enabled);
 281
 282static void timers_update_migration(void)
 283{
 284	if (sysctl_timer_migration && tick_nohz_active)
 285		static_branch_enable(&timers_migration_enabled);
 286	else
 287		static_branch_disable(&timers_migration_enabled);
 288}
 289
 290#ifdef CONFIG_SYSCTL
 291static int timer_migration_handler(const struct ctl_table *table, int write,
 292			    void *buffer, size_t *lenp, loff_t *ppos)
 293{
 294	int ret;
 295
 296	mutex_lock(&timer_keys_mutex);
 297	ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
 298	if (!ret && write)
 299		timers_update_migration();
 300	mutex_unlock(&timer_keys_mutex);
 301	return ret;
 302}
 303
 304static const struct ctl_table timer_sysctl[] = {
 305	{
 306		.procname	= "timer_migration",
 307		.data		= &sysctl_timer_migration,
 308		.maxlen		= sizeof(unsigned int),
 309		.mode		= 0644,
 310		.proc_handler	= timer_migration_handler,
 311		.extra1		= SYSCTL_ZERO,
 312		.extra2		= SYSCTL_ONE,
 313	},
 314};
 315
 316static int __init timer_sysctl_init(void)
 317{
 318	register_sysctl("kernel", timer_sysctl);
 319	return 0;
 320}
 321device_initcall(timer_sysctl_init);
 322#endif /* CONFIG_SYSCTL */
 323#else /* CONFIG_SMP */
 324static inline void timers_update_migration(void) { }
 325#endif /* !CONFIG_SMP */
 326
 327static void timer_update_keys(struct work_struct *work)
 328{
 329	mutex_lock(&timer_keys_mutex);
 330	timers_update_migration();
 331	static_branch_enable(&timers_nohz_active);
 332	mutex_unlock(&timer_keys_mutex);
 333}
 334
 335void timers_update_nohz(void)
 336{
 337	schedule_work(&timer_update_work);
 338}
 339
 340static inline bool is_timers_nohz_active(void)
 341{
 342	return static_branch_unlikely(&timers_nohz_active);
 343}
 344#else
 345static inline bool is_timers_nohz_active(void) { return false; }
 346#endif /* NO_HZ_COMMON */
 347
 348static unsigned long round_jiffies_common(unsigned long j, int cpu,
 349		bool force_up)
 350{
 351	int rem;
 352	unsigned long original = j;
 353
 354	/*
 355	 * We don't want all cpus firing their timers at once hitting the
 356	 * same lock or cachelines, so we skew each extra cpu with an extra
 357	 * 3 jiffies. This 3 jiffies came originally from the mm/ code which
 358	 * already did this.
 359	 * The skew is done by adding 3*cpunr, then round, then subtract this
 360	 * extra offset again.
 361	 */
 362	j += cpu * 3;
 363
 364	rem = j % HZ;
 365
 366	/*
 367	 * If the target jiffy is just after a whole second (which can happen
 368	 * due to delays of the timer irq, long irq off times etc etc) then
 369	 * we should round down to the whole second, not up. Use 1/4th second
 370	 * as cutoff for this rounding as an extreme upper bound for this.
 371	 * But never round down if @force_up is set.
 372	 */
 373	if (rem < HZ/4 && !force_up) /* round down */
 374		j = j - rem;
 375	else /* round up */
 376		j = j - rem + HZ;
 377
 378	/* now that we have rounded, subtract the extra skew again */
 379	j -= cpu * 3;
 380
 381	/*
 382	 * Make sure j is still in the future. Otherwise return the
 383	 * unmodified value.
 384	 */
 385	return time_is_after_jiffies(j) ? j : original;
 386}
 387
 388/**
 389 * __round_jiffies_relative - function to round jiffies to a full second
 390 * @j: the time in (relative) jiffies that should be rounded
 391 * @cpu: the processor number on which the timeout will happen
 392 *
 393 * __round_jiffies_relative() rounds a time delta  in the future (in jiffies)
 394 * up or down to (approximately) full seconds. This is useful for timers
 395 * for which the exact time they fire does not matter too much, as long as
 396 * they fire approximately every X seconds.
 397 *
 398 * By rounding these timers to whole seconds, all such timers will fire
 399 * at the same time, rather than at various times spread out. The goal
 400 * of this is to have the CPU wake up less, which saves power.
 401 *
 402 * The exact rounding is skewed for each processor to avoid all
 403 * processors firing at the exact same time, which could lead
 404 * to lock contention or spurious cache line bouncing.
 405 *
 406 * The return value is the rounded version of the @j parameter.
 407 */
 408unsigned long __round_jiffies_relative(unsigned long j, int cpu)
 409{
 410	unsigned long j0 = jiffies;
 411
 412	/* Use j0 because jiffies might change while we run */
 413	return round_jiffies_common(j + j0, cpu, false) - j0;
 414}
 415EXPORT_SYMBOL_GPL(__round_jiffies_relative);
 416
 417/**
 418 * round_jiffies - function to round jiffies to a full second
 419 * @j: the time in (absolute) jiffies that should be rounded
 420 *
 421 * round_jiffies() rounds an absolute time in the future (in jiffies)
 422 * up or down to (approximately) full seconds. This is useful for timers
 423 * for which the exact time they fire does not matter too much, as long as
 424 * they fire approximately every X seconds.
 425 *
 426 * By rounding these timers to whole seconds, all such timers will fire
 427 * at the same time, rather than at various times spread out. The goal
 428 * of this is to have the CPU wake up less, which saves power.
 429 *
 430 * The return value is the rounded version of the @j parameter.
 431 */
 432unsigned long round_jiffies(unsigned long j)
 433{
 434	return round_jiffies_common(j, raw_smp_processor_id(), false);
 435}
 436EXPORT_SYMBOL_GPL(round_jiffies);
 437
 438/**
 439 * round_jiffies_relative - function to round jiffies to a full second
 440 * @j: the time in (relative) jiffies that should be rounded
 441 *
 442 * round_jiffies_relative() rounds a time delta  in the future (in jiffies)
 443 * up or down to (approximately) full seconds. This is useful for timers
 444 * for which the exact time they fire does not matter too much, as long as
 445 * they fire approximately every X seconds.
 446 *
 447 * By rounding these timers to whole seconds, all such timers will fire
 448 * at the same time, rather than at various times spread out. The goal
 449 * of this is to have the CPU wake up less, which saves power.
 450 *
 451 * The return value is the rounded version of the @j parameter.
 452 */
 453unsigned long round_jiffies_relative(unsigned long j)
 454{
 455	return __round_jiffies_relative(j, raw_smp_processor_id());
 456}
 457EXPORT_SYMBOL_GPL(round_jiffies_relative);
 458
 459/**
 460 * __round_jiffies_up_relative - function to round jiffies up to a full second
 461 * @j: the time in (relative) jiffies that should be rounded
 462 * @cpu: the processor number on which the timeout will happen
 463 *
 464 * This is the same as __round_jiffies_relative() except that it will never
 465 * round down.  This is useful for timeouts for which the exact time
 466 * of firing does not matter too much, as long as they don't fire too
 467 * early.
 468 */
 469unsigned long __round_jiffies_up_relative(unsigned long j, int cpu)
 470{
 471	unsigned long j0 = jiffies;
 472
 473	/* Use j0 because jiffies might change while we run */
 474	return round_jiffies_common(j + j0, cpu, true) - j0;
 475}
 476EXPORT_SYMBOL_GPL(__round_jiffies_up_relative);
 477
 478/**
 479 * round_jiffies_up - function to round jiffies up to a full second
 480 * @j: the time in (absolute) jiffies that should be rounded
 481 *
 482 * This is the same as round_jiffies() except that it will never
 483 * round down.  This is useful for timeouts for which the exact time
 484 * of firing does not matter too much, as long as they don't fire too
 485 * early.
 486 */
 487unsigned long round_jiffies_up(unsigned long j)
 488{
 489	return round_jiffies_common(j, raw_smp_processor_id(), true);
 490}
 491EXPORT_SYMBOL_GPL(round_jiffies_up);
 492
 493/**
 494 * round_jiffies_up_relative - function to round jiffies up to a full second
 495 * @j: the time in (relative) jiffies that should be rounded
 496 *
 497 * This is the same as round_jiffies_relative() except that it will never
 498 * round down.  This is useful for timeouts for which the exact time
 499 * of firing does not matter too much, as long as they don't fire too
 500 * early.
 501 */
 502unsigned long round_jiffies_up_relative(unsigned long j)
 503{
 504	return __round_jiffies_up_relative(j, raw_smp_processor_id());
 505}
 506EXPORT_SYMBOL_GPL(round_jiffies_up_relative);
 507
 508
 509static inline unsigned int timer_get_idx(struct timer_list *timer)
 510{
 511	return (timer->flags & TIMER_ARRAYMASK) >> TIMER_ARRAYSHIFT;
 512}
 513
 514static inline void timer_set_idx(struct timer_list *timer, unsigned int idx)
 515{
 516	timer->flags = (timer->flags & ~TIMER_ARRAYMASK) |
 517			idx << TIMER_ARRAYSHIFT;
 518}
 519
 520/*
 521 * Helper function to calculate the array index for a given expiry
 522 * time.
 523 */
 524static inline unsigned calc_index(unsigned long expires, unsigned lvl,
 525				  unsigned long *bucket_expiry)
 526{
 527
 528	/*
 529	 * The timer wheel has to guarantee that a timer does not fire
 530	 * early. Early expiry can happen due to:
 531	 * - Timer is armed at the edge of a tick
 532	 * - Truncation of the expiry time in the outer wheel levels
 533	 *
 534	 * Round up with level granularity to prevent this.
 535	 */
 536	expires = (expires >> LVL_SHIFT(lvl)) + 1;
 537	*bucket_expiry = expires << LVL_SHIFT(lvl);
 538	return LVL_OFFS(lvl) + (expires & LVL_MASK);
 539}
 540
 541static int calc_wheel_index(unsigned long expires, unsigned long clk,
 542			    unsigned long *bucket_expiry)
 543{
 544	unsigned long delta = expires - clk;
 545	unsigned int idx;
 546
 547	if (delta < LVL_START(1)) {
 548		idx = calc_index(expires, 0, bucket_expiry);
 549	} else if (delta < LVL_START(2)) {
 550		idx = calc_index(expires, 1, bucket_expiry);
 551	} else if (delta < LVL_START(3)) {
 552		idx = calc_index(expires, 2, bucket_expiry);
 553	} else if (delta < LVL_START(4)) {
 554		idx = calc_index(expires, 3, bucket_expiry);
 555	} else if (delta < LVL_START(5)) {
 556		idx = calc_index(expires, 4, bucket_expiry);
 557	} else if (delta < LVL_START(6)) {
 558		idx = calc_index(expires, 5, bucket_expiry);
 559	} else if (delta < LVL_START(7)) {
 560		idx = calc_index(expires, 6, bucket_expiry);
 561	} else if (LVL_DEPTH > 8 && delta < LVL_START(8)) {
 562		idx = calc_index(expires, 7, bucket_expiry);
 563	} else if ((long) delta < 0) {
 564		idx = clk & LVL_MASK;
 565		*bucket_expiry = clk;
 566	} else {
 567		/*
 568		 * Force expire obscene large timeouts to expire at the
 569		 * capacity limit of the wheel.
 570		 */
 571		if (delta >= WHEEL_TIMEOUT_CUTOFF)
 572			expires = clk + WHEEL_TIMEOUT_MAX;
 573
 574		idx = calc_index(expires, LVL_DEPTH - 1, bucket_expiry);
 575	}
 576	return idx;
 577}
 578
 579static void
 580trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer)
 581{
 582	/*
 583	 * Deferrable timers do not prevent the CPU from entering dynticks and
 584	 * are not taken into account on the idle/nohz_full path. An IPI when a
 585	 * new deferrable timer is enqueued will wake up the remote CPU but
 586	 * nothing will be done with the deferrable timer base. Therefore skip
 587	 * the remote IPI for deferrable timers completely.
 588	 */
 589	if (!is_timers_nohz_active() || timer->flags & TIMER_DEFERRABLE)
 590		return;
 591
 592	/*
 593	 * We might have to IPI the remote CPU if the base is idle and the
 594	 * timer is pinned. If it is a non pinned timer, it is only queued
 595	 * on the remote CPU, when timer was running during queueing. Then
 596	 * everything is handled by remote CPU anyway. If the other CPU is
 597	 * on the way to idle then it can't set base->is_idle as we hold
 598	 * the base lock:
 599	 */
 600	if (base->is_idle) {
 601		WARN_ON_ONCE(!(timer->flags & TIMER_PINNED ||
 602			       tick_nohz_full_cpu(base->cpu)));
 603		wake_up_nohz_cpu(base->cpu);
 604	}
 605}
 606
 607/*
 608 * Enqueue the timer into the hash bucket, mark it pending in
 609 * the bitmap, store the index in the timer flags then wake up
 610 * the target CPU if needed.
 611 */
 612static void enqueue_timer(struct timer_base *base, struct timer_list *timer,
 613			  unsigned int idx, unsigned long bucket_expiry)
 614{
 615
 616	hlist_add_head(&timer->entry, base->vectors + idx);
 617	__set_bit(idx, base->pending_map);
 618	timer_set_idx(timer, idx);
 619
 620	trace_timer_start(timer, bucket_expiry);
 621
 622	/*
 623	 * Check whether this is the new first expiring timer. The
 624	 * effective expiry time of the timer is required here
 625	 * (bucket_expiry) instead of timer->expires.
 626	 */
 627	if (time_before(bucket_expiry, base->next_expiry)) {
 628		/*
 629		 * Set the next expiry time and kick the CPU so it
 630		 * can reevaluate the wheel:
 631		 */
 632		WRITE_ONCE(base->next_expiry, bucket_expiry);
 633		base->timers_pending = true;
 634		base->next_expiry_recalc = false;
 635		trigger_dyntick_cpu(base, timer);
 636	}
 637}
 638
 639static void internal_add_timer(struct timer_base *base, struct timer_list *timer)
 640{
 641	unsigned long bucket_expiry;
 642	unsigned int idx;
 643
 644	idx = calc_wheel_index(timer->expires, base->clk, &bucket_expiry);
 645	enqueue_timer(base, timer, idx, bucket_expiry);
 646}
 647
 648#ifdef CONFIG_DEBUG_OBJECTS_TIMERS
 649
 650static const struct debug_obj_descr timer_debug_descr;
 651
 652struct timer_hint {
 653	void	(*function)(struct timer_list *t);
 654	long	offset;
 655};
 656
 657#define TIMER_HINT(fn, container, timr, hintfn)			\
 658	{							\
 659		.function = fn,					\
 660		.offset	  = offsetof(container, hintfn) -	\
 661			    offsetof(container, timr)		\
 662	}
 663
 664static const struct timer_hint timer_hints[] = {
 665	TIMER_HINT(delayed_work_timer_fn,
 666		   struct delayed_work, timer, work.func),
 667	TIMER_HINT(kthread_delayed_work_timer_fn,
 668		   struct kthread_delayed_work, timer, work.func),
 669};
 670
 671static void *timer_debug_hint(void *addr)
 672{
 673	struct timer_list *timer = addr;
 674	int i;
 675
 676	for (i = 0; i < ARRAY_SIZE(timer_hints); i++) {
 677		if (timer_hints[i].function == timer->function) {
 678			void (**fn)(void) = addr + timer_hints[i].offset;
 679
 680			return *fn;
 681		}
 682	}
 683
 684	return timer->function;
 685}
 686
 687static bool timer_is_static_object(void *addr)
 688{
 689	struct timer_list *timer = addr;
 690
 691	return (timer->entry.pprev == NULL &&
 692		timer->entry.next == TIMER_ENTRY_STATIC);
 693}
 694
 695/*
 696 * timer_fixup_init is called when:
 697 * - an active object is initialized
 698 */
 699static bool timer_fixup_init(void *addr, enum debug_obj_state state)
 700{
 701	struct timer_list *timer = addr;
 702
 703	switch (state) {
 704	case ODEBUG_STATE_ACTIVE:
 705		timer_delete_sync(timer);
 706		debug_object_init(timer, &timer_debug_descr);
 707		return true;
 708	default:
 709		return false;
 710	}
 711}
 712
 713/* Stub timer callback for improperly used timers. */
 714static void stub_timer(struct timer_list *unused)
 715{
 716	WARN_ON(1);
 717}
 718
 719/*
 720 * timer_fixup_activate is called when:
 721 * - an active object is activated
 722 * - an unknown non-static object is activated
 723 */
 724static bool timer_fixup_activate(void *addr, enum debug_obj_state state)
 725{
 726	struct timer_list *timer = addr;
 727
 728	switch (state) {
 729	case ODEBUG_STATE_NOTAVAILABLE:
 730		timer_setup(timer, stub_timer, 0);
 731		return true;
 732
 733	case ODEBUG_STATE_ACTIVE:
 734		WARN_ON(1);
 735		fallthrough;
 736	default:
 737		return false;
 738	}
 739}
 740
 741/*
 742 * timer_fixup_free is called when:
 743 * - an active object is freed
 744 */
 745static bool timer_fixup_free(void *addr, enum debug_obj_state state)
 746{
 747	struct timer_list *timer = addr;
 748
 749	switch (state) {
 750	case ODEBUG_STATE_ACTIVE:
 751		timer_delete_sync(timer);
 752		debug_object_free(timer, &timer_debug_descr);
 753		return true;
 754	default:
 755		return false;
 756	}
 757}
 758
 759/*
 760 * timer_fixup_assert_init is called when:
 761 * - an untracked/uninit-ed object is found
 762 */
 763static bool timer_fixup_assert_init(void *addr, enum debug_obj_state state)
 764{
 765	struct timer_list *timer = addr;
 766
 767	switch (state) {
 768	case ODEBUG_STATE_NOTAVAILABLE:
 769		timer_setup(timer, stub_timer, 0);
 770		return true;
 771	default:
 772		return false;
 773	}
 774}
 775
 776static const struct debug_obj_descr timer_debug_descr = {
 777	.name			= "timer_list",
 778	.debug_hint		= timer_debug_hint,
 779	.is_static_object	= timer_is_static_object,
 780	.fixup_init		= timer_fixup_init,
 781	.fixup_activate		= timer_fixup_activate,
 782	.fixup_free		= timer_fixup_free,
 783	.fixup_assert_init	= timer_fixup_assert_init,
 784};
 785
 786static inline void debug_timer_init(struct timer_list *timer)
 787{
 788	debug_object_init(timer, &timer_debug_descr);
 789}
 790
 791static inline void debug_timer_activate(struct timer_list *timer)
 792{
 793	debug_object_activate(timer, &timer_debug_descr);
 794}
 795
 796static inline void debug_timer_deactivate(struct timer_list *timer)
 797{
 798	debug_object_deactivate(timer, &timer_debug_descr);
 799}
 800
 801static inline void debug_timer_assert_init(struct timer_list *timer)
 802{
 803	debug_object_assert_init(timer, &timer_debug_descr);
 804}
 805
 806static void do_init_timer(struct timer_list *timer,
 807			  void (*func)(struct timer_list *),
 808			  unsigned int flags,
 809			  const char *name, struct lock_class_key *key);
 810
 811void timer_init_key_on_stack(struct timer_list *timer,
 812			     void (*func)(struct timer_list *),
 813			     unsigned int flags,
 814			     const char *name, struct lock_class_key *key)
 815{
 816	debug_object_init_on_stack(timer, &timer_debug_descr);
 817	do_init_timer(timer, func, flags, name, key);
 818}
 819EXPORT_SYMBOL_GPL(timer_init_key_on_stack);
 820
 821void timer_destroy_on_stack(struct timer_list *timer)
 822{
 823	debug_object_free(timer, &timer_debug_descr);
 824}
 825EXPORT_SYMBOL_GPL(timer_destroy_on_stack);
 826
 827#else
 828static inline void debug_timer_init(struct timer_list *timer) { }
 829static inline void debug_timer_activate(struct timer_list *timer) { }
 830static inline void debug_timer_deactivate(struct timer_list *timer) { }
 831static inline void debug_timer_assert_init(struct timer_list *timer) { }
 832#endif
 833
 834static inline void debug_init(struct timer_list *timer)
 835{
 836	debug_timer_init(timer);
 837	trace_timer_init(timer);
 838}
 839
 840static inline void debug_deactivate(struct timer_list *timer)
 841{
 842	debug_timer_deactivate(timer);
 843	trace_timer_cancel(timer);
 844}
 845
 846static inline void debug_assert_init(struct timer_list *timer)
 847{
 848	debug_timer_assert_init(timer);
 849}
 850
 851static void do_init_timer(struct timer_list *timer,
 852			  void (*func)(struct timer_list *),
 853			  unsigned int flags,
 854			  const char *name, struct lock_class_key *key)
 855{
 856	timer->entry.pprev = NULL;
 857	timer->function = func;
 858	if (WARN_ON_ONCE(flags & ~TIMER_INIT_FLAGS))
 859		flags &= TIMER_INIT_FLAGS;
 860	timer->flags = flags | raw_smp_processor_id();
 861	lockdep_init_map(&timer->lockdep_map, name, key, 0);
 862}
 863
 864/**
 865 * timer_init_key - initialize a timer
 866 * @timer: the timer to be initialized
 867 * @func: timer callback function
 868 * @flags: timer flags
 869 * @name: name of the timer
 870 * @key: lockdep class key of the fake lock used for tracking timer
 871 *       sync lock dependencies
 872 *
 873 * timer_init_key() must be done to a timer prior to calling *any* of the
 874 * other timer functions.
 875 */
 876void timer_init_key(struct timer_list *timer,
 877		    void (*func)(struct timer_list *), unsigned int flags,
 878		    const char *name, struct lock_class_key *key)
 879{
 880	debug_init(timer);
 881	do_init_timer(timer, func, flags, name, key);
 882}
 883EXPORT_SYMBOL(timer_init_key);
 884
 885static inline void detach_timer(struct timer_list *timer, bool clear_pending)
 886{
 887	struct hlist_node *entry = &timer->entry;
 888
 889	debug_deactivate(timer);
 890
 891	__hlist_del(entry);
 892	if (clear_pending)
 893		entry->pprev = NULL;
 894	entry->next = LIST_POISON2;
 895}
 896
 897static int detach_if_pending(struct timer_list *timer, struct timer_base *base,
 898			     bool clear_pending)
 899{
 900	unsigned idx = timer_get_idx(timer);
 901
 902	if (!timer_pending(timer))
 903		return 0;
 904
 905	if (hlist_is_singular_node(&timer->entry, base->vectors + idx)) {
 906		__clear_bit(idx, base->pending_map);
 907		base->next_expiry_recalc = true;
 908	}
 909
 910	detach_timer(timer, clear_pending);
 911	return 1;
 912}
 913
 914static inline struct timer_base *get_timer_cpu_base(u32 tflags, u32 cpu)
 915{
 916	int index = tflags & TIMER_PINNED ? BASE_LOCAL : BASE_GLOBAL;
 917
 918	/*
 919	 * If the timer is deferrable and NO_HZ_COMMON is set then we need
 920	 * to use the deferrable base.
 921	 */
 922	if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
 923		index = BASE_DEF;
 924
 925	return per_cpu_ptr(&timer_bases[index], cpu);
 926}
 927
 928static inline struct timer_base *get_timer_this_cpu_base(u32 tflags)
 929{
 930	int index = tflags & TIMER_PINNED ? BASE_LOCAL : BASE_GLOBAL;
 931
 932	/*
 933	 * If the timer is deferrable and NO_HZ_COMMON is set then we need
 934	 * to use the deferrable base.
 935	 */
 936	if (IS_ENABLED(CONFIG_NO_HZ_COMMON) && (tflags & TIMER_DEFERRABLE))
 937		index = BASE_DEF;
 938
 939	return this_cpu_ptr(&timer_bases[index]);
 940}
 941
 942static inline struct timer_base *get_timer_base(u32 tflags)
 943{
 944	return get_timer_cpu_base(tflags, tflags & TIMER_CPUMASK);
 945}
 946
 947static inline void __forward_timer_base(struct timer_base *base,
 948					unsigned long basej)
 949{
 950	/*
 951	 * Check whether we can forward the base. We can only do that when
 952	 * @basej is past base->clk otherwise we might rewind base->clk.
 953	 */
 954	if (time_before_eq(basej, base->clk))
 955		return;
 956
 957	/*
 958	 * If the next expiry value is > jiffies, then we fast forward to
 959	 * jiffies otherwise we forward to the next expiry value.
 960	 */
 961	if (time_after(base->next_expiry, basej)) {
 962		base->clk = basej;
 963	} else {
 964		if (WARN_ON_ONCE(time_before(base->next_expiry, base->clk)))
 965			return;
 966		base->clk = base->next_expiry;
 967	}
 968
 969}
 970
 971static inline void forward_timer_base(struct timer_base *base)
 972{
 973	__forward_timer_base(base, READ_ONCE(jiffies));
 974}
 975
 976/*
 977 * We are using hashed locking: Holding per_cpu(timer_bases[x]).lock means
 978 * that all timers which are tied to this base are locked, and the base itself
 979 * is locked too.
 980 *
 981 * So __run_timers/migrate_timers can safely modify all timers which could
 982 * be found in the base->vectors array.
 983 *
 984 * When a timer is migrating then the TIMER_MIGRATING flag is set and we need
 985 * to wait until the migration is done.
 986 */
 987static struct timer_base *lock_timer_base(struct timer_list *timer,
 988					  unsigned long *flags)
 989	__acquires(timer->base->lock)
 990{
 991	for (;;) {
 992		struct timer_base *base;
 993		u32 tf;
 994
 995		/*
 996		 * We need to use READ_ONCE() here, otherwise the compiler
 997		 * might re-read @tf between the check for TIMER_MIGRATING
 998		 * and spin_lock().
 999		 */
1000		tf = READ_ONCE(timer->flags);
1001
1002		if (!(tf & TIMER_MIGRATING)) {
1003			base = get_timer_base(tf);
1004			raw_spin_lock_irqsave(&base->lock, *flags);
1005			if (timer->flags == tf)
1006				return base;
1007			raw_spin_unlock_irqrestore(&base->lock, *flags);
1008		}
1009		cpu_relax();
1010	}
1011}
1012
1013#define MOD_TIMER_PENDING_ONLY		0x01
1014#define MOD_TIMER_REDUCE		0x02
1015#define MOD_TIMER_NOTPENDING		0x04
1016
1017static inline int
1018__mod_timer(struct timer_list *timer, unsigned long expires, unsigned int options)
1019{
1020	unsigned long clk = 0, flags, bucket_expiry;
1021	struct timer_base *base, *new_base;
1022	unsigned int idx = UINT_MAX;
1023	int ret = 0;
1024
1025	debug_assert_init(timer);
1026
1027	/*
1028	 * This is a common optimization triggered by the networking code - if
1029	 * the timer is re-modified to have the same timeout or ends up in the
1030	 * same array bucket then just return:
1031	 */
1032	if (!(options & MOD_TIMER_NOTPENDING) && timer_pending(timer)) {
1033		/*
1034		 * The downside of this optimization is that it can result in
1035		 * larger granularity than you would get from adding a new
1036		 * timer with this expiry.
1037		 */
1038		long diff = timer->expires - expires;
1039
1040		if (!diff)
1041			return 1;
1042		if (options & MOD_TIMER_REDUCE && diff <= 0)
1043			return 1;
1044
1045		/*
1046		 * We lock timer base and calculate the bucket index right
1047		 * here. If the timer ends up in the same bucket, then we
1048		 * just update the expiry time and avoid the whole
1049		 * dequeue/enqueue dance.
1050		 */
1051		base = lock_timer_base(timer, &flags);
1052		/*
1053		 * Has @timer been shutdown? This needs to be evaluated
1054		 * while holding base lock to prevent a race against the
1055		 * shutdown code.
1056		 */
1057		if (!timer->function)
1058			goto out_unlock;
1059
1060		forward_timer_base(base);
1061
1062		if (timer_pending(timer) && (options & MOD_TIMER_REDUCE) &&
1063		    time_before_eq(timer->expires, expires)) {
1064			ret = 1;
1065			goto out_unlock;
1066		}
1067
1068		clk = base->clk;
1069		idx = calc_wheel_index(expires, clk, &bucket_expiry);
1070
1071		/*
1072		 * Retrieve and compare the array index of the pending
1073		 * timer. If it matches set the expiry to the new value so a
1074		 * subsequent call will exit in the expires check above.
1075		 */
1076		if (idx == timer_get_idx(timer)) {
1077			if (!(options & MOD_TIMER_REDUCE))
1078				timer->expires = expires;
1079			else if (time_after(timer->expires, expires))
1080				timer->expires = expires;
1081			ret = 1;
1082			goto out_unlock;
1083		}
1084	} else {
1085		base = lock_timer_base(timer, &flags);
1086		/*
1087		 * Has @timer been shutdown? This needs to be evaluated
1088		 * while holding base lock to prevent a race against the
1089		 * shutdown code.
1090		 */
1091		if (!timer->function)
1092			goto out_unlock;
1093
1094		forward_timer_base(base);
1095	}
1096
1097	ret = detach_if_pending(timer, base, false);
1098	if (!ret && (options & MOD_TIMER_PENDING_ONLY))
1099		goto out_unlock;
1100
1101	new_base = get_timer_this_cpu_base(timer->flags);
1102
1103	if (base != new_base) {
1104		/*
1105		 * We are trying to schedule the timer on the new base.
1106		 * However we can't change timer's base while it is running,
1107		 * otherwise timer_delete_sync() can't detect that the timer's
1108		 * handler yet has not finished. This also guarantees that the
1109		 * timer is serialized wrt itself.
1110		 */
1111		if (likely(base->running_timer != timer)) {
1112			/* See the comment in lock_timer_base() */
1113			timer->flags |= TIMER_MIGRATING;
1114
1115			raw_spin_unlock(&base->lock);
1116			base = new_base;
1117			raw_spin_lock(&base->lock);
1118			WRITE_ONCE(timer->flags,
1119				   (timer->flags & ~TIMER_BASEMASK) | base->cpu);
1120			forward_timer_base(base);
1121		}
1122	}
1123
1124	debug_timer_activate(timer);
1125
1126	timer->expires = expires;
1127	/*
1128	 * If 'idx' was calculated above and the base time did not advance
1129	 * between calculating 'idx' and possibly switching the base, only
1130	 * enqueue_timer() is required. Otherwise we need to (re)calculate
1131	 * the wheel index via internal_add_timer().
1132	 */
1133	if (idx != UINT_MAX && clk == base->clk)
1134		enqueue_timer(base, timer, idx, bucket_expiry);
1135	else
1136		internal_add_timer(base, timer);
1137
1138out_unlock:
1139	raw_spin_unlock_irqrestore(&base->lock, flags);
1140
1141	return ret;
1142}
1143
1144/**
1145 * mod_timer_pending - Modify a pending timer's timeout
1146 * @timer:	The pending timer to be modified
1147 * @expires:	New absolute timeout in jiffies
1148 *
1149 * mod_timer_pending() is the same for pending timers as mod_timer(), but
1150 * will not activate inactive timers.
1151 *
1152 * If @timer->function == NULL then the start operation is silently
1153 * discarded.
1154 *
1155 * Return:
1156 * * %0 - The timer was inactive and not modified or was in
1157 *	  shutdown state and the operation was discarded
1158 * * %1 - The timer was active and requeued to expire at @expires
1159 */
1160int mod_timer_pending(struct timer_list *timer, unsigned long expires)
1161{
1162	return __mod_timer(timer, expires, MOD_TIMER_PENDING_ONLY);
1163}
1164EXPORT_SYMBOL(mod_timer_pending);
1165
1166/**
1167 * mod_timer - Modify a timer's timeout
1168 * @timer:	The timer to be modified
1169 * @expires:	New absolute timeout in jiffies
1170 *
1171 * mod_timer(timer, expires) is equivalent to:
1172 *
1173 *     timer_delete(timer); timer->expires = expires; add_timer(timer);
1174 *
1175 * mod_timer() is more efficient than the above open coded sequence. In
1176 * case that the timer is inactive, the timer_delete() part is a NOP. The
1177 * timer is in any case activated with the new expiry time @expires.
1178 *
1179 * Note that if there are multiple unserialized concurrent users of the
1180 * same timer, then mod_timer() is the only safe way to modify the timeout,
1181 * since add_timer() cannot modify an already running timer.
1182 *
1183 * If @timer->function == NULL then the start operation is silently
1184 * discarded. In this case the return value is 0 and meaningless.
1185 *
1186 * Return:
1187 * * %0 - The timer was inactive and started or was in shutdown
1188 *	  state and the operation was discarded
1189 * * %1 - The timer was active and requeued to expire at @expires or
1190 *	  the timer was active and not modified because @expires did
1191 *	  not change the effective expiry time
1192 */
1193int mod_timer(struct timer_list *timer, unsigned long expires)
1194{
1195	return __mod_timer(timer, expires, 0);
1196}
1197EXPORT_SYMBOL(mod_timer);
1198
1199/**
1200 * timer_reduce - Modify a timer's timeout if it would reduce the timeout
1201 * @timer:	The timer to be modified
1202 * @expires:	New absolute timeout in jiffies
1203 *
1204 * timer_reduce() is very similar to mod_timer(), except that it will only
1205 * modify an enqueued timer if that would reduce the expiration time. If
1206 * @timer is not enqueued it starts the timer.
1207 *
1208 * If @timer->function == NULL then the start operation is silently
1209 * discarded.
1210 *
1211 * Return:
1212 * * %0 - The timer was inactive and started or was in shutdown
1213 *	  state and the operation was discarded
1214 * * %1 - The timer was active and requeued to expire at @expires or
1215 *	  the timer was active and not modified because @expires
1216 *	  did not change the effective expiry time such that the
1217 *	  timer would expire earlier than already scheduled
1218 */
1219int timer_reduce(struct timer_list *timer, unsigned long expires)
1220{
1221	return __mod_timer(timer, expires, MOD_TIMER_REDUCE);
1222}
1223EXPORT_SYMBOL(timer_reduce);
1224
1225/**
1226 * add_timer - Start a timer
1227 * @timer:	The timer to be started
1228 *
1229 * Start @timer to expire at @timer->expires in the future. @timer->expires
1230 * is the absolute expiry time measured in 'jiffies'. When the timer expires
1231 * timer->function(timer) will be invoked from soft interrupt context.
1232 *
1233 * The @timer->expires and @timer->function fields must be set prior
1234 * to calling this function.
1235 *
1236 * If @timer->function == NULL then the start operation is silently
1237 * discarded.
1238 *
1239 * If @timer->expires is already in the past @timer will be queued to
1240 * expire at the next timer tick.
1241 *
1242 * This can only operate on an inactive timer. Attempts to invoke this on
1243 * an active timer are rejected with a warning.
1244 */
1245void add_timer(struct timer_list *timer)
1246{
1247	if (WARN_ON_ONCE(timer_pending(timer)))
1248		return;
1249	__mod_timer(timer, timer->expires, MOD_TIMER_NOTPENDING);
1250}
1251EXPORT_SYMBOL(add_timer);
1252
1253/**
1254 * add_timer_local() - Start a timer on the local CPU
1255 * @timer:	The timer to be started
1256 *
1257 * Same as add_timer() except that the timer flag TIMER_PINNED is set.
1258 *
1259 * See add_timer() for further details.
1260 */
1261void add_timer_local(struct timer_list *timer)
1262{
1263	if (WARN_ON_ONCE(timer_pending(timer)))
1264		return;
1265	timer->flags |= TIMER_PINNED;
1266	__mod_timer(timer, timer->expires, MOD_TIMER_NOTPENDING);
1267}
1268EXPORT_SYMBOL(add_timer_local);
1269
1270/**
1271 * add_timer_global() - Start a timer without TIMER_PINNED flag set
1272 * @timer:	The timer to be started
1273 *
1274 * Same as add_timer() except that the timer flag TIMER_PINNED is unset.
1275 *
1276 * See add_timer() for further details.
1277 */
1278void add_timer_global(struct timer_list *timer)
1279{
1280	if (WARN_ON_ONCE(timer_pending(timer)))
1281		return;
1282	timer->flags &= ~TIMER_PINNED;
1283	__mod_timer(timer, timer->expires, MOD_TIMER_NOTPENDING);
1284}
1285EXPORT_SYMBOL(add_timer_global);
1286
1287/**
1288 * add_timer_on - Start a timer on a particular CPU
1289 * @timer:	The timer to be started
1290 * @cpu:	The CPU to start it on
1291 *
1292 * Same as add_timer() except that it starts the timer on the given CPU and
1293 * the TIMER_PINNED flag is set. When timer shouldn't be a pinned timer in
1294 * the next round, add_timer_global() should be used instead as it unsets
1295 * the TIMER_PINNED flag.
1296 *
1297 * See add_timer() for further details.
1298 */
1299void add_timer_on(struct timer_list *timer, int cpu)
1300{
1301	struct timer_base *new_base, *base;
1302	unsigned long flags;
1303
1304	debug_assert_init(timer);
1305
1306	if (WARN_ON_ONCE(timer_pending(timer)))
1307		return;
1308
1309	/* Make sure timer flags have TIMER_PINNED flag set */
1310	timer->flags |= TIMER_PINNED;
1311
1312	new_base = get_timer_cpu_base(timer->flags, cpu);
1313
1314	/*
1315	 * If @timer was on a different CPU, it should be migrated with the
1316	 * old base locked to prevent other operations proceeding with the
1317	 * wrong base locked.  See lock_timer_base().
1318	 */
1319	base = lock_timer_base(timer, &flags);
1320	/*
1321	 * Has @timer been shutdown? This needs to be evaluated while
1322	 * holding base lock to prevent a race against the shutdown code.
1323	 */
1324	if (!timer->function)
1325		goto out_unlock;
1326
1327	if (base != new_base) {
1328		timer->flags |= TIMER_MIGRATING;
1329
1330		raw_spin_unlock(&base->lock);
1331		base = new_base;
1332		raw_spin_lock(&base->lock);
1333		WRITE_ONCE(timer->flags,
1334			   (timer->flags & ~TIMER_BASEMASK) | cpu);
1335	}
1336	forward_timer_base(base);
1337
1338	debug_timer_activate(timer);
1339	internal_add_timer(base, timer);
1340out_unlock:
1341	raw_spin_unlock_irqrestore(&base->lock, flags);
1342}
1343EXPORT_SYMBOL_GPL(add_timer_on);
1344
1345/**
1346 * __timer_delete - Internal function: Deactivate a timer
1347 * @timer:	The timer to be deactivated
1348 * @shutdown:	If true, this indicates that the timer is about to be
1349 *		shutdown permanently.
1350 *
1351 * If @shutdown is true then @timer->function is set to NULL under the
1352 * timer base lock which prevents further rearming of the time. In that
1353 * case any attempt to rearm @timer after this function returns will be
1354 * silently ignored.
1355 *
1356 * Return:
1357 * * %0 - The timer was not pending
1358 * * %1 - The timer was pending and deactivated
1359 */
1360static int __timer_delete(struct timer_list *timer, bool shutdown)
1361{
1362	struct timer_base *base;
1363	unsigned long flags;
1364	int ret = 0;
1365
1366	debug_assert_init(timer);
1367
1368	/*
1369	 * If @shutdown is set then the lock has to be taken whether the
1370	 * timer is pending or not to protect against a concurrent rearm
1371	 * which might hit between the lockless pending check and the lock
1372	 * acquisition. By taking the lock it is ensured that such a newly
1373	 * enqueued timer is dequeued and cannot end up with
1374	 * timer->function == NULL in the expiry code.
1375	 *
1376	 * If timer->function is currently executed, then this makes sure
1377	 * that the callback cannot requeue the timer.
1378	 */
1379	if (timer_pending(timer) || shutdown) {
1380		base = lock_timer_base(timer, &flags);
1381		ret = detach_if_pending(timer, base, true);
1382		if (shutdown)
1383			timer->function = NULL;
1384		raw_spin_unlock_irqrestore(&base->lock, flags);
1385	}
1386
1387	return ret;
1388}
1389
1390/**
1391 * timer_delete - Deactivate a timer
1392 * @timer:	The timer to be deactivated
1393 *
1394 * The function only deactivates a pending timer, but contrary to
1395 * timer_delete_sync() it does not take into account whether the timer's
1396 * callback function is concurrently executed on a different CPU or not.
1397 * It neither prevents rearming of the timer.  If @timer can be rearmed
1398 * concurrently then the return value of this function is meaningless.
1399 *
1400 * Return:
1401 * * %0 - The timer was not pending
1402 * * %1 - The timer was pending and deactivated
1403 */
1404int timer_delete(struct timer_list *timer)
1405{
1406	return __timer_delete(timer, false);
1407}
1408EXPORT_SYMBOL(timer_delete);
1409
1410/**
1411 * timer_shutdown - Deactivate a timer and prevent rearming
1412 * @timer:	The timer to be deactivated
1413 *
1414 * The function does not wait for an eventually running timer callback on a
1415 * different CPU but it prevents rearming of the timer. Any attempt to arm
1416 * @timer after this function returns will be silently ignored.
1417 *
1418 * This function is useful for teardown code and should only be used when
1419 * timer_shutdown_sync() cannot be invoked due to locking or context constraints.
1420 *
1421 * Return:
1422 * * %0 - The timer was not pending
1423 * * %1 - The timer was pending
1424 */
1425int timer_shutdown(struct timer_list *timer)
1426{
1427	return __timer_delete(timer, true);
1428}
1429EXPORT_SYMBOL_GPL(timer_shutdown);
1430
1431/**
1432 * __try_to_del_timer_sync - Internal function: Try to deactivate a timer
1433 * @timer:	Timer to deactivate
1434 * @shutdown:	If true, this indicates that the timer is about to be
1435 *		shutdown permanently.
1436 *
1437 * If @shutdown is true then @timer->function is set to NULL under the
1438 * timer base lock which prevents further rearming of the timer. Any
1439 * attempt to rearm @timer after this function returns will be silently
1440 * ignored.
1441 *
1442 * This function cannot guarantee that the timer cannot be rearmed
1443 * right after dropping the base lock if @shutdown is false. That
1444 * needs to be prevented by the calling code if necessary.
1445 *
1446 * Return:
1447 * * %0  - The timer was not pending
1448 * * %1  - The timer was pending and deactivated
1449 * * %-1 - The timer callback function is running on a different CPU
1450 */
1451static int __try_to_del_timer_sync(struct timer_list *timer, bool shutdown)
1452{
1453	struct timer_base *base;
1454	unsigned long flags;
1455	int ret = -1;
1456
1457	debug_assert_init(timer);
1458
1459	base = lock_timer_base(timer, &flags);
1460
1461	if (base->running_timer != timer) {
1462		ret = detach_if_pending(timer, base, true);
1463		if (shutdown)
1464			timer->function = NULL;
1465	}
1466
1467	raw_spin_unlock_irqrestore(&base->lock, flags);
1468
1469	return ret;
1470}
1471
1472/**
1473 * timer_delete_sync_try - Try to deactivate a timer
1474 * @timer:	Timer to deactivate
1475 *
1476 * This function tries to deactivate a timer. On success the timer is not
1477 * queued and the timer callback function is not running on any CPU.
1478 *
1479 * This function does not guarantee that the timer cannot be rearmed right
1480 * after dropping the base lock. That needs to be prevented by the calling
1481 * code if necessary.
1482 *
1483 * Return:
1484 * * %0  - The timer was not pending
1485 * * %1  - The timer was pending and deactivated
1486 * * %-1 - The timer callback function is running on a different CPU
1487 */
1488int timer_delete_sync_try(struct timer_list *timer)
1489{
1490	return __try_to_del_timer_sync(timer, false);
1491}
1492EXPORT_SYMBOL(timer_delete_sync_try);
1493
1494#ifdef CONFIG_PREEMPT_RT
1495static __init void timer_base_init_expiry_lock(struct timer_base *base)
1496{
1497	spin_lock_init(&base->expiry_lock);
1498}
1499
1500static inline void timer_base_lock_expiry(struct timer_base *base)
1501{
1502	spin_lock(&base->expiry_lock);
1503}
1504
1505static inline void timer_base_unlock_expiry(struct timer_base *base)
1506{
1507	spin_unlock(&base->expiry_lock);
1508}
1509
1510/*
1511 * The counterpart to del_timer_wait_running().
1512 *
1513 * If there is a waiter for base->expiry_lock, then it was waiting for the
1514 * timer callback to finish. Drop expiry_lock and reacquire it. That allows
1515 * the waiter to acquire the lock and make progress.
1516 */
1517static void timer_sync_wait_running(struct timer_base *base)
1518	__releases(&base->lock) __releases(&base->expiry_lock)
1519	__acquires(&base->expiry_lock) __acquires(&base->lock)
1520{
1521	if (atomic_read(&base->timer_waiters)) {
1522		raw_spin_unlock_irq(&base->lock);
1523		spin_unlock(&base->expiry_lock);
1524		spin_lock(&base->expiry_lock);
1525		raw_spin_lock_irq(&base->lock);
1526	}
1527}
1528
1529/*
1530 * This function is called on PREEMPT_RT kernels when the fast path
1531 * deletion of a timer failed because the timer callback function was
1532 * running.
1533 *
1534 * This prevents priority inversion, if the softirq thread on a remote CPU
1535 * got preempted, and it prevents a life lock when the task which tries to
1536 * delete a timer preempted the softirq thread running the timer callback
1537 * function.
1538 */
1539static void del_timer_wait_running(struct timer_list *timer)
1540{
1541	u32 tf;
1542
1543	tf = READ_ONCE(timer->flags);
1544	if (!(tf & (TIMER_MIGRATING | TIMER_IRQSAFE))) {
1545		struct timer_base *base = get_timer_base(tf);
1546
1547		/*
1548		 * Mark the base as contended and grab the expiry lock,
1549		 * which is held by the softirq across the timer
1550		 * callback. Drop the lock immediately so the softirq can
1551		 * expire the next timer. In theory the timer could already
1552		 * be running again, but that's more than unlikely and just
1553		 * causes another wait loop.
1554		 */
1555		atomic_inc(&base->timer_waiters);
1556		spin_lock_bh(&base->expiry_lock);
1557		atomic_dec(&base->timer_waiters);
1558		spin_unlock_bh(&base->expiry_lock);
1559	}
1560}
1561#else
1562static inline void timer_base_init_expiry_lock(struct timer_base *base) { }
1563static inline void timer_base_lock_expiry(struct timer_base *base) { }
1564static inline void timer_base_unlock_expiry(struct timer_base *base) { }
1565static inline void timer_sync_wait_running(struct timer_base *base) { }
1566static inline void del_timer_wait_running(struct timer_list *timer) { }
1567#endif
1568
1569/**
1570 * __timer_delete_sync - Internal function: Deactivate a timer and wait
1571 *			 for the handler to finish.
1572 * @timer:	The timer to be deactivated
1573 * @shutdown:	If true, @timer->function will be set to NULL under the
1574 *		timer base lock which prevents rearming of @timer
1575 *
1576 * If @shutdown is not set the timer can be rearmed later. If the timer can
1577 * be rearmed concurrently, i.e. after dropping the base lock then the
1578 * return value is meaningless.
1579 *
1580 * If @shutdown is set then @timer->function is set to NULL under timer
1581 * base lock which prevents rearming of the timer. Any attempt to rearm
1582 * a shutdown timer is silently ignored.
1583 *
1584 * If the timer should be reused after shutdown it has to be initialized
1585 * again.
1586 *
1587 * Return:
1588 * * %0	- The timer was not pending
1589 * * %1	- The timer was pending and deactivated
1590 */
1591static int __timer_delete_sync(struct timer_list *timer, bool shutdown)
1592{
1593	int ret;
1594
1595#ifdef CONFIG_LOCKDEP
1596	unsigned long flags;
1597
1598	/*
1599	 * If lockdep gives a backtrace here, please reference
1600	 * the synchronization rules above.
1601	 */
1602	local_irq_save(flags);
1603	lock_map_acquire(&timer->lockdep_map);
1604	lock_map_release(&timer->lockdep_map);
1605	local_irq_restore(flags);
1606#endif
1607	/*
1608	 * don't use it in hardirq context, because it
1609	 * could lead to deadlock.
1610	 */
1611	WARN_ON(in_hardirq() && !(timer->flags & TIMER_IRQSAFE));
1612
1613	/*
1614	 * Must be able to sleep on PREEMPT_RT because of the slowpath in
1615	 * del_timer_wait_running().
1616	 */
1617	if (IS_ENABLED(CONFIG_PREEMPT_RT) && !(timer->flags & TIMER_IRQSAFE))
1618		lockdep_assert_preemption_enabled();
1619
1620	do {
1621		ret = __try_to_del_timer_sync(timer, shutdown);
1622
1623		if (unlikely(ret < 0)) {
1624			del_timer_wait_running(timer);
1625			cpu_relax();
1626		}
1627	} while (ret < 0);
1628
1629	return ret;
1630}
1631
1632/**
1633 * timer_delete_sync - Deactivate a timer and wait for the handler to finish.
1634 * @timer:	The timer to be deactivated
1635 *
1636 * Synchronization rules: Callers must prevent restarting of the timer,
1637 * otherwise this function is meaningless. It must not be called from
1638 * interrupt contexts unless the timer is an irqsafe one. The caller must
1639 * not hold locks which would prevent completion of the timer's callback
1640 * function. The timer's handler must not call add_timer_on(). Upon exit
1641 * the timer is not queued and the handler is not running on any CPU.
1642 *
1643 * For !irqsafe timers, the caller must not hold locks that are held in
1644 * interrupt context. Even if the lock has nothing to do with the timer in
1645 * question.  Here's why::
1646 *
1647 *    CPU0                             CPU1
1648 *    ----                             ----
1649 *                                     <SOFTIRQ>
1650 *                                       call_timer_fn();
1651 *                                       base->running_timer = mytimer;
1652 *    spin_lock_irq(somelock);
1653 *                                     <IRQ>
1654 *                                        spin_lock(somelock);
1655 *    timer_delete_sync(mytimer);
1656 *    while (base->running_timer == mytimer);
1657 *
1658 * Now timer_delete_sync() will never return and never release somelock.
1659 * The interrupt on the other CPU is waiting to grab somelock but it has
1660 * interrupted the softirq that CPU0 is waiting to finish.
1661 *
1662 * This function cannot guarantee that the timer is not rearmed again by
1663 * some concurrent or preempting code, right after it dropped the base
1664 * lock. If there is the possibility of a concurrent rearm then the return
1665 * value of the function is meaningless.
1666 *
1667 * If such a guarantee is needed, e.g. for teardown situations then use
1668 * timer_shutdown_sync() instead.
1669 *
1670 * Return:
1671 * * %0	- The timer was not pending
1672 * * %1	- The timer was pending and deactivated
1673 */
1674int timer_delete_sync(struct timer_list *timer)
1675{
1676	return __timer_delete_sync(timer, false);
1677}
1678EXPORT_SYMBOL(timer_delete_sync);
1679
1680/**
1681 * timer_shutdown_sync - Shutdown a timer and prevent rearming
1682 * @timer: The timer to be shutdown
1683 *
1684 * When the function returns it is guaranteed that:
1685 *   - @timer is not queued
1686 *   - The callback function of @timer is not running
1687 *   - @timer cannot be enqueued again. Any attempt to rearm
1688 *     @timer is silently ignored.
1689 *
1690 * See timer_delete_sync() for synchronization rules.
1691 *
1692 * This function is useful for final teardown of an infrastructure where
1693 * the timer is subject to a circular dependency problem.
1694 *
1695 * A common pattern for this is a timer and a workqueue where the timer can
1696 * schedule work and work can arm the timer. On shutdown the workqueue must
1697 * be destroyed and the timer must be prevented from rearming. Unless the
1698 * code has conditionals like 'if (mything->in_shutdown)' to prevent that
1699 * there is no way to get this correct with timer_delete_sync().
1700 *
1701 * timer_shutdown_sync() is solving the problem. The correct ordering of
1702 * calls in this case is:
1703 *
1704 *	timer_shutdown_sync(&mything->timer);
1705 *	workqueue_destroy(&mything->workqueue);
1706 *
1707 * After this 'mything' can be safely freed.
1708 *
1709 * This obviously implies that the timer is not required to be functional
1710 * for the rest of the shutdown operation.
1711 *
1712 * Return:
1713 * * %0 - The timer was not pending
1714 * * %1 - The timer was pending
1715 */
1716int timer_shutdown_sync(struct timer_list *timer)
1717{
1718	return __timer_delete_sync(timer, true);
1719}
1720EXPORT_SYMBOL_GPL(timer_shutdown_sync);
1721
1722static void call_timer_fn(struct timer_list *timer,
1723			  void (*fn)(struct timer_list *),
1724			  unsigned long baseclk)
1725{
1726	int count = preempt_count();
1727
1728#ifdef CONFIG_LOCKDEP
1729	/*
1730	 * It is permissible to free the timer from inside the
1731	 * function that is called from it, this we need to take into
1732	 * account for lockdep too. To avoid bogus "held lock freed"
1733	 * warnings as well as problems when looking into
1734	 * timer->lockdep_map, make a copy and use that here.
1735	 */
1736	struct lockdep_map lockdep_map;
1737
1738	lockdep_copy_map(&lockdep_map, &timer->lockdep_map);
1739#endif
1740	/*
1741	 * Couple the lock chain with the lock chain at
1742	 * timer_delete_sync() by acquiring the lock_map around the fn()
1743	 * call here and in timer_delete_sync().
1744	 */
1745	lock_map_acquire(&lockdep_map);
1746
1747	trace_timer_expire_entry(timer, baseclk);
1748	fn(timer);
1749	trace_timer_expire_exit(timer);
1750
1751	lock_map_release(&lockdep_map);
1752
1753	if (count != preempt_count()) {
1754		WARN_ONCE(1, "timer: %pS preempt leak: %08x -> %08x\n",
1755			  fn, count, preempt_count());
1756		/*
1757		 * Restore the preempt count. That gives us a decent
1758		 * chance to survive and extract information. If the
1759		 * callback kept a lock held, bad luck, but not worse
1760		 * than the BUG() we had.
1761		 */
1762		preempt_count_set(count);
1763	}
1764}
1765
1766static void expire_timers(struct timer_base *base, struct hlist_head *head)
1767{
1768	/*
1769	 * This value is required only for tracing. base->clk was
1770	 * incremented directly before expire_timers was called. But expiry
1771	 * is related to the old base->clk value.
1772	 */
1773	unsigned long baseclk = base->clk - 1;
1774
1775	while (!hlist_empty(head)) {
1776		struct timer_list *timer;
1777		void (*fn)(struct timer_list *);
1778
1779		timer = hlist_entry(head->first, struct timer_list, entry);
1780
1781		base->running_timer = timer;
1782		detach_timer(timer, true);
1783
1784		fn = timer->function;
1785
1786		if (WARN_ON_ONCE(!fn)) {
1787			/* Should never happen. Emphasis on should! */
1788			base->running_timer = NULL;
1789			continue;
1790		}
1791
1792		if (timer->flags & TIMER_IRQSAFE) {
1793			raw_spin_unlock(&base->lock);
1794			call_timer_fn(timer, fn, baseclk);
1795			raw_spin_lock(&base->lock);
1796			base->running_timer = NULL;
1797		} else {
1798			raw_spin_unlock_irq(&base->lock);
1799			call_timer_fn(timer, fn, baseclk);
1800			raw_spin_lock_irq(&base->lock);
1801			base->running_timer = NULL;
1802			timer_sync_wait_running(base);
1803		}
1804	}
1805}
1806
1807static int collect_expired_timers(struct timer_base *base,
1808				  struct hlist_head *heads)
1809{
1810	unsigned long clk = base->clk = base->next_expiry;
1811	struct hlist_head *vec;
1812	int i, levels = 0;
1813	unsigned int idx;
1814
1815	for (i = 0; i < LVL_DEPTH; i++) {
1816		idx = (clk & LVL_MASK) + i * LVL_SIZE;
1817
1818		if (__test_and_clear_bit(idx, base->pending_map)) {
1819			vec = base->vectors + idx;
1820			hlist_move_list(vec, heads++);
1821			levels++;
1822		}
1823		/* Is it time to look at the next level? */
1824		if (clk & LVL_CLK_MASK)
1825			break;
1826		/* Shift clock for the next level granularity */
1827		clk >>= LVL_CLK_SHIFT;
1828	}
1829	return levels;
1830}
1831
1832/*
1833 * Find the next pending bucket of a level. Search from level start (@offset)
1834 * + @clk upwards and if nothing there, search from start of the level
1835 * (@offset) up to @offset + clk.
1836 */
1837static int next_pending_bucket(struct timer_base *base, unsigned offset,
1838			       unsigned clk)
1839{
1840	unsigned pos, start = offset + clk;
1841	unsigned end = offset + LVL_SIZE;
1842
1843	pos = find_next_bit(base->pending_map, end, start);
1844	if (pos < end)
1845		return pos - start;
1846
1847	pos = find_next_bit(base->pending_map, start, offset);
1848	return pos < start ? pos + LVL_SIZE - start : -1;
1849}
1850
1851/*
1852 * Search the first expiring timer in the various clock levels. Caller must
1853 * hold base->lock.
1854 *
1855 * Store next expiry time in base->next_expiry.
1856 */
1857static void timer_recalc_next_expiry(struct timer_base *base)
1858{
1859	unsigned long clk, next, adj;
1860	unsigned lvl, offset = 0;
1861
1862	next = base->clk + TIMER_NEXT_MAX_DELTA;
1863	clk = base->clk;
1864	for (lvl = 0; lvl < LVL_DEPTH; lvl++, offset += LVL_SIZE) {
1865		int pos = next_pending_bucket(base, offset, clk & LVL_MASK);
1866		unsigned long lvl_clk = clk & LVL_CLK_MASK;
1867
1868		if (pos >= 0) {
1869			unsigned long tmp = clk + (unsigned long) pos;
1870
1871			tmp <<= LVL_SHIFT(lvl);
1872			if (time_before(tmp, next))
1873				next = tmp;
1874
1875			/*
1876			 * If the next expiration happens before we reach
1877			 * the next level, no need to check further.
1878			 */
1879			if (pos <= ((LVL_CLK_DIV - lvl_clk) & LVL_CLK_MASK))
1880				break;
1881		}
1882		/*
1883		 * Clock for the next level. If the current level clock lower
1884		 * bits are zero, we look at the next level as is. If not we
1885		 * need to advance it by one because that's going to be the
1886		 * next expiring bucket in that level. base->clk is the next
1887		 * expiring jiffy. So in case of:
1888		 *
1889		 * LVL5 LVL4 LVL3 LVL2 LVL1 LVL0
1890		 *  0    0    0    0    0    0
1891		 *
1892		 * we have to look at all levels @index 0. With
1893		 *
1894		 * LVL5 LVL4 LVL3 LVL2 LVL1 LVL0
1895		 *  0    0    0    0    0    2
1896		 *
1897		 * LVL0 has the next expiring bucket @index 2. The upper
1898		 * levels have the next expiring bucket @index 1.
1899		 *
1900		 * In case that the propagation wraps the next level the same
1901		 * rules apply:
1902		 *
1903		 * LVL5 LVL4 LVL3 LVL2 LVL1 LVL0
1904		 *  0    0    0    0    F    2
1905		 *
1906		 * So after looking at LVL0 we get:
1907		 *
1908		 * LVL5 LVL4 LVL3 LVL2 LVL1
1909		 *  0    0    0    1    0
1910		 *
1911		 * So no propagation from LVL1 to LVL2 because that happened
1912		 * with the add already, but then we need to propagate further
1913		 * from LVL2 to LVL3.
1914		 *
1915		 * So the simple check whether the lower bits of the current
1916		 * level are 0 or not is sufficient for all cases.
1917		 */
1918		adj = lvl_clk ? 1 : 0;
1919		clk >>= LVL_CLK_SHIFT;
1920		clk += adj;
1921	}
1922
1923	WRITE_ONCE(base->next_expiry, next);
1924	base->next_expiry_recalc = false;
1925	base->timers_pending = !(next == base->clk + TIMER_NEXT_MAX_DELTA);
1926}
1927
1928#ifdef CONFIG_NO_HZ_COMMON
1929/*
1930 * Check, if the next hrtimer event is before the next timer wheel
1931 * event:
1932 */
1933static u64 cmp_next_hrtimer_event(u64 basem, u64 expires)
1934{
1935	u64 nextevt = hrtimer_get_next_event();
1936
1937	/*
1938	 * If high resolution timers are enabled
1939	 * hrtimer_get_next_event() returns KTIME_MAX.
1940	 */
1941	if (expires <= nextevt)
1942		return expires;
1943
1944	/*
1945	 * If the next timer is already expired, return the tick base
1946	 * time so the tick is fired immediately.
1947	 */
1948	if (nextevt <= basem)
1949		return basem;
1950
1951	/*
1952	 * Round up to the next jiffy. High resolution timers are
1953	 * off, so the hrtimers are expired in the tick and we need to
1954	 * make sure that this tick really expires the timer to avoid
1955	 * a ping pong of the nohz stop code.
1956	 *
1957	 * Use DIV_ROUND_UP_ULL to prevent gcc calling __divdi3
1958	 */
1959	return DIV_ROUND_UP_ULL(nextevt, TICK_NSEC) * TICK_NSEC;
1960}
1961
1962static unsigned long next_timer_interrupt(struct timer_base *base,
1963					  unsigned long basej)
1964{
1965	if (base->next_expiry_recalc)
1966		timer_recalc_next_expiry(base);
1967
1968	/*
1969	 * Move next_expiry for the empty base into the future to prevent an
1970	 * unnecessary raise of the timer softirq when the next_expiry value
1971	 * will be reached even if there is no timer pending.
1972	 *
1973	 * This update is also required to make timer_base::next_expiry values
1974	 * easy comparable to find out which base holds the first pending timer.
1975	 */
1976	if (!base->timers_pending)
1977		WRITE_ONCE(base->next_expiry, basej + TIMER_NEXT_MAX_DELTA);
1978
1979	return base->next_expiry;
1980}
1981
1982static unsigned long fetch_next_timer_interrupt(unsigned long basej, u64 basem,
1983						struct timer_base *base_local,
1984						struct timer_base *base_global,
1985						struct timer_events *tevt)
1986{
1987	unsigned long nextevt, nextevt_local, nextevt_global;
1988	bool local_first;
1989
1990	nextevt_local = next_timer_interrupt(base_local, basej);
1991	nextevt_global = next_timer_interrupt(base_global, basej);
1992
1993	local_first = time_before_eq(nextevt_local, nextevt_global);
1994
1995	nextevt = local_first ? nextevt_local : nextevt_global;
1996
1997	/*
1998	 * If the @nextevt is at max. one tick away, use @nextevt and store
1999	 * it in the local expiry value. The next global event is irrelevant in
2000	 * this case and can be left as KTIME_MAX.
2001	 */
2002	if (time_before_eq(nextevt, basej + 1)) {
2003		/* If we missed a tick already, force 0 delta */
2004		if (time_before(nextevt, basej))
2005			nextevt = basej;
2006		tevt->local = basem + (u64)(nextevt - basej) * TICK_NSEC;
2007
2008		/*
2009		 * This is required for the remote check only but it doesn't
2010		 * hurt, when it is done for both call sites:
2011		 *
2012		 * * The remote callers will only take care of the global timers
2013		 *   as local timers will be handled by CPU itself. When not
2014		 *   updating tevt->global with the already missed first global
2015		 *   timer, it is possible that it will be missed completely.
2016		 *
2017		 * * The local callers will ignore the tevt->global anyway, when
2018		 *   nextevt is max. one tick away.
2019		 */
2020		if (!local_first)
2021			tevt->global = tevt->local;
2022		return nextevt;
2023	}
2024
2025	/*
2026	 * Update tevt.* values:
2027	 *
2028	 * If the local queue expires first, then the global event can be
2029	 * ignored. If the global queue is empty, nothing to do either.
2030	 */
2031	if (!local_first && base_global->timers_pending)
2032		tevt->global = basem + (u64)(nextevt_global - basej) * TICK_NSEC;
2033
2034	if (base_local->timers_pending)
2035		tevt->local = basem + (u64)(nextevt_local - basej) * TICK_NSEC;
2036
2037	return nextevt;
2038}
2039
2040# ifdef CONFIG_SMP
2041/**
2042 * fetch_next_timer_interrupt_remote() - Store next timers into @tevt
2043 * @basej:	base time jiffies
2044 * @basem:	base time clock monotonic
2045 * @tevt:	Pointer to the storage for the expiry values
2046 * @cpu:	Remote CPU
2047 *
2048 * Stores the next pending local and global timer expiry values in the
2049 * struct pointed to by @tevt. If a queue is empty the corresponding
2050 * field is set to KTIME_MAX. If local event expires before global
2051 * event, global event is set to KTIME_MAX as well.
2052 *
2053 * Caller needs to make sure timer base locks are held (use
2054 * timer_lock_remote_bases() for this purpose).
2055 */
2056void fetch_next_timer_interrupt_remote(unsigned long basej, u64 basem,
2057				       struct timer_events *tevt,
2058				       unsigned int cpu)
2059{
2060	struct timer_base *base_local, *base_global;
2061
2062	/* Preset local / global events */
2063	tevt->local = tevt->global = KTIME_MAX;
2064
2065	base_local = per_cpu_ptr(&timer_bases[BASE_LOCAL], cpu);
2066	base_global = per_cpu_ptr(&timer_bases[BASE_GLOBAL], cpu);
2067
2068	lockdep_assert_held(&base_local->lock);
2069	lockdep_assert_held(&base_global->lock);
2070
2071	fetch_next_timer_interrupt(basej, basem, base_local, base_global, tevt);
2072}
2073
2074/**
2075 * timer_unlock_remote_bases - unlock timer bases of cpu
2076 * @cpu:	Remote CPU
2077 *
2078 * Unlocks the remote timer bases.
2079 */
2080void timer_unlock_remote_bases(unsigned int cpu)
2081	__releases(timer_bases[BASE_LOCAL]->lock)
2082	__releases(timer_bases[BASE_GLOBAL]->lock)
2083{
2084	struct timer_base *base_local, *base_global;
2085
2086	base_local = per_cpu_ptr(&timer_bases[BASE_LOCAL], cpu);
2087	base_global = per_cpu_ptr(&timer_bases[BASE_GLOBAL], cpu);
2088
2089	raw_spin_unlock(&base_global->lock);
2090	raw_spin_unlock(&base_local->lock);
2091}
2092
2093/**
2094 * timer_lock_remote_bases - lock timer bases of cpu
2095 * @cpu:	Remote CPU
2096 *
2097 * Locks the remote timer bases.
2098 */
2099void timer_lock_remote_bases(unsigned int cpu)
2100	__acquires(timer_bases[BASE_LOCAL]->lock)
2101	__acquires(timer_bases[BASE_GLOBAL]->lock)
2102{
2103	struct timer_base *base_local, *base_global;
2104
2105	base_local = per_cpu_ptr(&timer_bases[BASE_LOCAL], cpu);
2106	base_global = per_cpu_ptr(&timer_bases[BASE_GLOBAL], cpu);
2107
2108	lockdep_assert_irqs_disabled();
2109
2110	raw_spin_lock(&base_local->lock);
2111	raw_spin_lock_nested(&base_global->lock, SINGLE_DEPTH_NESTING);
2112}
2113
2114/**
2115 * timer_base_is_idle() - Return whether timer base is set idle
2116 *
2117 * Returns value of local timer base is_idle value.
2118 */
2119bool timer_base_is_idle(void)
2120{
2121	return __this_cpu_read(timer_bases[BASE_LOCAL].is_idle);
2122}
2123
2124static void __run_timer_base(struct timer_base *base);
2125
2126/**
2127 * timer_expire_remote() - expire global timers of cpu
2128 * @cpu:	Remote CPU
2129 *
2130 * Expire timers of global base of remote CPU.
2131 */
2132void timer_expire_remote(unsigned int cpu)
2133{
2134	struct timer_base *base = per_cpu_ptr(&timer_bases[BASE_GLOBAL], cpu);
2135
2136	__run_timer_base(base);
2137}
2138
2139static void timer_use_tmigr(unsigned long basej, u64 basem,
2140			    unsigned long *nextevt, bool *tick_stop_path,
2141			    bool timer_base_idle, struct timer_events *tevt)
2142{
2143	u64 next_tmigr;
2144
2145	if (timer_base_idle)
2146		next_tmigr = tmigr_cpu_new_timer(tevt->global);
2147	else if (tick_stop_path)
2148		next_tmigr = tmigr_cpu_deactivate(tevt->global);
2149	else
2150		next_tmigr = tmigr_quick_check(tevt->global);
2151
2152	/*
2153	 * If the CPU is the last going idle in timer migration hierarchy, make
2154	 * sure the CPU will wake up in time to handle remote timers.
2155	 * next_tmigr == KTIME_MAX if other CPUs are still active.
2156	 */
2157	if (next_tmigr < tevt->local) {
2158		u64 tmp;
2159
2160		/* If we missed a tick already, force 0 delta */
2161		if (next_tmigr < basem)
2162			next_tmigr = basem;
2163
2164		tmp = div_u64(next_tmigr - basem, TICK_NSEC);
2165
2166		*nextevt = basej + (unsigned long)tmp;
2167		tevt->local = next_tmigr;
2168	}
2169}
2170# else
2171static void timer_use_tmigr(unsigned long basej, u64 basem,
2172			    unsigned long *nextevt, bool *tick_stop_path,
2173			    bool timer_base_idle, struct timer_events *tevt)
2174{
2175	/*
2176	 * Make sure first event is written into tevt->local to not miss a
2177	 * timer on !SMP systems.
2178	 */
2179	tevt->local = min_t(u64, tevt->local, tevt->global);
2180}
2181# endif /* CONFIG_SMP */
2182
2183static inline u64 __get_next_timer_interrupt(unsigned long basej, u64 basem,
2184					     bool *idle)
2185{
2186	struct timer_events tevt = { .local = KTIME_MAX, .global = KTIME_MAX };
2187	struct timer_base *base_local, *base_global;
2188	unsigned long nextevt;
2189	bool idle_is_possible;
2190
2191	/*
2192	 * When the CPU is offline, the tick is cancelled and nothing is supposed
2193	 * to try to stop it.
2194	 */
2195	if (WARN_ON_ONCE(cpu_is_offline(smp_processor_id()))) {
2196		if (idle)
2197			*idle = true;
2198		return tevt.local;
2199	}
2200
2201	base_local = this_cpu_ptr(&timer_bases[BASE_LOCAL]);
2202	base_global = this_cpu_ptr(&timer_bases[BASE_GLOBAL]);
2203
2204	raw_spin_lock(&base_local->lock);
2205	raw_spin_lock_nested(&base_global->lock, SINGLE_DEPTH_NESTING);
2206
2207	nextevt = fetch_next_timer_interrupt(basej, basem, base_local,
2208					     base_global, &tevt);
2209
2210	/*
2211	 * If the next event is only one jiffy ahead there is no need to call
2212	 * timer migration hierarchy related functions. The value for the next
2213	 * global timer in @tevt struct equals then KTIME_MAX. This is also
2214	 * true, when the timer base is idle.
2215	 *
2216	 * The proper timer migration hierarchy function depends on the callsite
2217	 * and whether timer base is idle or not. @nextevt will be updated when
2218	 * this CPU needs to handle the first timer migration hierarchy
2219	 * event. See timer_use_tmigr() for detailed information.
2220	 */
2221	idle_is_possible = time_after(nextevt, basej + 1);
2222	if (idle_is_possible)
2223		timer_use_tmigr(basej, basem, &nextevt, idle,
2224				base_local->is_idle, &tevt);
2225
2226	/*
2227	 * We have a fresh next event. Check whether we can forward the
2228	 * base.
2229	 */
2230	__forward_timer_base(base_local, basej);
2231	__forward_timer_base(base_global, basej);
2232
2233	/*
2234	 * Set base->is_idle only when caller is timer_base_try_to_set_idle()
2235	 */
2236	if (idle) {
2237		/*
2238		 * Bases are idle if the next event is more than a tick
2239		 * away. Caution: @nextevt could have changed by enqueueing a
2240		 * global timer into timer migration hierarchy. Therefore a new
2241		 * check is required here.
2242		 *
2243		 * If the base is marked idle then any timer add operation must
2244		 * forward the base clk itself to keep granularity small. This
2245		 * idle logic is only maintained for the BASE_LOCAL and
2246		 * BASE_GLOBAL base, deferrable timers may still see large
2247		 * granularity skew (by design).
2248		 */
2249		if (!base_local->is_idle && time_after(nextevt, basej + 1)) {
2250			base_local->is_idle = true;
2251			/*
2252			 * Global timers queued locally while running in a task
2253			 * in nohz_full mode need a self-IPI to kick reprogramming
2254			 * in IRQ tail.
2255			 */
2256			if (tick_nohz_full_cpu(base_local->cpu))
2257				base_global->is_idle = true;
2258			trace_timer_base_idle(true, base_local->cpu);
2259		}
2260		*idle = base_local->is_idle;
2261
2262		/*
2263		 * When timer base is not set idle, undo the effect of
2264		 * tmigr_cpu_deactivate() to prevent inconsistent states - active
2265		 * timer base but inactive timer migration hierarchy.
2266		 *
2267		 * When timer base was already marked idle, nothing will be
2268		 * changed here.
2269		 */
2270		if (!base_local->is_idle && idle_is_possible)
2271			tmigr_cpu_activate();
2272	}
2273
2274	raw_spin_unlock(&base_global->lock);
2275	raw_spin_unlock(&base_local->lock);
2276
2277	return cmp_next_hrtimer_event(basem, tevt.local);
2278}
2279
2280/**
2281 * get_next_timer_interrupt() - return the time (clock mono) of the next timer
2282 * @basej:	base time jiffies
2283 * @basem:	base time clock monotonic
2284 *
2285 * Returns the tick aligned clock monotonic time of the next pending timer or
2286 * KTIME_MAX if no timer is pending. If timer of global base was queued into
2287 * timer migration hierarchy, first global timer is not taken into account. If
2288 * it was the last CPU of timer migration hierarchy going idle, first global
2289 * event is taken into account.
2290 */
2291u64 get_next_timer_interrupt(unsigned long basej, u64 basem)
2292{
2293	return __get_next_timer_interrupt(basej, basem, NULL);
2294}
2295
2296/**
2297 * timer_base_try_to_set_idle() - Try to set the idle state of the timer bases
2298 * @basej:	base time jiffies
2299 * @basem:	base time clock monotonic
2300 * @idle:	pointer to store the value of timer_base->is_idle on return;
2301 *		*idle contains the information whether tick was already stopped
2302 *
2303 * Returns the tick aligned clock monotonic time of the next pending timer or
2304 * KTIME_MAX if no timer is pending. When tick was already stopped KTIME_MAX is
2305 * returned as well.
2306 */
2307u64 timer_base_try_to_set_idle(unsigned long basej, u64 basem, bool *idle)
2308{
2309	if (*idle)
2310		return KTIME_MAX;
2311
2312	return __get_next_timer_interrupt(basej, basem, idle);
2313}
2314
2315/**
2316 * timer_clear_idle - Clear the idle state of the timer base
2317 *
2318 * Called with interrupts disabled
2319 */
2320void timer_clear_idle(void)
2321{
2322	/*
2323	 * We do this unlocked. The worst outcome is a remote pinned timer
2324	 * enqueue sending a pointless IPI, but taking the lock would just
2325	 * make the window for sending the IPI a few instructions smaller
2326	 * for the cost of taking the lock in the exit from idle
2327	 * path. Required for BASE_LOCAL only.
2328	 */
2329	__this_cpu_write(timer_bases[BASE_LOCAL].is_idle, false);
2330	if (tick_nohz_full_cpu(smp_processor_id()))
2331		__this_cpu_write(timer_bases[BASE_GLOBAL].is_idle, false);
2332	trace_timer_base_idle(false, smp_processor_id());
2333
2334	/* Activate without holding the timer_base->lock */
2335	tmigr_cpu_activate();
2336}
2337#endif
2338
2339/**
2340 * __run_timers - run all expired timers (if any) on this CPU.
2341 * @base: the timer vector to be processed.
2342 */
2343static inline void __run_timers(struct timer_base *base)
2344{
2345	struct hlist_head heads[LVL_DEPTH];
2346	int levels;
2347
2348	lockdep_assert_held(&base->lock);
2349
2350	if (base->running_timer)
2351		return;
2352
2353	while (time_after_eq(jiffies, base->clk) &&
2354	       time_after_eq(jiffies, base->next_expiry)) {
2355		levels = collect_expired_timers(base, heads);
2356		/*
2357		 * The two possible reasons for not finding any expired
2358		 * timer at this clk are that all matching timers have been
2359		 * dequeued or no timer has been queued since
2360		 * base::next_expiry was set to base::clk +
2361		 * TIMER_NEXT_MAX_DELTA.
2362		 */
2363		WARN_ON_ONCE(!levels && !base->next_expiry_recalc
2364			     && base->timers_pending);
2365		/*
2366		 * While executing timers, base->clk is set 1 offset ahead of
2367		 * jiffies to avoid endless requeuing to current jiffies.
2368		 */
2369		base->clk++;
2370		timer_recalc_next_expiry(base);
2371
2372		while (levels--)
2373			expire_timers(base, heads + levels);
2374	}
2375}
2376
2377static void __run_timer_base(struct timer_base *base)
2378{
2379	/* Can race against a remote CPU updating next_expiry under the lock */
2380	if (time_before(jiffies, READ_ONCE(base->next_expiry)))
2381		return;
2382
2383	timer_base_lock_expiry(base);
2384	raw_spin_lock_irq(&base->lock);
2385	__run_timers(base);
2386	raw_spin_unlock_irq(&base->lock);
2387	timer_base_unlock_expiry(base);
2388}
2389
2390static void run_timer_base(int index)
2391{
2392	struct timer_base *base = this_cpu_ptr(&timer_bases[index]);
2393
2394	__run_timer_base(base);
2395}
2396
2397/*
2398 * This function runs timers and the timer-tq in bottom half context.
2399 */
2400static __latent_entropy void run_timer_softirq(void)
2401{
2402	run_timer_base(BASE_LOCAL);
2403	if (IS_ENABLED(CONFIG_NO_HZ_COMMON)) {
2404		run_timer_base(BASE_GLOBAL);
2405		run_timer_base(BASE_DEF);
2406
2407		if (is_timers_nohz_active())
2408			tmigr_handle_remote();
2409	}
2410}
2411
2412/*
2413 * Called by the local, per-CPU timer interrupt on SMP.
2414 */
2415static void run_local_timers(void)
2416{
2417	struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_LOCAL]);
2418
2419	hrtimer_run_queues();
2420
2421	for (int i = 0; i < NR_BASES; i++, base++) {
2422		/*
2423		 * Raise the softirq only if required.
2424		 *
2425		 * timer_base::next_expiry can be written by a remote CPU while
2426		 * holding the lock. If this write happens at the same time than
2427		 * the lockless local read, sanity checker could complain about
2428		 * data corruption.
2429		 *
2430		 * There are two possible situations where
2431		 * timer_base::next_expiry is written by a remote CPU:
2432		 *
2433		 * 1. Remote CPU expires global timers of this CPU and updates
2434		 * timer_base::next_expiry of BASE_GLOBAL afterwards in
2435		 * next_timer_interrupt() or timer_recalc_next_expiry(). The
2436		 * worst outcome is a superfluous raise of the timer softirq
2437		 * when the not yet updated value is read.
2438		 *
2439		 * 2. A new first pinned timer is enqueued by a remote CPU
2440		 * and therefore timer_base::next_expiry of BASE_LOCAL is
2441		 * updated. When this update is missed, this isn't a
2442		 * problem, as an IPI is executed nevertheless when the CPU
2443		 * was idle before. When the CPU wasn't idle but the update
2444		 * is missed, then the timer would expire one jiffy late -
2445		 * bad luck.
2446		 *
2447		 * Those unlikely corner cases where the worst outcome is only a
2448		 * one jiffy delay or a superfluous raise of the softirq are
2449		 * not that expensive as doing the check always while holding
2450		 * the lock.
2451		 *
2452		 * Possible remote writers are using WRITE_ONCE(). Local reader
2453		 * uses therefore READ_ONCE().
2454		 */
2455		if (time_after_eq(jiffies, READ_ONCE(base->next_expiry)) ||
2456		    (i == BASE_DEF && tmigr_requires_handle_remote())) {
2457			raise_timer_softirq(TIMER_SOFTIRQ);
2458			return;
2459		}
2460	}
2461}
2462
2463/*
2464 * Called from the timer interrupt handler to charge one tick to the current
2465 * process.  user_tick is 1 if the tick is user time, 0 for system.
2466 */
2467void update_process_times(int user_tick)
2468{
2469	struct task_struct *p = current;
2470
2471	/* Note: this timer irq context must be accounted for as well. */
2472	account_process_tick(p, user_tick);
2473	run_local_timers();
2474	rcu_sched_clock_irq(user_tick);
2475#ifdef CONFIG_IRQ_WORK
2476	if (in_hardirq())
2477		irq_work_tick();
2478#endif
2479	sched_tick();
2480	if (IS_ENABLED(CONFIG_POSIX_TIMERS))
2481		run_posix_cpu_timers();
2482}
2483
2484#ifdef CONFIG_HOTPLUG_CPU
2485static void migrate_timer_list(struct timer_base *new_base, struct hlist_head *head)
2486{
2487	struct timer_list *timer;
2488	int cpu = new_base->cpu;
2489
2490	while (!hlist_empty(head)) {
2491		timer = hlist_entry(head->first, struct timer_list, entry);
2492		detach_timer(timer, false);
2493		timer->flags = (timer->flags & ~TIMER_BASEMASK) | cpu;
2494		internal_add_timer(new_base, timer);
2495	}
2496}
2497
2498int timers_prepare_cpu(unsigned int cpu)
2499{
2500	struct timer_base *base;
2501	int b;
2502
2503	for (b = 0; b < NR_BASES; b++) {
2504		base = per_cpu_ptr(&timer_bases[b], cpu);
2505		base->clk = jiffies;
2506		base->next_expiry = base->clk + TIMER_NEXT_MAX_DELTA;
2507		base->next_expiry_recalc = false;
2508		base->timers_pending = false;
2509		base->is_idle = false;
2510	}
2511	return 0;
2512}
2513
2514int timers_dead_cpu(unsigned int cpu)
2515{
2516	struct timer_base *old_base;
2517	struct timer_base *new_base;
2518	int b, i;
2519
2520	for (b = 0; b < NR_BASES; b++) {
2521		old_base = per_cpu_ptr(&timer_bases[b], cpu);
2522		new_base = get_cpu_ptr(&timer_bases[b]);
2523		/*
2524		 * The caller is globally serialized and nobody else
2525		 * takes two locks at once, deadlock is not possible.
2526		 */
2527		raw_spin_lock_irq(&new_base->lock);
2528		raw_spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING);
2529
2530		/*
2531		 * The current CPUs base clock might be stale. Update it
2532		 * before moving the timers over.
2533		 */
2534		forward_timer_base(new_base);
2535
2536		WARN_ON_ONCE(old_base->running_timer);
2537		old_base->running_timer = NULL;
2538
2539		for (i = 0; i < WHEEL_SIZE; i++)
2540			migrate_timer_list(new_base, old_base->vectors + i);
2541
2542		raw_spin_unlock(&old_base->lock);
2543		raw_spin_unlock_irq(&new_base->lock);
2544		put_cpu_ptr(&timer_bases);
2545	}
2546	return 0;
2547}
2548
2549#endif /* CONFIG_HOTPLUG_CPU */
2550
2551static void __init init_timer_cpu(int cpu)
2552{
2553	struct timer_base *base;
2554	int i;
2555
2556	for (i = 0; i < NR_BASES; i++) {
2557		base = per_cpu_ptr(&timer_bases[i], cpu);
2558		base->cpu = cpu;
2559		raw_spin_lock_init(&base->lock);
2560		base->clk = jiffies;
2561		base->next_expiry = base->clk + TIMER_NEXT_MAX_DELTA;
2562		timer_base_init_expiry_lock(base);
2563	}
2564}
2565
2566static void __init init_timer_cpus(void)
2567{
2568	int cpu;
2569
2570	for_each_possible_cpu(cpu)
2571		init_timer_cpu(cpu);
2572}
2573
2574void __init timers_init(void)
2575{
2576	init_timer_cpus();
2577	posix_cputimers_init_work();
2578	open_softirq(TIMER_SOFTIRQ, run_timer_softirq);
2579}
~/ Read-only file preview.