RCU commits for 3.5
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(-)
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_HZfeature(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()andsrcu_barrier(). A major feature of this new implementation is thatsynchronize_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 wereposted 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.gitrcu/nextThanx, Paul
-------------------->
Dave Jones (1):
rcu: List-debug variants of rcu list routines.Jan Engelhardt (1):
rcu: Make__kfree_rcu()less dependent on compiler choicesLai Jiangshan (10):
rcu: Remove fast check path from__synchronize_srcu()
rcu: Increment upper bit only forsrcu_read_lock()
rcu: Flip ->completed only once per SRCU grace period
rcu: Improve SRCU'swait_idx()comments
rcu: Implement a variant of Peter's SRCU algorithm
rcu: Remove unusedsrcu_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-threadedcall_srcu()state machine
rcu: Add rcutorture test forcall_srcu()Michel Machado (1):
rcu: Replacelist_first_entry_rcu()withlist_first_or_null_rcu()Paul E. McKenney (20):
rcu: Clarify help text forRCU_BOOST_PRIO
rcu: Reduce cache-miss initialization latencies for large systems
rcu: Document kernel command-line parameters
rcu: Document whyrcu_blocking_is_gp()is safe
rcu: AddRCU_FAST_NO_HZtracing for idle exit
rcu: MakeRCU_FAST_NO_HZuse timer rather than hrtimer
rcu: MakeRCU_FAST_NO_HZaccount for pauses out of idle
rcu: Fixes to rcutorture error handling and cleanup
rcu: Add warning forRCU_FAST_NO_HZtimer firing
timer: Fixmod_timer_pinned()header comment
rcu: Introduce rcutorture testing forrcu_barrier()
rcu: Direct algorithmic SRCU implementation
rcu: Ensure thatRCU_FAST_NO_HZtimers expire on correct CPU
rcu: MovePREEMPT_RCUpreemption toswitch_to()invocation
rcu: Makeexit_rcu()more precise and consolidate
rcu: Update RCU maintainership
rcu: MakeRCU_FAST_NO_HZhandle timer migration
rcu: Explicitly initializeRCU_FAST_NO_HZper-CPU variables
rcu: Makercu_barrier()less disruptive
Merge branches 'barrier.2012.05.09a', 'fixes.2012.04.26a', 'inline.2012.05.02b' and 'srcu.2012.05.07b' into HEADDocumentation/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
Quoted 6 lines · Paul E. McKenney
4. Lai Jiangshan's algorithmic implementation of SRCU, which includes
call_srcu()andsrcu_barrier(). A major feature of this new implementation is thatsynchronize_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.