[GIT PULL rcu/urgent] fixes and breakup of memory-barrier-decreasepatch

From: Paul E. McKenney
Date: Thu May 26 2011 - 16:55:46 EST


Hello, Ingo,

This pull requests covers some RCU bug fixes and one patch rework.

Frederic Weisbecker fixed an unpaired rcu_irq_enter() from locking
selftests, which was confusing RCU into thinking that CPUs were active
when they were actually in dyntick-idle state, which resulted in hangs
or near-hangs due to RCU grace periods completing too slowly.

The first five of my patches re-applies the infamous now-reverted
"Decrease memory-barrier usage based on semi-formal proof" commit into
five commits. Frederic's fix gets rid of the problem that caused this
commit to be reverted.

Another commit, "Avoid build error for third-party modules", fixes a
build error reported by Randy Dunlap.

The next pair of commits, "Add atomic_or()" and "Avoid acquiring
rcu_node locks in timer functions", fix a lockdep splat reported by
Valdis Kletnieks.

Peter Zijlstra simplified RCU kthread wakeup processing (located while
chasing some scheduler issues), and my last commit avoids some softlockup
splats reported by Yinghai Lu.

Work left to be done includes fixing some performance regressions reported
by Yinghai Lu and providing a few assembly versions of atomic_or().

These changes are available in the -rcu git repository at:

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

Thanx, Paul

------------------>

Frederic Weisbecker (1):
rcu: Fix unpaired rcu_irq_enter() from locking selftests

Paul E. McKenney (9):
rcu: Add memory barriers
rcu: Remove old memory barriers from rcu_process_callbacks()
rcu: Don't do reschedule unless in irq
rcu: Make rcu_enter_nohz() pay attention to nesting
rcu: Decrease memory-barrier usage based on semi-formal proof
rcu: Avoid build error for third-party modules
atomic: Add atomic_or()
rcu: Avoid acquiring rcu_node locks in timer functions
rcu: Start RCU kthreads in TASK_INTERRUPTIBLE state

Peter Zijlstra (1):
rcu: Remove waitqueue usage for cpu, node, and boost kthreads

Documentation/RCU/trace.txt | 17 ++---
include/linux/atomic.h | 13 ++++
include/linux/rcupdate.h | 5 +-
kernel/rcutree.c | 164 ++++++++++++++++++-------------------------
kernel/rcutree.h | 30 ++++----
kernel/rcutree_plugin.h | 24 ++-----
kernel/rcutree_trace.c | 12 ++--
lib/locking-selftest.c | 2 +-
8 files changed, 116 insertions(+), 151 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/