Skip to content

RFC RCU commits for 3.4

Paul E. McKenney linux-scsi linux-wireless lkml netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest41 patches 62 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/41rcu: Bring RTFP.txt up to date.Documentation/RCU/RTFP.txt+1758 -1526 replies
2/41rcu: Improve synchronize_rcu() diagnosticsinclude/linux/rcutree.h+1 -00 replies
3/41rcu: Add lockdep-RCU checks for simple self-deadlockkernel/rcutiny.c kernel/rcutiny_plugin.h kernel/rcutree.c +2 more+20 -06 replies
4/41rcu: Add diagnostic for misaligned rcu_head structureskernel/rcutree.c+1 -05 replies
5/41rcu: Avoid waking up CPUs having only kfree_rcu() callbacksinclude/linux/rcupdate.h include/linux/rcutiny.h include/linux/rcutree.h +7 more+153 -472 replies
6/41rcu: Move RCU_TRACE to lib/Kconfig.debuginit/Kconfig lib/Kconfig.debug+9 -92 replies
7/41s390: Convert call_rcu() to kfree_rcu()arch/s390/kernel/irq.c+1 -80 replies
8/41tcm_fc: Convert call_rcu() to kfree_rcu()drivers/target/tcm_fc/tfc_sess.c+1 -110 replies
9/41ipv4: Convert call_rcu() to kfree_rcu()net/ipv4/cipso_ipv4.c+3 -81 reply
10/41ipv4: Convert call_rcu() to kfree_rcu()net/ipv4/ip_sockglue.c+1 -63 replies
11/41mac80211: Convert call_rcu() to kfree_rcu()net/mac80211/mesh_pathtbl.c+1 -70 replies
12/41rcu: Simplify offline processingkernel/rcutree.c kernel/rcutree.h kernel/rcutree_plugin.h+90 -990 replies
13/41rcu: Make rcutorture flag online/offline failureskernel/rcutorture.c+4 -02 replies
14/41rcu: Limit lazy-callback durationkernel/rcutree_plugin.h+11 -14 replies
15/41rcu: Check for callback invocation from offline CPUskernel/rcutree.c+1 -00 replies
16/41rcu: Don't make callbacks go through second full grace periodkernel/rcutree.c+46 -60 replies
17/41rcu: Remove single-rcu_node optimization in rcu_start_gp()kernel/rcutree.c+0 -182 replies
18/41rcu: Protect __rcu_read_unlock() against scheduler-using irq handlerskernel/rcutiny_plugin.h+35 -80 replies
19/41rcu: Streamline code produced by __rcu_read_unlock()kernel/rcutiny_plugin.h+1 -10 replies
20/41rcu: Prevent RCU callbacks from executing before scheduler initializedinclude/linux/rcutiny.h kernel/rcutiny_plugin.h+12 -70 replies
21/41rcu: Inform RCU of irq_exit() activitykernel/rcutiny_plugin.h+1 -12 replies
22/41rcu: Simplify unboosting checksinclude/linux/sched.h kernel/rcutiny_plugin.h+7 -63 replies
23/41rcu: Clean up straggling rcu_preempt_needs_cpu() namekernel/rcutree.c kernel/rcutree.h kernel/rcutree_plugin.h+6 -60 replies
24/41rcu: Check for idle-loop entry while in RCU read-side critical sectionkernel/rcutree.c+14 -02 replies
25/41rcu: Make rcu_sleep_check() also check rcu_lock_mapinclude/linux/rcupdate.h+14 -00 replies
26/41rcu: Note that rcu_access_pointer() can be used for teardowninclude/linux/rcupdate.h+7 -00 replies
27/41rcu: Remove #ifdef CONFIG_SMP from TREE_RCUkernel/rcutree.c kernel/rcutree_plugin.h+0 -310 replies
28/41rcu: Set RCU CPU stall times via sysfskernel/rcutree.c kernel/rcutree.h+26 -110 replies
29/41rcu: Print scheduling-clock information on RCU CPU stall-warning messageskernel/rcutree.c kernel/rcutree.h kernel/rcutree_plugin.h +1 more+194 -140 replies
30/41rcutorture: Permit holding off CPU-hotplug operations during bootDocumentation/RCU/torture.txt kernel/rcutorture.c+22 -52 replies
31/41rcu: Add CPU-stall capability to rcutortureDocumentation/RCU/torture.txt kernel/rcutorture.c+81 -04 replies
32/41rcu: Update stall-warning documentationDocumentation/RCU/stallwarn.txt+79 -64 replies
33/41rcu: Make boolean rcutorture parameters be of type "bool"kernel/rcutorture.c+2 -20 replies
34/41rcu: Check for illegal use of RCU from offlined CPUsinclude/linux/rcupdate.h include/linux/srcu.h kernel/rcupdate.c +2 more+61 -40 replies
35/41rcu: Move synchronize_sched_expedited() to rcutree.ckernel/rcutree.c kernel/rcutree_plugin.h+117 -1160 replies
36/41rcu: No interrupt disabling for rcu_prepare_for_idle()kernel/rcutree_plugin.h+1 -170 replies
37/41lockdep: Add CPU-idle/offline warning to lockdep-RCU splatkernel/lockdep.c+7 -13 replies
38/41rcu: Rework detection of use of RCU by offline CPUskernel/rcutree.c kernel/rcutree_plugin.h+61 -333 replies
39/41rcu: Wait at least a jiffy before declaring a CPU to be offlineDocumentation/RCU/trace.txt kernel/rcutree.c kernel/rcutree.h +1 more+26 -382 replies
40/41rcu: Call out dangers of expedited RCU primitivesDocumentation/RCU/checklist.txt include/linux/rcutree.h kernel/rcutree.c +2 more+77 -220 replies
41/41rcu: Trace only after NULL-pointer checkkernel/rcutorture.c+2 -20 replies

