linux-yocto/kernel/rcu
Paul E. McKenney 2b8a1969ca rcu-tasks: Maintain real-time response in rcu_tasks_postscan()
commit 0bb11a372f upstream.

The current code will scan the entirety of each per-CPU list of exiting
tasks in ->rtp_exit_list with interrupts disabled.  This is normally just
fine, because each CPU typically won't have very many tasks in this state.
However, if a large number of tasks block late in do_exit(), these lists
could be arbitrarily long.  Low probability, perhaps, but it really
could happen.

This commit therefore occasionally re-enables interrupts while traversing
these lists, inserting a dummy element to hold the current place in the
list.  In kernels built with CONFIG_PREEMPT_RT=y, this re-enabling happens
after each list element is processed, otherwise every one-to-two jiffies.

[ paulmck: Apply Frederic Weisbecker feedback. ]

Link: https://lore.kernel.org/all/ZdeI_-RfdLR8jlsm@localhost.localdomain/

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Sebastian Siewior <bigeasy@linutronix.de>
Cc: Anna-Maria Behnsen <anna-maria@linutronix.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Cc: Tahera Fahimi <taherafahimi@linux.microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-09-19 16:32:03 +02:00
..
Kconfig
Kconfig.debug
Makefile
rcu_segcblist.c
rcu_segcblist.h
rcu.h rcu: Dump memory object info if callback function is invalid 2024-08-29 17:33:23 +02:00
rcuscale.c rcuscale: Do a proper cleanup if kfree_scale_init() fails 2024-12-09 10:31:50 +01:00
rcutorture.c rcutorture: Fix rcu_torture_fwd_cb_cr() data race 2024-08-14 13:58:41 +02:00
refscale.c
srcutiny.c rcu: Dump memory object info if callback function is invalid 2024-08-29 17:33:23 +02:00
srcutree.c rcu: Dump memory object info if callback function is invalid 2024-08-29 17:33:23 +02:00
sync.c
tasks.h rcu-tasks: Maintain real-time response in rcu_tasks_postscan() 2025-09-19 16:32:03 +02:00
tiny.c rcu: Dump memory object info if callback function is invalid 2024-08-29 17:33:23 +02:00
tree_exp.h rcu/exp: Handle RCU expedited grace period kworker allocation failure 2024-03-26 18:19:17 -04:00
tree_nocb.h rcu/nocb: Fix rcuog wake-up from offline softirq 2024-10-17 15:24:30 +02:00
tree_plugin.h rcu: Fix racy re-initialization of irq_work causing hangs 2025-08-28 16:28:32 +02:00
tree_stall.h rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture 2025-06-19 15:28:03 +02:00
tree.c rcu: Fix racy re-initialization of irq_work causing hangs 2025-08-28 16:28:32 +02:00
tree.h rcu: Fix racy re-initialization of irq_work causing hangs 2025-08-28 16:28:32 +02:00
update.c