Skip to contentSkip to conversation

RCU commits for 3.5

GIT PULL Paul E. McKenney 3 participants 3 messages May 11, 2012 – May 14, 2012

lore
Share & tools
lore
#0 lore raw

Hello, Ingo,

The major features of this series are:

1. A set of improvements and fixes to the RCU_FAST_NO_HZ feature

	(with more on the way for 3.6).  Posted to LKML:
	https://lkml.org/lkml/2012/4/23/324 (commits 1-3 and 5), 
	https://lkml.org/lkml/2012/4/16/611 (commit 4),
	https://lkml.org/lkml/2012/4/30/390 (commit 6), and
	https://lkml.org/lkml/2012/5/4/410 (commit 7, combined with
	the other commits for the convenience of the tester).
2.	Changes to make rcu_barrier() avoid disrupting execution of CPUs
	that have no RCU callbacks.  Posted to LKML:
	https://lkml.org/lkml/2012/4/23/322.

3. A couple of commits that improve the efficiency of the interaction
between preemptible RCU and the scheduler, these two being all that survived an abortive attempt to allow preemptible RCU's __rcu_read_lock() to be inlined. The full set was posted to LKML at https://lkml.org/lkml/2012/4/14/143, and the first and third patches of that set remain.
4. Lai Jiangshan's algorithmic implementation of SRCU, which includes
call_srcu() and srcu_barrier(). A major feature of this new implementation is that synchronize_srcu() no longer disturbs the execution of other CPUs. This work is based on earlier implementations by Peter Zijlstra and myself. Posted to
LKML: https://lkml.org/lkml/2012/2/22/82.
5. A number of miscellaneous bug fixes and improvements which were

	posted to LKML at: https://lkml.org/lkml/2012/4/23/353 with
	subsequent updates posted to LKML.

#1 and #2 are combined onto one topic branch due to dependencies among the commits.

All of these have been exposed to -next testing.

These changes are available in the git repository at:

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

Thanx, Paul

-------------------->
Dave Jones (1):
rcu: List-debug variants of rcu list routines.

Jan Engelhardt (1):
rcu: Make __kfree_rcu() less dependent on compiler choices

Lai Jiangshan (10):
rcu: Remove fast check path from __synchronize_srcu()
rcu: Increment upper bit only for srcu_read_lock()
rcu: Flip ->completed only once per SRCU grace period
rcu: Improve SRCU's wait_idx() comments
rcu: Implement a variant of Peter's SRCU algorithm
rcu: Remove unused srcu_barrier()
rcu: Improve srcu_readers_active_idx()'s cache locality
rcu: Use single value to handle expedited SRCU grace periods
rcu: Implement per-domain single-threaded call_srcu() state machine
rcu: Add rcutorture test for call_srcu()

Michel Machado (1):
rcu: Replace list_first_entry_rcu() with list_first_or_null_rcu()

