RFC Preview of RCU changes for 3.3
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest28 patches 45 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/28 | powerpc: Strengthen value-returning-atomics memory barriersarch/ | +1 | 0 replies | |
| 2/28 | rcu: ->signaled better named ->fqs_statekernel/ kernel/ kernel/ | +11 | 0 replies | |
| 3/28 | rcu: Avoid RCU-preempt expedited grace-period botchkernel/ | +5 | 0 replies | |
| 4/28 | rcu: Make synchronize_sched_expedited() better at work sharingkernel/ | +1 | 0 replies | |
| 5/28 | lockdep: Update documentation for lock-class leak detectionDocumentation/ | +61 | 4 replies | |
| 6/28 | rcu: Track idleness independent of idle tasksDocumentation/ include/ include/ +7 more | +297 | 0 replies | |
| 7/28 | trace: Allow ftrace_dump() to be called from moduleskernel/ | +1 | 0 replies | |
| 8/28 | rcu: Add failure tracing to rcutortureinclude/ include/ kernel/ +1 more | +62 | 0 replies | |
| 9/28 | rcu: Document failing tick as cause of RCU CPU stall warningDocumentation/ | +5 | 2 replies | |
| 10/28 | rcu: Disable preemption in rcu_is_cpu_idle()kernel/ | +7 | 0 replies | |
| 11/28 | rcu: Omit self-awaken when setting up expedited grace periodkernel/ kernel/ kernel/ | +14 | 2 replies | |
| 12/28 | rcu: Detect illegal rcu dereference in extended quiescent stateinclude/ kernel/ kernel/ +1 more | +30 | 0 replies | |
| 13/28 | rcu: Inform the user about extended quiescent state on PROVE_RCU warningkernel/ | +22 | 0 replies | |
| 14/28 | rcu: Warn when rcu_read_lock() is used in extended quiescent stateinclude/ | +42 | 0 replies | |
| 15/28 | rcu: Remove one layer of abstraction from PROVE_RCU checkinginclude/ | +8 | 0 replies | |
| 16/28 | rcu: Warn when srcu_read_lock() is used in an extended quiescent stateinclude/ | +23 | 0 replies | |
| 17/28 | rcu: Make srcu_read_lock_held() call common lockdep-enabled functioninclude/ | +4 | 7 replies | |
| 18/28 | nohz: Separate out irq exit and idle loop dyntick logicarch/ arch/ arch/ +16 more | +99 | 0 replies | |
| 19/28 | nohz: Allow rcu extended quiescent state handling seperately from tick stoparch/ arch/ arch/ +15 more | +90 | 11 replies | |
| 20/28 | x86: Enter rcu extended qs after idle notifier callarch/ | +8 | 0 replies | |
| 21/28 | x86: Call idle notifier after irq_enter()arch/ arch/ arch/ +2 more | +9 | 0 replies | |
| 22/28 | rcu: Fix early call to rcu_idle_enter()kernel/ | +1 | 0 replies | |
| 23/28 | powerpc: Tell RCU about idle after hcall tracingarch/ arch/ | +18 | 0 replies | |
| 24/28 | rcu: Introduce bulk reference countinclude/ kernel/ | +52 | 11 replies | |
| 25/28 | rcu: Deconfuse dynticks entry-exit tracinginclude/ kernel/ kernel/ +1 more | +53 | 0 replies | |
| 26/28 | rcu: Add more information to the wrong-idle-task complaintkernel/ kernel/ | +20 | 0 replies | |
| 27/28 | rcu: Allow dyntick-idle mode for CPUs with callbackskernel/ kernel/ kernel/ | +132 | 2 replies | |
| 28/28 | rcu: Fix idle-task checkskernel/ kernel/ | +4 | 4 replies |
Reviews trailers per patch
1 of 28 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.
| Patch | Srikar Dronamraju | Steven Rostedt | Wu Fengguang | Josh Triplett |
|---|---|---|---|---|
| Series | R-b | |||
| 1/28 | ||||
| 2/28 | ||||
| 3/28 | ||||
| 4/28 | ||||
| 5/28 | ||||
| 6/28 | ||||
| 7/28 | ||||
| 8/28 | ||||
| 9/28 | ||||
| 10/28 | ||||
| 11/28 | ||||
| 12/28 | ||||
| 13/28 | ||||
| 14/28 | ||||
| 15/28 | ||||
| 16/28 | ||||
| 17/28 | ||||
| 18/28 | ||||
| 19/28 | ||||
| 20/28 | ||||
| 21/28 | ||||
| 22/28 | ||||
| 23/28 | ||||
| 24/28 | Requested-by T-b | |||
| 25/28 | ||||
| 26/28 | ||||
| 27/28 | ||||
| 28/28 | A-b | T-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.
Cover letter [PATCH RFC tip/core/rcu 0/28] Preview of RCU changes for 3.3
Hello!
This patchset permits idle tasks to use RCU read-side critical sections, although they are still prohibited between tick_nohz_idle_exit_norcu() and tick_nohz_idle_exit_norcu(); makes synchronize_sched_expedited() better able to share work among concurrent callers, allows ftrace_dump() to be invoked from modules, dumps tracing upon detection of an rcutorture failure, detects illegal use of RCU read-side critical sections from extended quiescent states, legitimizes the pre-existin use of RCU in the idle notifiers, fixes a memory-barrier botch, introduces an SRCU-like bulk reference count, improve dynticks entry/exit tracing, further improves RCU's ability to allow a given CPU to enter dyntick-idle mode quickly, fixes idle-task checks, updates documentation, and additional fixes from a still-ongoing top-to-bottom inspection of RCU. The patches are as follows:
1. Strengthen memory barriers used in PowerPC value-returning
atomics and locking primitives. It is likely that this commit will be superseded by something from the powerpc maintainers. The need for this strengthening was validated by tooling from Peter Sewell's group at the University of Cambridge.
2. Rename ->signaled to ->fqs_state to clarify the code.
3. Fix a race that could permit RCU-preempt expedited grace
periods to complete too soon.
4. Improve synchronize_sched_expedited()'s ability to share work
among concurrent callers.
5. Document the troubleshooting of lockdep lock-class leaks.
6. Explicitly track idleness, which is a step towards permitting
the idle tasks to contain RCU read-side critical sections (but only outside the body of the idle loop).
7,8. Add an EXPORT_SYMBOL_GPL() for ftrace_dump() so that
rcutorture can dump the trace buffer upon detection of an error, and then make rcutorture do the dumping.
9. Document a failing scheduling-clock tick as yet another
possible cause of RCU CPU stall warnings.
10. Disable preemption in rcu_is_cpu_idle() in order to prevent
spurious lockdep-RCU splats.
11. Remove a useless self-awaken when setting up expedited grace
periods, courtesy of Thomas Gleixner and the -rt effort.
12-17. Make lockdep-RCU warn when RCU read-side primitives are
invoked from an idle RCU extended quiescent state, mostly courtesy of Frederic Weisbecker.
18-23. Separate out the scheduler-clock tick's idea of dyntick
idle from RCU's notion of an idle extended quiescent state, mostly courtesy of Frederic Weisbecker. These commits are needed for Frederic's work to suppress the scheduler-clock tick when there is but one runnable task on a given CPU.
24. Introduce a bulk reference count, which is related to SRCU,
but which allows a reference to be acquired in an irq handler and released by the task that was interrupted.
25-26. Improve dyntick-idle tracing and diagnostics.
27. Allow CPUs with pending RCU callbacks to enter dyntick-idle
mode. Beware this commit, as it compiled and passed rcutorture on the first try, which historically has indicated the presence of subtle and highly destructive bugs.
28. Fix RCU's determination of whether or not it is running in the
context of an idle task.
For a testing-only version of this patchset from git, please see the following subject-to-rebase branch:
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/dev
Thanx, Paul
------------------------------------------------------------------------
arch/arm/kernel/process.c | 4 arch/avr32/kernel/process.c | 4 arch/blackfin/kernel/process.c | 4 arch/microblaze/kernel/process.c | 4 arch/mips/kernel/process.c | 4 arch/openrisc/kernel/idle.c | 4 arch/powerpc/kernel/idle.c | 20 + arch/powerpc/platforms/iseries/setup.c | 8 arch/s390/kernel/process.c | 4 arch/sh/kernel/idle.c | 4 arch/sparc/kernel/process_64.c | 4 arch/tile/kernel/process.c | 4 arch/um/kernel/process.c | 4 arch/unicore32/kernel/process.c | 4 arch/x86/kernel/process_32.c | 4 arch/x86/kernel/process_64.c | 14 - b/Documentation/RCU/stallwarn.txt | 5 b/Documentation/RCU/trace.txt | 4 b/Documentation/lockdep-design.txt | 61 +++++ b/arch/arm/kernel/process.c | 4 b/arch/avr32/kernel/process.c | 4 b/arch/blackfin/kernel/process.c | 4 b/arch/microblaze/kernel/process.c | 4 b/arch/mips/kernel/process.c | 4 b/arch/openrisc/kernel/idle.c | 4 b/arch/powerpc/include/asm/synch.h | 6 b/arch/powerpc/kernel/idle.c | 4 b/arch/powerpc/platforms/iseries/setup.c | 8 b/arch/powerpc/platforms/pseries/lpar.c | 4 b/arch/s390/kernel/process.c | 4 b/arch/sh/kernel/idle.c | 4 b/arch/sparc/kernel/process_64.c | 4 b/arch/tile/kernel/process.c | 4 b/arch/um/kernel/process.c | 4 b/arch/unicore32/kernel/process.c | 4 b/arch/x86/kernel/apic/apic.c | 6 b/arch/x86/kernel/apic/io_apic.c | 2 b/arch/x86/kernel/cpu/mcheck/therm_throt.c | 2 b/arch/x86/kernel/cpu/mcheck/threshold.c | 2 b/arch/x86/kernel/irq.c | 6 b/arch/x86/kernel/process_32.c | 4 b/arch/x86/kernel/process_64.c | 4 b/include/linux/hardirq.h | 21 -- b/include/linux/rcupdate.h | 21 -- b/include/linux/srcu.h | 36 ++- b/include/linux/tick.h | 11 - b/include/trace/events/rcu.h | 10 b/kernel/lockdep.c | 22 ++ b/kernel/rcu.h | 7 b/kernel/rcupdate.c | 10 b/kernel/rcutiny.c | 124 ++++++++++-- b/kernel/rcutorture.c | 18 + b/kernel/rcutree.c | 16 - b/kernel/rcutree.h | 4 b/kernel/rcutree_plugin.h | 7 b/kernel/rcutree_trace.c | 2 b/kernel/softirq.c | 2 b/kernel/srcu.c | 3 b/kernel/time/tick-sched.c | 6 b/kernel/trace/trace.c | 1 include/linux/rcupdate.h | 139 ++++++++----- include/linux/srcu.h | 55 +++++ include/linux/tick.h | 59 ++++- include/trace/events/rcu.h | 41 +++ kernel/rcupdate.c | 2 kernel/rcutiny.c | 45 ++-- kernel/rcutree.c | 298 ++++++++++++++++++++--------- kernel/rcutree.h | 22 -- kernel/rcutree_plugin.h | 175 +++++++++++++---- kernel/rcutree_trace.c | 10 kernel/softirq.c | 2 kernel/time/tick-sched.c | 118 ++++++----- 72 files changed, 1080 insertions(+), 467 deletions(-)