RFC Fix cpuidle_idle_call() RCU usage
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest3 patches 2 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | rcu: Allow nesting of rcu_idle_enter() and rcu_idle_exit()kernel/ kernel/ kernel/ | +42 | 0 replies | |
| 2/3 | rcu: Add RCU_NONIDLE() for idle-loop RCU read-side critical sectionsinclude/ kernel/ kernel/ | +31 | 0 replies | |
| 3/3 | cpuidle: Inform RCU of read-side critical sectionsdrivers/ | +8 | 1 reply |
Reviews trailers per patch
1 of 3 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.
| Patch | Josh Triplett | Deepthi Dharwar |
|---|---|---|
| Series | R-b | |
| 1/3 | ||
| 2/3 | ||
| 3/3 | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH RFC 0/3] Fix cpuidle_idle_call() RCU usage
Hello!
This patch series is a second attempt to fix the idle-loop uses of RCU, see https://lkml.org/lkml/2012/2/1/741 for v1. Where the first series attempted to drive rcu_idle_enter() and rcu_idle_exit() further down into the Linux kernels multitude of idle loops, this patch instead marks specific idle-loop operations containing RCU read-side critical sections, as suggested by Nicolas Pitre and Steven Rostedt. The possibility of code shared between idle and non-idle also requires the ability to nest rcu_idle_enter() calls. The individual patches are as follows:
1. Allow nesting of rcu_idle_enter() and rcu_idle_exit().
2. Add an RCU_NONIDLE() macro to enclose idle-loop code that
contains RCU read-side critical sections.
3. Use RCU_NONIDLE() to protect cpuidle_idle_call()'s tracepoints.
This patchset has the distinct advantage of avoiding touching any architecture-specific code. ;-)
Thanx, Paul
------------------------------------------------------------------------
b/drivers/cpuidle/cpuidle.c | 12 ++++++++---- b/include/linux/rcupdate.h | 27 +++++++++++++++++++++++++++ b/kernel/rcu.h | 18 +++++++++++++++++- b/kernel/rcutiny.c | 16 ++++++++++++---- b/kernel/rcutree.c | 19 +++++++++++++------ kernel/rcutiny.c | 2 ++ kernel/rcutree.c | 2 ++ 7 files changed, 81 insertions(+), 15 deletions(-)