Commit ce133890 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

Merge branch 'exp.2022.05.11a' into HEAD

exp.2022.05.11a: Expedited-grace-period latency-reduction updates.
parents be05ee54 9621fbee
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -162,6 +162,26 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
	Stall-warning messages may be enabled and disabled completely via
	/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.

CONFIG_RCU_EXP_CPU_STALL_TIMEOUT
--------------------------------

	Same as the CONFIG_RCU_CPU_STALL_TIMEOUT parameter but only for
	the expedited grace period. This parameter defines the period
	of time that RCU will wait from the beginning of an expedited
	grace period until it issues an RCU CPU stall warning. This time
	period is normally 20 milliseconds on Android devices.	A zero
	value causes the CONFIG_RCU_CPU_STALL_TIMEOUT value to be used,
	after conversion to milliseconds.

	This configuration parameter may be changed at runtime via the
	/sys/module/rcupdate/parameters/rcu_exp_cpu_stall_timeout, however
	this parameter is checked only at the beginning of a cycle. If you
	are in a current stall cycle, setting it to a new value will change
	the timeout for the -next- stall.

	Stall-warning messages may be enabled and disabled completely via
	/sys/module/rcupdate/parameters/rcu_cpu_stall_suppress.

RCU_STALL_DELAY_DELTA
---------------------

+12 −0
Original line number Diff line number Diff line
@@ -4893,6 +4893,18 @@

	rcupdate.rcu_cpu_stall_timeout= [KNL]
			Set timeout for RCU CPU stall warning messages.
			The value is in seconds and the maximum allowed
			value is 300 seconds.

	rcupdate.rcu_exp_cpu_stall_timeout= [KNL]
			Set timeout for expedited RCU CPU stall warning
			messages.  The value is in milliseconds
			and the maximum allowed value is 21000
			milliseconds. Please note that this value is
			adjusted to an arch timer tick resolution.
			Setting this to zero causes the value from
			rcupdate.rcu_cpu_stall_timeout to be used (after
			conversion from seconds to milliseconds).

	rcupdate.rcu_expedited= [KNL]
			Use expedited grace-period primitives, for
+14 −0
Original line number Diff line number Diff line
@@ -220,6 +220,20 @@ config RCU_BOOST_DELAY

	  Accept the default if unsure.

config RCU_EXP_KTHREAD
	bool "Perform RCU expedited work in a real-time kthread"
	depends on RCU_BOOST && RCU_EXPERT
	default !PREEMPT_RT && NR_CPUS <= 32
	help
	  Use this option to further reduce the latencies of expedited
	  grace periods at the expense of being more disruptive.

	  This option is disabled by default on PREEMPT_RT=y kernels which
	  disable expedited grace periods after boot by unconditionally
	  setting rcupdate.rcu_normal_after_boot=1.

	  Accept the default if unsure.

config RCU_NOCB_CPU
	bool "Offload RCU callback processing from boot-selected CPUs"
	depends on TREE_RCU
+14 −0
Original line number Diff line number Diff line
@@ -82,6 +82,20 @@ config RCU_CPU_STALL_TIMEOUT
	  RCU grace period persists, additional CPU stall warnings are
	  printed at more widely spaced intervals.

config RCU_EXP_CPU_STALL_TIMEOUT
	int "Expedited RCU CPU stall timeout in milliseconds"
	depends on RCU_STALL_COMMON
	range 0 21000
	default 20 if ANDROID
	default 0 if !ANDROID
	help
	  If a given expedited RCU grace period extends more than the
	  specified number of milliseconds, a CPU stall warning is printed.
	  If the RCU grace period persists, additional CPU stall warnings
	  are printed at more widely spaced intervals.  A value of zero
	  says to use the RCU_CPU_STALL_TIMEOUT value converted from
	  seconds to milliseconds.

config RCU_TRACE
	bool "Enable tracing for RCU"
	depends on DEBUG_KERNEL
+7 −0
Original line number Diff line number Diff line
@@ -210,7 +210,9 @@ static inline bool rcu_stall_is_suppressed_at_boot(void)
extern int rcu_cpu_stall_ftrace_dump;
extern int rcu_cpu_stall_suppress;
extern int rcu_cpu_stall_timeout;
extern int rcu_exp_cpu_stall_timeout;
int rcu_jiffies_till_stall_check(void);
int rcu_exp_jiffies_till_stall_check(void);

static inline bool rcu_stall_is_suppressed(void)
{
@@ -536,7 +538,12 @@ int rcu_get_gp_kthreads_prio(void);
void rcu_fwd_progress_check(unsigned long j);
void rcu_force_quiescent_state(void);
extern struct workqueue_struct *rcu_gp_wq;
#ifdef CONFIG_RCU_EXP_KTHREAD
extern struct kthread_worker *rcu_exp_gp_kworker;
extern struct kthread_worker *rcu_exp_par_gp_kworker;
#else /* !CONFIG_RCU_EXP_KTHREAD */
extern struct workqueue_struct *rcu_par_gp_wq;
#endif /* CONFIG_RCU_EXP_KTHREAD */
void rcu_gp_slow_register(atomic_t *rgssp);
void rcu_gp_slow_unregister(atomic_t *rgssp);
#endif /* #else #ifdef CONFIG_TINY_RCU */
Loading