Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1423469 > unrolled thread
| Started by | "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
|---|---|
| First post | 2016-06-15 23:40 +0200 |
| Last post | 2016-06-15 23:50 +0200 |
| Articles | 3 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH tip/core/rcu 0/4] Documentation updates for 4.8 "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-06-15 23:40 +0200
[PATCH tip/core/rcu 2/4] documentation: Add references to 2010 and 2014 Big API Tables "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-06-15 23:40 +0200
[PATCH tip/core/rcu 3/4] documentation: Add RCU_NONIDLE() restrictions to requirements "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-06-15 23:50 +0200
| From | "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-06-15 23:40 +0200 |
| Subject | [PATCH tip/core/rcu 0/4] Documentation updates for 4.8 |
| Message-ID | <rKqHv-7SL-3@gated-at.bofh.it> |
Hello! This series provides a few minor documentation updates for RCU: 1. Add reference to the 2014 RCU API LWN article. 2. Add references to 2010 and 2014 Big API Tables. 3. Add RCU_NONIDLE() restrictions to requirements. 4. Fix a typo, courtesy of Eric Engestrom. I am still harboring fantasies of getting another block of the RCU design documentation done in time for the merge window, but it is currently not yet even ready for review. Thanx, Paul ------------------------------------------------------------------------ Design/Requirements/Requirements.html | 35 ++++++++++++++++++++++++++++++++++ stallwarn.txt | 2 - whatisRCU.txt | 3 ++ 3 files changed, 39 insertions(+), 1 deletion(-)
[toc] | [next] | [standalone]
| From | "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-06-15 23:40 +0200 |
| Subject | [PATCH tip/core/rcu 2/4] documentation: Add references to 2010 and 2014 Big API Tables |
| Message-ID | <rKqHw-7SL-33@gated-at.bofh.it> |
| In reply to | #1423469 |
Reported-by: Jim Roskind <jar@roskind.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> --- Documentation/RCU/whatisRCU.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt index 13266cff42ff..204422719197 100644 --- a/Documentation/RCU/whatisRCU.txt +++ b/Documentation/RCU/whatisRCU.txt @@ -5,7 +5,9 @@ to start learning about RCU: 2. What is RCU? Part 2: Usage http://lwn.net/Articles/263130/ 3. RCU part 3: the RCU API http://lwn.net/Articles/264090/ 4. The RCU API, 2010 Edition http://lwn.net/Articles/418853/ + 2010 Big API Table http://lwn.net/Articles/419086/ 5. The RCU API, 2014 Edition http://lwn.net/Articles/609904/ + 2014 Big API Table http://lwn.net/Articles/609973/ What is RCU? -- 2.5.2
[toc] | [prev] | [next] | [standalone]
| From | "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-06-15 23:50 +0200 |
| Subject | [PATCH tip/core/rcu 3/4] documentation: Add RCU_NONIDLE() restrictions to requirements |
| Message-ID | <rKqRc-7Wk-55@gated-at.bofh.it> |
| In reply to | #1423469 |
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
.../RCU/Design/Requirements/Requirements.html | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html
index e7e24b3e86e2..ece410f40436 100644
--- a/Documentation/RCU/Design/Requirements/Requirements.html
+++ b/Documentation/RCU/Design/Requirements/Requirements.html
@@ -2391,6 +2391,41 @@ and <tt>RCU_NONIDLE()</tt> on the other while inspecting
idle-loop code.
Steven Rostedt supplied <tt>_rcuidle</tt> event tracing,
which is used quite heavily in the idle loop.
+However, there are some restrictions on the code placed within
+<tt>RCU_NONIDLE()</tt>:
+
+<ol>
+<li> Blocking is prohibited.
+ In practice, this is not a serious restriction given that idle
+ tasks are prohibited from blocking to begin with.
+<li> Although nesting <tt>RCU_NONIDLE()</tt> is permited, they cannot
+ nest indefinitely deeply.
+ However, given that they can be nested on the order of a million
+ deep, even on 32-bit systems, this should not be a serious
+ restriction.
+ This nesting limit would probably be reached long after the
+ compiler OOMed or the stack overflowed.
+<li> Any code path that enters <tt>RCU_NONIDLE()</tt> must sequence
+ out of that same <tt>RCU_NONIDLE()</tt>.
+ For example, the following is grossly illegal:
+
+ <blockquote>
+ <pre>
+ 1 RCU_NONIDLE({
+ 2 do_something();
+ 3 goto bad_idea; /* BUG!!! */
+ 4 do_something_else();});
+ 5 bad_idea:
+ </pre>
+ </blockquote>
+
+ <p>
+ It is just as illegal to transfer control into the middle of
+ <tt>RCU_NONIDLE()</tt>'s argument.
+ Yes, in theory, you could transfer in as long as you also
+ transferred out, but in practice you could also expect to get sharply
+ worded review comments.
+</ol>
<p>
It is similarly socially unacceptable to interrupt an
--
2.5.2
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web