Reviews trailers per patch

4 of 41 patches have a Reviewed-by or Acked-by.

PatchDavid HowellsDavid S. MillerJosh Triplett
1/41
2/41
3/41
4/41
5/41
6/41
7/41
8/41
9/41A-b
10/41A-b
11/41
12/41
13/41
14/41
15/41
16/41
17/41R-b
18/41
19/41
20/41
21/41
22/41
23/41
24/41
25/41
26/41A-b
27/41
28/41
29/41
30/41
31/41
32/41
33/41
34/41
35/41
36/41
37/41
38/41
39/41
40/41
41/41

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v1 thread

Cover letter [PATCH RFC 0/41] RCU commits for 3.4

Hello!

This patchset makes RCU more aggressive about entering dyntick-idle mode in order to improve energy efficiency, converts a few more call_rcu()s to kfree_rcu(), applies a number of rcutree fixes and cleanups to rcutiny, removes CONFIG_SMP #ifdef from treercu, allows RCU CPU stall times to be set via sysfs, add CPU-stall capability to rcutorture, adds more RCU-abuse diagnostics, updates documentation, and yet more fixes from the still-ongoing top-to-bottom inspection of RCU with a special focus on the CPU-hotplug code path. The patches are as follows:

1,26,41,40.
Documentation upgrades.
2. Improve synchronize_rcu() diagnostics, courtesy of
Frederic Weisbecker.
3. Add lockdep-RCU checks for simple self deadlock, such as calling
synchronize_rcu() while in an RCU read-side critical section.
4. Add a diagnostic for misaligned rcu_head structures. This is
preparation for a call_rcu_lazy() for added energy efficiency.
5,14,36.
Upgrades to CONFIG_RCU_FAST_NO_HZ.
6. Move CONFIG_RCU_TRACE to lib/Kconfig.debug: not for production use.
7-11. Convert several call_rcu() primitives to kfree_rcu().
12,13,15,16,37-39.
Fixes to and streamlining of CPU-hotplug handling based on review.
17. Remove dubious single-rcu_node optimization from rcu_start_gp().
18-22. Apply prior rcutree fixes to rcutiny.
23. Catch rcu_preempt_needs_cpu()'s name up with 2011.
24. Check for idle-loop entry while in an RCU read-side critical section.
25. Check for sleeping in TREE_RCU read-side critical sections.
27,35. Remove "#ifdef CONFIG_SMP" from treercu, move code accordingly.
28. Allow RCU CPU stall times to be adjusted at runtime via sysfs.
29. Print scheduling-clock timer information on RCU CPU stall warning
messages if requested by CONFIG_RCU_CPU_STALL_INFO config parameter.
30. Allow rcutorture to be told to hold off CPU-hotplug operations during
early boot.
31. Allow rcutorture to generate CPU stalls in order to test RCU CPU
stall warning facility.
33. Silence module-parameter warnings by converting a couple of
rcutorture's module parameters to bool.
34. Check for illegal use of RCU from offlined CPUs.
41. Fix misplaced NULL-pointer check in rcutorture.

For a testing-only version of this patchset from git, please see the following subject-to-rebase branch:

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/dev

Thanx, Paul

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

 Documentation/RCU/torture.txt      |   18 
 b/Documentation/RCU/RTFP.txt       | 1910 ++++++++++++++++++++++++++++++++++---
 b/Documentation/RCU/checklist.txt  |   14 
 b/Documentation/RCU/stallwarn.txt  |   85 +
 b/Documentation/RCU/torture.txt    |   15 
 b/Documentation/RCU/trace.txt      |   36 
 b/arch/s390/kernel/irq.c           |    9 
 b/drivers/target/tcm_fc/tfc_sess.c |   12 
 b/include/linux/rcupdate.h         |    2 
 b/include/linux/rcutiny.h          |    6 
 b/include/linux/rcutree.h          |    1 
 b/include/linux/sched.h            |    3 
 b/include/linux/srcu.h             |   11 
 b/include/trace/events/rcu.h       |   63 -
 b/init/Kconfig                     |    9 
 b/kernel/lockdep.c                 |    8 
 b/kernel/rcu.h                     |    4 
 b/kernel/rcupdate.c                |    5 
 b/kernel/rcutiny.c                 |    3 
 b/kernel/rcutiny_plugin.h          |    4 
 b/kernel/rcutorture.c              |    4 
 b/kernel/rcutree.c                 |    6 
 b/kernel/rcutree.h                 |    3 
 b/kernel/rcutree_plugin.h          |    3 
 b/kernel/rcutree_trace.c           |    8 
 b/kernel/srcu.c                    |    4 
 b/lib/Kconfig.debug                |    9 
 b/net/ipv4/cipso_ipv4.c            |   11 
 b/net/ipv4/ip_sockglue.c           |    7 
 b/net/mac80211/mesh_pathtbl.c      |    8 
 include/linux/rcupdate.h           |   40 
 include/linux/rcutiny.h            |    4 
 include/linux/rcutree.h            |   18 
 kernel/rcutiny.c                   |    4 
 kernel/rcutiny_plugin.h            |   72 +
 kernel/rcutorture.c                |   83 +
 kernel/rcutree.c                   |  641 ++++++++----
 kernel/rcutree.h                   |   24 
 kernel/rcutree_plugin.h            |  443 +++++---
 kernel/rcutree_trace.c             |    6 
 kernel/srcu.c                      |   27 
 lib/Kconfig.debug                  |   14 
 42 files changed, 2954 insertions(+), 703 deletions(-)