Paul E. McKenney (20):
rcu: Clarify help text for RCU_BOOST_PRIO
rcu: Reduce cache-miss initialization latencies for large systems
rcu: Document kernel command-line parameters
rcu: Document why rcu_blocking_is_gp() is safe
rcu: Add RCU_FAST_NO_HZ tracing for idle exit
rcu: Make RCU_FAST_NO_HZ use timer rather than hrtimer
rcu: Make RCU_FAST_NO_HZ account for pauses out of idle
rcu: Fixes to rcutorture error handling and cleanup
rcu: Add warning for RCU_FAST_NO_HZ timer firing
timer: Fix mod_timer_pinned() header comment
rcu: Introduce rcutorture testing for rcu_barrier()
rcu: Direct algorithmic SRCU implementation
rcu: Ensure that RCU_FAST_NO_HZ timers expire on correct CPU
rcu: Move PREEMPT_RCU preemption to switch_to() invocation
rcu: Make exit_rcu() more precise and consolidate
rcu: Update RCU maintainership
rcu: Make RCU_FAST_NO_HZ handle timer migration
rcu: Explicitly initialize RCU_FAST_NO_HZ per-CPU variables
rcu: Make rcu_barrier() less disruptive
Merge branches 'barrier.2012.05.09a', 'fixes.2012.04.26a', 'inline.2012.05.02b' and 'srcu.2012.05.07b' into HEAD

 Documentation/RCU/torture.txt       |   15 +-
 Documentation/kernel-parameters.txt |   88 ++++++-
 MAINTAINERS                         |   14 +-
 arch/um/drivers/mconsole_kern.c     |    1 +
 include/linux/rculist.h             |   40 +++-
 include/linux/rcupdate.h            |   20 ++
 include/linux/rcutiny.h             |   11 -
 include/linux/rcutree.h             |   19 --
 include/linux/sched.h               |   10 +
 include/linux/srcu.h                |   48 +++-
 include/trace/events/rcu.h          |    2 +
 init/Kconfig                        |   50 +++-
 kernel/rcupdate.c                   |   28 ++
 kernel/rcutiny_plugin.h             |   16 -
 kernel/rcutorture.c                 |  257 +++++++++++++++-
 kernel/rcutree.c                    |  332 ++++++++++++++++------
 kernel/rcutree.h                    |   23 +-
 kernel/rcutree_plugin.h             |  154 +++++++----
 kernel/rcutree_trace.c              |    4 +-
 kernel/sched/core.c                 |    1 +
 kernel/srcu.c                       |  548 +++++++++++++++++++++++++++-------
 kernel/timer.c                      |    8 +-
 lib/list_debug.c                    |   22 ++
 23 files changed, 1358 insertions(+), 353 deletions(-)
#1 lore raw
Quoted 101 lines · Paul E. McKenney

Hello, Ingo,

The major features of this series are:

1. A set of improvements and fixes to the RCU_FAST_NO_HZ feature

	(with more on the way for 3.6).  Posted to LKML:
	https://lkml.org/lkml/2012/4/23/324 (commits 1-3 and 5), 
	https://lkml.org/lkml/2012/4/16/611 (commit 4),
	https://lkml.org/lkml/2012/4/30/390 (commit 6), and
	https://lkml.org/lkml/2012/5/4/410 (commit 7, combined with
	the other commits for the convenience of the tester).
2.	Changes to make rcu_barrier() avoid disrupting execution of CPUs
	that have no RCU callbacks.  Posted to LKML:
	https://lkml.org/lkml/2012/4/23/322.

3. A couple of commits that improve the efficiency of the interaction
between preemptible RCU and the scheduler, these two being all that survived an abortive attempt to allow preemptible RCU's __rcu_read_lock() to be inlined. The full set was posted to LKML at https://lkml.org/lkml/2012/4/14/143, and the first and third patches of that set remain.
4. Lai Jiangshan's algorithmic implementation of SRCU, which includes
call_srcu() and srcu_barrier(). A major feature of this new implementation is that synchronize_srcu() no longer disturbs the execution of other CPUs. This work is based on earlier implementations by Peter Zijlstra and myself. Posted to
LKML: https://lkml.org/lkml/2012/2/22/82.
5. A number of miscellaneous bug fixes and improvements which were

	posted to LKML at: https://lkml.org/lkml/2012/4/23/353 with
	subsequent updates posted to LKML.

#1 and #2 are combined onto one topic branch due to dependencies among the commits.

All of these have been exposed to -next testing.

These changes are available in the git repository at:

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

Thanx, Paul

-------------------->
Dave Jones (1):
rcu: List-debug variants of rcu list routines.

Jan Engelhardt (1):
rcu: Make __kfree_rcu() less dependent on compiler choices

