[PATCH tip/core/rcu 0/55] Preview of RCU changes for 3.2

From: Paul E. McKenney
Date: Wed Sep 07 2011 - 02:25:09 EST


Hello!

This patchset adds RCU event tracing, improved diagnostics and
documentation, and fixes a number of bugs, including several from an
ongoing top-to-bottom inspection of RCU. The patches are as follows:

1. Place per-CPU kthreads' stack and task struct on the corresponding
node on NUMA systems (courtesy of Eric Dumazet).
2. Avoid unnecessary self-wakeups for per-CPU kthreads
(courtesy of Shaohua Li).
3,6,10,12,25,28,33.
Documentations updates (some courtesy Wanlong Gao).
4. Add replacement checks for blocking within an RCU read-side
critical section.
5. Header-file untangling part 1 of N: move rcu_head to types.h.
7. Fix mismatched variable declaration (courtesy of Andi Kleen).
8. Abstract out common grace-period-primitive code.
9. Update rcutorture to test newish RCU API members.
11. Drive RCU algorithm selection directly from SMP and PREEMPT.
13. Make rcu_torture_boost() wait for callbacks before telling
debug-objects that they are done.
14-17,20,22.
Add event tracing for RCU.
18. Update comments to reflect kthreads being used only when
RCU priority boosting is enabled.
19. Move RCU_BOOSt data declarations to alow compiler to detect
mismatches.
20. Make TINY_RCU use softirqs for RCU_BOOST=n.
23. Simplify quiescent-state accounting.
24. Stop passing rcu_read_lock_held() to rcu_dereference_protected()
(courtesy of Michal Hocko).
26. Remove unused and redundant RCU API members.
27. Allow rcutorture's stat_interval parameter to be changed at runtime
to make it easier to test RCU in guest OSes.
28. Removed unused nohz_cpu_mask (courtesy of Alex Shi).
30. Eliminate in_irq() checks in rcu_enter_nohz().
31. Fix rcu_implicit_dynticks_qs() local-variable size mismatches.
32. Make rcu_assign_pointer() unconditionally emit memory barrier
to silence new gcc warnings (courtesy of Eric Dumazet).
34. Move __rcu_read_lock()'s barrier within if-statement.
35. Dump local stack for CPU stall warnings if cannot dump all stacks.
36. Prevent early-boot set_need_resched() from __rcu_pending().
37. Simplify unboosting checks.
38. Prohibit RCU grace periods during early boot.
39. Suppress NMI backtraces when CPU stall ends before dump.
40. Avoid just-online CPU needlessly rescheding itself.
41. Permit rt_mutex_unlock() with irqs disabled.
42-43. Prevent end-of-test rcutorture hangs.
44. Wire up RCU_BOOST_PRIO, use conventional kthread naming scheme
(courtesy of Mike Galbraith).
45. Check for entering dyntick-idle in RCU read-side critical section.
46. Adjust RCU_FAST_NO_HZ to avoid false quiescent states.
47. Avoid concurrent end of old GP with start of new GP.
48. Strengthen powerpc value-returning atomic memory ordering.
49-51. Detect illegal RCU use from dyntick-idle mode (courtesy of
Frederic Weisbecker).
52. Remove an unnecessary layer of abstraction from PROVE_RCU checking.
53. Detect illegal SRCU use from dyntick-idle mode.
54. Make SRCU use common lockdep-splat code.
55. Placeholder patch that disables illegal tracing from dyntick-idle
mode (illegal because tracing uses RCU).

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

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

Thanx, Paul

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

Documentation/RCU/NMI-RCU.txt | 4
Documentation/RCU/lockdep.txt | 24 +
Documentation/RCU/torture.txt | 3
Documentation/RCU/trace.txt | 34 +-
b/Documentation/RCU/NMI-RCU.txt | 2
b/Documentation/RCU/lockdep-splat.txt | 110 +++++++
b/Documentation/RCU/lockdep.txt | 10
b/Documentation/RCU/torture.txt | 134 +++++++--
b/Documentation/RCU/trace.txt | 4
b/arch/powerpc/include/asm/synch.h | 6
b/arch/powerpc/platforms/pseries/lpar.c | 6
b/include/linux/lockdep.h | 2
b/include/linux/rcupdate.h | 28 +
b/include/linux/rcutiny.h | 16 +
b/include/linux/rcutree.h | 2
b/include/linux/sched.h | 1
b/include/linux/srcu.h | 25 +
b/include/linux/types.h | 10
b/include/trace/events/rcu.h | 98 ++++++
b/init/Kconfig | 6
b/kernel/lockdep.c | 84 +++--
b/kernel/pid.c | 4
b/kernel/rcu.h | 79 +++++
b/kernel/rcupdate.c | 21 +
b/kernel/rcutiny.c | 28 -
b/kernel/rcutiny_plugin.h | 14
b/kernel/rcutorture.c | 5
b/kernel/rcutree.c | 22 -
b/kernel/rcutree.h | 7
b/kernel/rcutree_plugin.h | 5
b/kernel/rcutree_trace.c | 2
b/kernel/rtmutex.c | 8
b/kernel/sched.c | 2
b/kernel/time/tick-sched.c | 6
include/linux/rcupdate.h | 420 ++++++++++++++---------------
include/linux/rcutiny.h | 4
include/linux/sched.h | 3
include/linux/srcu.h | 5
include/trace/events/rcu.h | 449 ++++++++++++++++++++++++++++----
kernel/lockdep.c | 20 +
kernel/rcu.h | 16 -
kernel/rcupdate.c | 22 +
kernel/rcutiny.c | 139 +++------
kernel/rcutiny_plugin.h | 120 ++++++--
kernel/rcutorture.c | 72 ++---
kernel/rcutree.c | 313 +++++++++++++++-------
kernel/rcutree.h | 10
kernel/rcutree_plugin.h | 150 +++++-----
kernel/rcutree_trace.c | 13
kernel/sched.c | 11
50 files changed, 1761 insertions(+), 818 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/