linux/kernel
Paul E. McKenney eaf6ec6140 timers: Reduce future __run_timers() latency for newly emptied list
upstream commit: 16d937f880

The __run_timers() function currently steps through the list one jiffy at
a time in order to update the timer wheel.  However, if the timer wheel
is empty, no adjustment is needed other than updating ->timer_jiffies.
Therefore, if we just emptied the timer wheel, for example, by deleting
the last timer, we should mark the timer wheel as being up to date.
This marking will reduce (and perhaps eliminate) the jiffy-stepping that
a future __run_timers() call will need to do in response to some future
timer posting or migration.  This commit therefore catches ->timer_jiffies
for this case.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Tested-by: Mike Galbraith <bitbucket@online.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2020-10-14 00:59:25 +03:00
..
cpu sched/preempt: Fix up missed PREEMPT_NEED_RESCHED folding 2014-01-13 17:38:55 +01:00
debug kgdb/serial: Short term workaround 2020-10-14 00:59:20 +03:00
events perf: Make swevent hrtimer run in irq instead of softirq 2020-10-14 00:59:21 +03:00
gcov gcov: reuse kbasename helper 2013-11-13 12:09:34 +09:00
irq random: Make it work on rt 2020-10-14 00:59:21 +03:00
locking locking: ww_mutex: fix ww_mutex vs self-deadlock 2020-10-14 00:59:24 +03:00
power suspend: Prevent might sleep splats 2020-10-14 00:59:09 +03:00
printk HACK: printk: drop the logbuf_lock more often 2020-10-14 00:59:19 +03:00
rcu rcu-more-swait-conversions.patch 2020-10-14 00:59:23 +03:00
sched work-simple: Simple work queue implemenation 2020-10-14 00:59:24 +03:00
time rt,ntp: Move call to schedule_delayed_work() to helper thread 2020-10-14 00:59:23 +03:00
trace sched: Add support for lazy preemption 2020-10-14 00:59:22 +03:00
.gitignore Ignore generated file kernel/x509_certificate_list 2013-12-10 18:21:34 +00:00
Kconfig.freezer
Kconfig.hz kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS 2013-11-15 09:32:22 +09:00
Kconfig.locks mutex-no-spin-on-rt.patch 2020-10-14 00:59:15 +03:00
Kconfig.preempt sched: Add support for lazy preemption 2020-10-14 00:59:22 +03:00
Makefile KEYS: Remove files generated when SYSTEM_TRUSTED_KEYRING=y 2013-12-13 15:59:11 +00:00
acct.c fs: Fix hang with BSD accounting on frozen filesystem 2013-05-04 14:57:58 -04:00
async.c async: rename and redefine async_func_ptr 2013-03-12 13:59:14 -07:00
audit.c audit: AUDIT_FEATURE_CHANGE message format missing delimiting space 2014-11-21 09:23:01 -08:00
audit.h audit: Use struct net not pid_t to remember the network namespce to reply in 2014-02-28 04:04:33 -08:00
audit_tree.c audit: keep inode pinned 2014-11-21 09:23:01 -08:00
audit_watch.c inotify: Fix reporting of cookies for inotify events 2014-02-18 11:17:17 +01:00
auditfilter.c audit: restore AUDIT_LOGINUID unset ABI 2015-01-08 10:00:50 -08:00
auditsc.c audit: remove superfluous new- prefix in AUDIT_LOGIN messages 2014-07-09 11:18:28 -07:00
backtracetest.c
bounds.c mm: do not allocate page->ptl dynamically, if spinlock_t fits to long 2013-12-20 12:25:45 -08:00
capability.c CAPABILITIES: remove undefined caps from all processes 2014-09-17 09:19:09 -07:00
cgroup.c move d_rcu from overlapping d_child to overlapping d_alias 2015-04-29 10:31:54 +02:00
cgroup_freezer.c cgroup: replace cftype->read_seq_string() with cftype->seq_show() 2013-12-05 12:28:04 -05:00
compat.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-05-01 07:21:43 -07:00
configs.c proc: Supply PDE attribute setting accessor functions 2013-05-01 17:29:18 -04:00
context_tracking.c context_tracking: Wrap static key check into more intuitive function name 2013-12-02 20:43:14 +01:00
cpu.c cpu_down: move migrate_enable() back 2020-10-14 00:59:21 +03:00
cpu_pm.c
cpuset.c cpuset: Fix cpuset sched_relax_domain_level 2015-03-26 15:06:54 +01:00
crash_dump.c
cred.c
delayacct.c kernel/delayacct.c: remove redundant checking in __delayacct_add_tsk() 2013-11-13 12:09:12 +09:00
dma.c
elfcore.c switch elf_core_write_extra_phdrs() to dump_emit() 2013-11-09 00:16:23 -05:00
exec_domain.c
exit.c signals: Allow rt tasks to cache one sigqueue struct 2020-10-14 00:59:08 +03:00
extable.c kernel/extable: fix address-checks for core_kernel and init areas 2013-11-28 09:49:41 -08:00
fork.c rwlocks: Fix section mismatch 2020-10-14 00:59:17 +03:00
freezer.c freezer: Do not freeze tasks killed by OOM killer 2014-11-14 09:00:01 -08:00
futex.c futex: Simplify futex_lock_pi_atomic() and make it more robust 2020-10-14 00:59:24 +03:00
futex_compat.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-02-23 18:50:11 -08:00
groups.c userns: Don't allow setgroups until a gid mapping has been setablished 2015-01-08 10:00:50 -08:00
hrtimer.c cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep 2020-10-14 00:59:19 +03:00
hung_task.c hung_task: Display every hung task warning 2014-01-25 12:13:33 +01:00
irq_work.c irq_work: allow certain work in hard irq context 2020-10-14 00:59:19 +03:00
itimer.c hrtimers: prepare full preemption 2020-10-14 00:59:13 +03:00
jump_label.c static_key: WARN on usage before jump_label_init was called 2013-10-19 19:45:35 -04:00
kallsyms.c kernel: kallsyms: memory override issue, need check destination buffer length 2013-04-15 15:17:26 +09:30
kcmp.c kcmp: fix standard comparison bug 2014-10-05 14:52:20 -07:00
kexec.c powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST mode 2014-06-07 10:28:28 -07:00
kmod.c execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
kprobes.c kprobes: use KSYM_NAME_LEN to size identifier buffers 2013-11-13 12:09:26 +09:00
ksysfs.c add /sys/kernel/realtime entry 2020-10-14 00:59:20 +03:00
kthread.c kthread: fix return value of kthread_create() upon SIGKILL. 2014-06-30 20:11:53 -07:00
latencytop.c
module-internal.h KEYS: Separate the kernel signature checking keyring from module signing 2013-09-25 17:17:01 +01:00
module.c modules, lock around setting of MODULE_STATE_UNFORMED 2014-11-14 08:59:52 -08:00
module_signing.c keys: change asymmetric keys to use common hash definitions 2013-10-25 17:15:18 -04:00
notifier.c
nsproxy.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2013-09-07 14:35:32 -07:00
padata.c padata: Fix wrong usage of rcu_dereference() 2013-12-05 21:28:42 +08:00
panic.c panic: skip get_random_bytes for RT_FULL in init_oops_id 2020-10-14 00:59:13 +03:00
params.c params: improve standard definitions 2013-12-04 14:09:46 +10:30
pid.c exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting 2015-01-08 10:00:50 -08:00
pid_namespace.c pid_namespace: pidns_get() should check task_active_pid_ns() != NULL 2014-04-26 17:19:04 -07:00
posix-cpu-timers.c posix-timers: Avoid wakeups when no timers are active 2020-10-14 00:59:13 +03:00
posix-timers.c hrtimers: prepare full preemption 2020-10-14 00:59:13 +03:00
profile.c mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
ptrace.c ptrace: fix ptrace vs tasklist_lock race 2020-10-14 00:59:08 +03:00
range.c range: Do not add new blank slot with add_range_with_merge 2013-06-18 11:32:10 -05:00
reboot.c kexec: migrate to reboot cpu 2013-12-18 19:04:50 -08:00
relay.c relay: fix timer madness 2020-10-14 00:59:13 +03:00
res_counter.c core: Do not disable interrupts on RT in res_counter.c 2020-10-14 00:59:11 +03:00
resource.c kernel/resource.c: remove the unneeded assignment in function __find_resource 2013-07-03 16:08:06 -07:00
seccomp.c seccomp: allow BPF_XOR based ALU instructions. 2013-03-26 11:07:19 +11:00
signal.c signal-fix-up-rcu-wreckage.patch 2020-10-14 00:59:11 +03:00
smp.c kernel/smp.c:on_each_cpu_cond(): fix warning in fallback path 2014-09-17 09:19:09 -07:00
smpboot.c smpboot: Add missing get_online_cpus() in smpboot_register_percpu_thread() 2015-02-11 14:54:49 +08:00
smpboot.h
softirq.c softirq: make migrate disable/enable conditioned on softirq_nestcnt transition 2020-10-14 00:59:22 +03:00
stacktrace.c
stop_machine.c stomp-machine: use lg_global_trylock_relax() to dead with stop_cpus_lock lglock 2020-10-14 00:59:18 +03:00
sys.c kernel/sys.c: k_getrusage() can use while_each_thread() 2014-01-23 16:37:02 -08:00
sys_ni.c unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE 2013-05-09 13:46:38 -04:00
sysctl.c mm, pcp: allow restoring percpu_pagelist_fraction default 2014-07-09 11:18:26 -07:00
sysctl_binary.c kernel/sysctl_binary.c: use scnprintf() instead of snprintf() 2013-11-13 12:09:33 +09:00
system_certificates.S KEYS: correct alignment of system_certificate_list content in assembly file 2013-12-10 18:25:28 +00:00
system_keyring.c KEYS: correct alignment of system_certificate_list content in assembly file 2013-12-10 18:25:28 +00:00
task_work.c task_work: documentation 2013-09-11 15:58:27 -07:00
taskstats.c genetlink: only pass array to genl_register_family_with_ops() 2013-11-19 16:39:05 -05:00
test_kprobes.c kernel/: rename random32() to prandom_u32() 2013-04-29 18:28:42 -07:00
time.c time: settimeofday: Validate the values of tv from user 2015-01-29 17:40:49 -08:00
timeconst.bc kernel: Replace timeconst.pl with a bc script 2013-02-16 23:17:25 +01:00
timer.c timers: Reduce future __run_timers() latency for newly emptied list 2020-10-14 00:59:25 +03:00
tracepoint.c tracepoint: Do not waste memory on mods with no tracepoints 2014-05-31 13:20:28 -07:00
tsacct.c cputime: Use accessors to read task cputime stats 2013-01-27 19:23:31 +01:00
uid16.c groups: Consolidate the setgroups permission checks 2015-01-08 10:00:49 -08:00
up.c kernel: provide a __smp_call_function_single stub for !CONFIG_SMP 2013-11-15 09:32:22 +09:00
user-return-notifier.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
user.c core: Do not disable interrupts on RT in kernel/users.c 2020-10-14 00:59:11 +03:00
user_namespace.c userns: Allow setting gid_maps without privilege when setgroups is disabled 2015-01-08 10:00:50 -08:00
utsname.c userns: Kill nsown_capable it makes the wrong thing easy 2013-08-30 23:44:11 -07:00
utsname_sysctl.c kernel/utsname_sysctl.c: put get/get_uts() into CONFIG_PROC_SYSCTL code block 2013-02-27 19:10:22 -08:00
watchdog.c hrtimer: fixup hrtimer callback changes for preempt-rt 2020-10-14 00:59:13 +03:00
workqueue.c workqueue: Prevent deadlock/stall on RT 2020-10-14 00:59:23 +03:00
workqueue_internal.h sched: Distangle worker accounting from rqlock 2020-10-14 00:59:19 +03:00