Lai Jiangshan (10):
rcu: Remove fast check path from __synchronize_srcu()
rcu: Increment upper bit only for srcu_read_lock()
rcu: Flip ->completed only once per SRCU grace period
rcu: Improve SRCU's wait_idx() comments
rcu: Implement a variant of Peter's SRCU algorithm
rcu: Remove unused srcu_barrier()
rcu: Improve srcu_readers_active_idx()'s cache locality
rcu: Use single value to handle expedited SRCU grace periods
rcu: Implement per-domain single-threaded call_srcu() state machine
rcu: Add rcutorture test for call_srcu()

Michel Machado (1):
rcu: Replace list_first_entry_rcu() with list_first_or_null_rcu()

Paul E. McKenney (20):
rcu: Clarify help text for RCU_BOOST_PRIO
rcu: Reduce cache-miss initialization latencies for large systems
rcu: Document kernel command-line parameters
rcu: Document why rcu_blocking_is_gp() is safe
rcu: Add RCU_FAST_NO_HZ tracing for idle exit
rcu: Make RCU_FAST_NO_HZ use timer rather than hrtimer
rcu: Make RCU_FAST_NO_HZ account for pauses out of idle
rcu: Fixes to rcutorture error handling and cleanup
rcu: Add warning for RCU_FAST_NO_HZ timer firing
timer: Fix mod_timer_pinned() header comment
rcu: Introduce rcutorture testing for rcu_barrier()
rcu: Direct algorithmic SRCU implementation
rcu: Ensure that RCU_FAST_NO_HZ timers expire on correct CPU
rcu: Move PREEMPT_RCU preemption to switch_to() invocation
rcu: Make exit_rcu() more precise and consolidate
rcu: Update RCU maintainership
rcu: Make RCU_FAST_NO_HZ handle timer migration
rcu: Explicitly initialize RCU_FAST_NO_HZ per-CPU variables
rcu: Make rcu_barrier() less disruptive
Merge branches 'barrier.2012.05.09a', 'fixes.2012.04.26a', 'inline.2012.05.02b' and 'srcu.2012.05.07b' into HEAD

 Documentation/RCU/torture.txt       |   15 +-
 Documentation/kernel-parameters.txt |   88 ++++++-
 MAINTAINERS                         |   14 +-
 arch/um/drivers/mconsole_kern.c     |    1 +
 include/linux/rculist.h             |   40 +++-
 include/linux/rcupdate.h            |   20 ++
 include/linux/rcutiny.h             |   11 -
 include/linux/rcutree.h             |   19 --
 include/linux/sched.h               |   10 +
 include/linux/srcu.h                |   48 +++-
 include/trace/events/rcu.h          |    2 +
 init/Kconfig                        |   50 +++-
 kernel/rcupdate.c                   |   28 ++
 kernel/rcutiny_plugin.h             |   16 -
 kernel/rcutorture.c                 |  257 +++++++++++++++-
 kernel/rcutree.c                    |  332 ++++++++++++++++------
Quoted 8 lines
 kernel/rcutree.h                    |   23 +-
 kernel/rcutree_plugin.h             |  154 +++++++----
 kernel/rcutree_trace.c              |    4 +-
 kernel/sched/core.c                 |    1 +
 kernel/srcu.c                       |  548 +++++++++++++++++++++++++++-------
 kernel/timer.c                      |    8 +-
 lib/list_debug.c                    |   22 ++
 23 files changed, 1358 insertions(+), 353 deletions(-)

Pulled, thanks a lot Paul!

Ingo

#2 lore raw
In reply to Paul E. McKenney
Quoted 6 lines · Paul E. McKenney

4. Lai Jiangshan's algorithmic implementation of SRCU, which includes
call_srcu() and srcu_barrier(). A major feature of this new implementation is that synchronize_srcu() no longer disturbs the execution of other CPUs. This work is based on earlier implementations by Peter Zijlstra and myself. Posted to
LKML: https://lkml.org/lkml/2012/2/22/82.

Great, thanks! I've been manually merging rcu/srcu for a while, I guess I can stop doing that now.