Skip to content

RCU Kconfig fixes for v4.2

Paul E. McKenney lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest12 patches 7 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12rcu: Directly drive TASKS_RCU from Kconfiginit/Kconfig lib/Kconfig.debug+2 -30 replies
2/12rcutorture: TASKS_RCU set directly, so don't explicitly set ittools/testing/selftests/rcutorture/configs/rcu/TASKS01 tools/testing/selftests/rcutorture/configs/rcu/TASKS02 tools/testing/selftests/rcutorture/configs/rcu/TASKS03+0 -30 replies
3/12rcu: Directly drive RCU_USER_QS from Kconfiginit/Kconfig+1 -90 replies
4/12rcu: Covert CONFIG_RCU_FANOUT_EXACT to boot parameterDocumentation/kernel-parameters.txt init/Kconfig kernel/rcu/tree.c +1 more+12 -170 replies
5/12rcutorture: Update configuration fragments for rcutree.rcu_fanout_exacttools/testing/selftests/rcutorture/configs/rcu/TREE02 tools/testing/selftests/rcutorture/configs/rcu/TREE02-T tools/testing/selftests/rcutorture/configs/rcu/TREE03 +9 more+3 -92 replies
6/12rcu: Enable diagnostic dump of rcu_node combining treeDocumentation/kernel-parameters.txt kernel/rcu/tree.c+32 -00 replies
7/12rcu: Create RCU_EXPERT Kconfig and hide booleans behind itinit/Kconfig+19 -40 replies
8/12rcutorture: Make rcutorture scripts force RCU_EXPERTtools/testing/selftests/rcutorture/configs/rcu/SRCU-N tools/testing/selftests/rcutorture/configs/rcu/TASKS01 tools/testing/selftests/rcutorture/configs/rcu/TREE01 +7 more+10 -00 replies
9/12rcu: Break dependency of RCU_FANOUT_LEAF on RCU_FANOUTinit/Kconfig+4 -22 replies
10/12rcu: Make RCU able to tolerate undefined CONFIG_RCU_FANOUTinit/Kconfig kernel/rcu/tree.c kernel/rcu/tree.h +1 more+20 -90 replies
11/12rcu: Make RCU able to tolerate undefined CONFIG_RCU_FANOUT_LEAFinit/Kconfig kernel/rcu/tree.c kernel/rcu/tree.h +1 more+19 -92 replies
12/12rcu: Make RCU able to tolerate undefined CONFIG_RCU_KTHREAD_PRIOinit/Kconfig kernel/rcu/tree.c+5 -00 replies

Reviews trailers per patch

None of the 12 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchPranith Kumar
SeriesR-b
1/12
2/12
3/12
4/12
5/12
6/12
7/12
8/12
9/12
10/12
11/12
12/12

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH tip/core/rcu 0/12] RCU Kconfig fixes for v4.2

Hello!

This patch series reduces the number of questions that RCU asks Kconfig users. After this series is applied, removing the RCU-related definitions from .config and running "make oldconfig" results in only the following:

RCU Implementation

Quoted 1 line

1. Tree-based hierarchical RCU (TREE_RCU) (NEW)

choice[1]: 1
Make expert-level adjustments to RCU configuration (RCU_EXPERT) [N/y/?] (NEW)

Those expert users wishing to tune RCU answer Y to this question.

The patches in this series are as follows:

1. Drive TASKS_RCU directly from Kconfig, for example, by having
RCU_TORTURE_TESTS select it.

2. Remove CONFIG_TASKS_RCU=y from the three TASKS_RCU test
scenarios, since this is set by virtue of having rcutorture configured.

3. Drive RCU_USER_QS directly from Kconfig, relying on the fact
that NO_HZ_FULL selects it.

4. Convert CONFIG_RCU_FANOUT_EXACT to a boot parameter, where it
is used by rcutorture.

5. Update rcutorture test scenarios to use the boot parameter
created in #4 instead of the Kconfig parameter.

6. Create a boot parameter to do a diagnostic dump of the shape
of the rcu_node combining tree, which is useful for verifying that intended changes to that tree actually happened.

7. Create an RCU_EXPERT Kconfig parameter and hide the
RCU_FAST_NO_HZ, RCU_BOOST, CONTEXT_TRACKING_FORCE, and RCU_NOCB_CPU boolean parameters behind it.

8. Make rcutorture test scenarios force RCU_EXPERT, but have
SRCU-P, TASKS03, and TREE09 retain !RCU_EXPERT in order to test the vanilla configuration.

9. Remove the dependency of RCU_FANOUT_LEAF on RCU_FANOUT.

10. Change RCU to allow it to tolerate an undefined RCU_FANOUT,
and then hide RCU_FANOUT behind RCU_EXPERT.

11. Change RCU to allow it to tolerate an undefined RCU_FANOUT_LEAF,
and then hide RCU_FANOUT_LEAF behind RCU_EXPERT.

12. Change RCU to allow it to tolerate an undefined RCU_KTHREAD_PRIO,
and then hide RCU_KTHREAD_PRIO behind RCU_EXPERT.

Thanx, Paul

------------------------------------------------------------------------

 b/Documentation/kernel-parameters.txt                          |   11 +
 b/init/Kconfig                                                 |   62 ++++------
 b/kernel/rcu/tree.c                                            |   50 ++++++--
 b/kernel/rcu/tree.h                                            |   29 ++++
 b/kernel/rcu/tree_plugin.h                                     |   14 +-
 b/lib/Kconfig.debug                                            |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N        |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS01       |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS03       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE01        |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02-T      |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE03        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06.boot   |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE07        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08        |    2 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08-T      |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08-T.boot |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot   |    1 
 23 files changed, 127 insertions(+), 65 deletions(-)