linux/kernel
Thomas Gleixner 41e57dbd40 rtmutex: Avoid pointless requeueing in the deadlock detection chain walk
upstream commit: 67792e2cab

In case the dead lock detector is enabled we follow the lock chain to
the end in rt_mutex_adjust_prio_chain, even if we could stop earlier
due to the priority/waiter constellation.

But once we are no longer the top priority waiter in a certain step
or the task holding the lock has already the same priority then there
is no point in dequeing and enqueing along the lock chain as there is
no change at all.

So stop the queueing at this point.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Link: http://lkml.kernel.org/r/20140522031950.280830190@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2020-10-14 00:59:24 +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 rtmutex: Avoid pointless requeueing in the deadlock detection chain walk 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 workqueue: Prevent deadlock/stall on RT 2020-10-14 00:59:23 +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
async.c
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
configs.c
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 rtmutex: Confine deadlock logic to futex 2020-10-14 00:59:23 +03:00
futex_compat.c
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
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
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
seccomp.c
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
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
time.c time: settimeofday: Validate the values of tv from user 2015-01-29 17:40:49 -08:00
timeconst.bc
timer.c irq_work: allow certain work in hard irq context 2020-10-14 00:59:19 +03:00
tracepoint.c tracepoint: Do not waste memory on mods with no tracepoints 2014-05-31 13:20:28 -07:00
tsacct.c
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
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
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