1. Sep 29, 2011
    • Paul E. McKenney's avatar
      rcu: Restore checks for blocking in RCU read-side critical sections · b3fbab05
      Paul E. McKenney authored
      
      
      Long ago, using TREE_RCU with PREEMPT would result in "scheduling
      while atomic" diagnostics if you blocked in an RCU read-side critical
      section.  However, PREEMPT now implies TREE_PREEMPT_RCU, which defeats
      this diagnostic.  This commit therefore adds a replacement diagnostic
      based on PROVE_RCU.
      
      Because rcu_lockdep_assert() and lockdep_rcu_dereference() are now being
      used for things that have nothing to do with rcu_dereference(), rename
      lockdep_rcu_dereference() to lockdep_rcu_suspicious() and add a third
      argument that is a string indicating what is suspicious.  This third
      argument is passed in from a new third argument to rcu_lockdep_assert().
      Update all calls to rcu_lockdep_assert() to add an informative third
      argument.
      
      Also, add a pair of rcu_lockdep_assert() calls from within
      rcu_note_context_switch(), one complaining if a context switch occurs
      in an RCU-bh read-side critical section and another complaining if a
      context switch occurs in an RCU-sched read-side critical section.
      These are present only if the PROVE_RCU kernel parameter is enabled.
      
      Finally, fix some checkpatch whitespace complaints in lockdep.c.
      
      Again, you must enable PROVE_RCU to see these new diagnostics.  But you
      are enabling PROVE_RCU to check out new RCU uses in any case, aren't you?
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      b3fbab05
    • Paul E. McKenney's avatar
      rcu: Update documentation to flag RCU_BOOST trace information · d5988af5
      Paul E. McKenney authored
      
      
      Call out the RCU_TRACE information that is provided only in kernels
      built with RCU_BOOST.
      
      Signed-off-by: default avatarPaul E. McKenney <paul.mckenney@linaro.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      d5988af5
    • Shaohua Li's avatar
      rcu: Avoid unnecessary self-wakeup of per-CPU kthreads · 1eb52121
      Shaohua Li authored
      
      
      There are a number of cases where the RCU can find additional work
      for the per-CPU kthread within the context of that per-CPU kthread.
      In such cases, the per-CPU kthread is already running, so attempting
      to wake itself up does nothing except waste CPU cycles.  This commit
      therefore checks to see if it is in the per-CPU kthread context,
      omitting the wakeup in this case.
      
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      Signed-off-by: default avatarPaul E. McKenney <paul.mckenney@linaro.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      1eb52121
    • Eric Dumazet's avatar
      rcu: Use kthread_create_on_node() · 1f288094
      Eric Dumazet authored
      Commit a26ac245 (move TREE_RCU from softirq to kthread) added
      per-CPU kthreads.  However, kthread creation uses kthread_create(), which
      can put the kthread's stack and task struct on the wrong NUMA node.
      Therefore, use kthread_create_on_node() instead of kthread_create()
      so that the stacks and task structs are placed on the correct NUMA node.
      
      A similar change was carried out in commit 94dcf29a
      
       (kthread:
      use kthread_create_on_node()).
      
      Also change rcutorture's priority-boost-test kthread creation.
      
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: Tejun Heo <tj@kernel.org>
      CC: Rusty Russell <rusty@rustcorp.com.au>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: Andi Kleen <ak@linux.intel.com>
      CC: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      1f288094
  2. Sep 28, 2011
  3. Sep 27, 2011
  4. Sep 26, 2011
  5. Sep 24, 2011