linux/kernel/rcu
Boqun Feng af06d4f74a rcuperf: Don't treat gp_exp mis-setting as a WARN
0day found a boot warning triggered in rcu_perf_writer() on !SMP kernel:

	WARN_ON(rcu_gp_is_normal() && gp_exp);

, the root cause of which is trying to measure expedited grace
periods(by setting gp_exp to true by default) when all the grace periods
are normal(TINY RCU only has normal grace periods).

However, such a mis-setting would only result in failing to measure the
performance for a specific kind of grace periods, therefore using a
WARN_ON to check this is a little overkilling. We could handle this
inside rcuperf module via some error messages to tell users about the
mis-settings.

Therefore this patch removes the WARN_ON in rcu_perf_writer() and
handles those checkings in rcu_perf_init() with plain if() code.

Moreover, this patch changes the default value of gp_exp to 1) align
with rcutorture tests and 2) make the default setting work for all RCU
implementations by default.

Suggested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Fixes: http://lkml.kernel.org/r/57411b10.mFvG0+AgcrMXGtcj%fengguang.wu@intel.com
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2016-06-14 16:03:31 -07:00
..
Makefile rcutorture: Add RCU grace-period performance tests 2016-03-31 13:37:38 -07:00
rcu.h
rcuperf.c rcuperf: Don't treat gp_exp mis-setting as a WARN 2016-06-14 16:03:31 -07:00
rcutorture.c torture: Remove CONFIG_RCU_TORTURE_TEST_RUNNABLE, simplify code 2016-06-14 16:02:15 -07:00
srcu.c rcu: Add rcu_normal kernel parameter to suppress expediting 2015-12-04 12:26:53 -08:00
sync.c rcu_sync: Cleanup the CONFIG_PROVE_RCU checks 2015-10-06 11:25:45 -07:00
tiny_plugin.h rcu: Make rcu/tiny_plugin.h explicitly non-modular 2016-02-23 19:59:55 -08:00
tiny.c rcu: Use rcu_callback_t in call_rcu*() and friends 2015-10-06 11:08:05 -07:00
tree_plugin.h torture: Remove CONFIG_RCU_TORTURE_TEST_RUNNABLE, simplify code 2016-06-14 16:02:15 -07:00
tree_trace.c rcu: Shorten expedited_workdone* to exp_workdone* 2016-03-31 13:34:08 -07:00
tree.c Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and 'torture.2016.04.21a' into HEAD 2016-04-21 13:48:20 -07:00
tree.h Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and 'torture.2016.04.21a' into HEAD 2016-04-21 13:48:20 -07:00
update.c debugobjects: insulate non-fixup logic related to static obj from fixup callbacks 2016-05-19 19:12:14 -07:00