Skip to content

Commit

Permalink
rcu: Allow expedited grace periods to be disabled at init
Browse files Browse the repository at this point in the history
Expedited grace periods can speed up boot, but are undesirable in
aggressive real-time systems.  This commit therefore introduces a
kernel parameter rcupdate.rcu_normal_after_boot that disables
expedited grace periods just before init is spawned.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
  • Loading branch information
Paul E. McKenney committed Dec 4, 2015
1 parent 967dcb8 commit 3e42ec1
Showing 2 changed files with 10 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
@@ -3318,6 +3318,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
grace-period latency. This parameter overrides
rcupdate.rcu_expedited.

rcupdate.rcu_normal_after_boot= [KNL]
Once boot has completed (that is, after
rcu_end_inkernel_boot() has been invoked), use
only normal grace-period primitives.

rcupdate.rcu_task_stall_timeout= [KNL]
Set timeout in jiffies for RCU task stall warning
messages. Disable with a value less than or equal
5 changes: 5 additions & 0 deletions kernel/rcu/update.c
Original file line number Diff line number Diff line change
@@ -63,6 +63,9 @@ MODULE_ALIAS("rcupdate");
module_param(rcu_expedited, int, 0);
module_param(rcu_normal, int, 0);

static int rcu_normal_after_boot;
module_param(rcu_normal_after_boot, int, 0);

#if defined(CONFIG_DEBUG_LOCK_ALLOC) && defined(CONFIG_PREEMPT_COUNT)
/**
* rcu_read_lock_sched_held() - might we be in RCU-sched read-side critical section?
@@ -178,6 +181,8 @@ void rcu_end_inkernel_boot(void)
{
if (IS_ENABLED(CONFIG_RCU_EXPEDITE_BOOT))
rcu_unexpedite_gp();
if (rcu_normal_after_boot)
WRITE_ONCE(rcu_normal, 1);
}

#ifdef CONFIG_PREEMPT_RCU

0 comments on commit 3e42ec1

Please sign in to comment.