Skip to content

RFC Miscellaneous RCU fixes for 3.5

Paul E. McKenney lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest6 patches 25 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6rcu: Stabilize use of num_online_cpus() for GP short circuitinclude/linux/rcutree.h+6 -14 replies
2/6rcu: List-debug variants of rcu list routines.include/linux/rculist.h lib/list_debug.c+28 -10 replies
3/6rcu: Replace list_first_entry_rcu() with list_first_or_null_rcu()include/linux/rculist.h+29 -40 replies
4/6rcu: Clarify help text for RCU_BOOST_PRIOinit/Kconfig+19 -42 replies
5/6rcu: Make __kfree_rcu() less dependent on compiler choicesinclude/linux/rcupdate.h+18 -03 replies
6/6rcu: Reduce cache-miss initialization latencies for large systemsinit/Kconfig kernel/rcutree.c kernel/rcutree.h+31 -816 replies

Reviews trailers per patch

1 of 6 patches has a Reviewed-by or Acked-by.

PatchJosh Triplett
1/6
2/6
3/6
4/6
5/6R-b
6/6

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 RFC 0/6] Miscellaneous RCU fixes for 3.5

Hello!

This series includes several miscellaneous fixes for RCU as follows:

1. Make the rcu_blocking_is_gp() function properly guard against
concurrent CPU-hotplug operations.
2. Make __list_add_rcu() do pointer checks like __list_add() does,
courtesy of Dave Jones.
3. Replace the "unsafe at any speed" list_first_entry_rcu() macro
with a safe and sane list_first_or_null_rcu(), courtesy of Michel Machado.
4. Clarify help text for the RCU_BOOST_PRIO kernel config parameter.
5. Convert __kfree_rcu() from an inline function to a macro in order
to avoid spurious build failures should gcc fail to inline it. Courtesy of Jan Engelhardt.
6. Reduce cache-miss initialization latencies for large systems.
Given the widespread use of NR_CPUS=4096, there are a lot of large systems out there.

Thanx, Paul

 b/include/linux/rculist.h  |    7 ++++++-
 b/include/linux/rcupdate.h |   18 ++++++++++++++++++
 b/include/linux/rcutree.h  |    7 ++++++-
 b/init/Kconfig             |   23 +++++++++++++++++++----
 b/kernel/rcutree.c         |    2 +-
 b/kernel/rcutree.h         |   10 +++-------
 b/lib/list_debug.c         |   22 ++++++++++++++++++++++
 include/linux/rculist.h    |   33 +++++++++++++++++++++++++++++----
 init/Kconfig               |   27 +++++++++++++++++++++++++++
 9 files changed, 131 insertions(+), 18 deletions(-)