rcu: Enable rcu_normal_after_boot unconditionally for RT
authorJulia Cartwright <julia@ni.com>
Tue, 15 Dec 2020 14:16:47 +0000 (15:16 +0100)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 4 Jan 2021 21:43:51 +0000 (13:43 -0800)
commit36221e109eb20ac111bc3bf3e8d5639aa457c7e0
treeb636272ab3062d4f1db2e2ab8b11d4ddcef7a8b2
parent8b9a0ecc7ef5e1ed3afbc926de17399a37128c82
rcu: Enable rcu_normal_after_boot unconditionally for RT

Expedited RCU grace periods send IPIs to all non-idle CPUs, and thus can
disrupt time-critical code in real-time applications.  However, there
is a portion of boot-time processing (presumably before any real-time
applications have started) where expedited RCU grace periods are the only
option.  And so it is that experience with the -rt patchset indicates that
PREEMPT_RT systems should always set the rcupdate.rcu_normal_after_boot
kernel boot parameter.

This commit therefore makes the post-boot application environment safe
for real-time applications by making PREEMPT_RT systems disable the
rcupdate.rcu_normal_after_boot kernel boot parameter and acting as
if this parameter had been set.  This means that post-boot calls to
synchronize_rcu_expedited() will be treated as if they were instead
calls to synchronize_rcu(), thus preventing the IPIs, and thus avoiding
disrupting real-time applications.

Suggested-by: Luiz Capitulino <lcapitulino@redhat.com>
Acked-by: Paul E. McKenney <paulmck@linux.ibm.com>
Signed-off-by: Julia Cartwright <julia@ni.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
[ paulmck: Update kernel-parameters.txt accordingly. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Documentation/admin-guide/kernel-parameters.txt
kernel/rcu/update.c