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

From: Paul E. McKenney
Date: Mon Oct 24 2011 - 08:36:50 EST


On Sun, Oct 16, 2011 at 07:06:13PM -0700, Josh Triplett wrote:
> On Tue, Sep 06, 2011 at 11:00:15AM -0700, Paul E. McKenney wrote:
> > 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).
>
> I responded to a few of the patches with comments and potential issues.
> I also don't consider myself qualified to review patch 48/55, "powerpc:
> strengthen value-returning-atomics memory barriers". For the rest:
>
> Reviewed-by: Josh Triplett <josh@xxxxxxxxxxxxxxxx>

Thank you very much for your review and comments!!!

Thanx, Paul

--
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/