RCU changes for v4.6
Subsystems (10)
Linus,
Please pull the latest core-rcu-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus
# HEAD: 3e5bfb8316d02496a3a964ca51434a45b1a784e3 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
The main changes in this cycle were:
- Documentation updates, including RCU data structure design-level documentation.
- Miscellaneous fixes.
- RCU torture-test updates.
(Note the somewhat larger .html/.htmlx files about RCU data structures - let us know if you think they are over the top.)
Thanks,
Ingo
------------------>
Boqun Feng (3):
sparse: Add __private to privatize members of structs
RCU: Privatize rcu_node::lock
irq: Privatize irq_common_data::state_use_accessors
Chen Gang (1):
rcu: Remove useless rcu_data_p when !PREEMPT_RCU
Paul E. McKenney (24):
rcutorture: Add checks for rcutorture writer starvation
rcutorture: Don't keep empty console.log.diags files
rcutorture: Check for self-detected stalls
documentation: Add real-time requirements from CPU-bound workloads
documentation: Fix control dependency and identical stores
documentation: Fix memory-barriers.txt section references
documentation: Add synchronize_rcu_mult() to the requirements
documentation: Remove obsolete reference to RCU-protected indexes
documentation: Subsequent writes ordered by rcu_dereference()
documentation: Distinguish between local and global transitivity
documentation: Add alternative release-acquire outcome
documentation: Add documentation for RCU's major data structures
documentation: Explain why rcu_read_lock() needs no barrier()
documentation: Transitivity is not cumulativity
documentation: Document illegality of call_rcu() from offline CPUs
documentation: Explain how RCU's combining tree fights contention
rcu: Assign false instead of 0 for ->core_needs_qs
rcu: Update rcu_report_qs_rsp() comment
rcu: Stop treating in-kernel CPU-bound workloads as errors
rcu: Set rdp->gpwrap when CPU is idle
rcutorture: Correct no-expedite console messages
rcu: Document unique-name limitation for DEFINE_STATIC_SRCU()
rcu: Catch up rcu_report_qs_rdp() comment with reality
rcu: Export rcu_gp_is_normal()
Paul Gortmaker (1):
rcu: Make rcu/tiny_plugin.h explicitly non-modular
SeongJae Park (1):
documentation: Clarify compiler store-fusion example
Yang Shi (1):
rcu: Remove rcu_user_hooks_switch
.../Design/Data-Structures/BigTreeClassicRCU.svg | 474 +++++++ .../Design/Data-Structures/BigTreeClassicRCUBH.svg | 499 +++++++ .../Data-Structures/BigTreeClassicRCUBHdyntick.svg | 695 ++++++++++ .../Data-Structures/BigTreePreemptRCUBHdyntick.svg | 741 +++++++++++ .../BigTreePreemptRCUBHdyntickCB.svg | 858 ++++++++++++ .../Design/Data-Structures/Data-Structures.html | 1395 ++++++++++++++++++++ .../Design/Data-Structures/Data-Structures.htmlx | 1295 ++++++++++++++++++ .../Design/Data-Structures/HugeTreeClassicRCU.svg | 939 +++++++++++++ .../RCU/Design/Data-Structures/TreeLevel.svg | 828 ++++++++++++ .../RCU/Design/Data-Structures/TreeMapping.svg | 305 +++++ .../Design/Data-Structures/TreeMappingLevel.svg | 380 ++++++ .../RCU/Design/Data-Structures/blkd_task.svg | 843 ++++++++++++ .../RCU/Design/Data-Structures/nxtlist.svg | 396 ++++++ .../RCU/Design/Requirements/Requirements.html | 225 +++- .../RCU/Design/Requirements/Requirements.htmlx | 121 +- Documentation/memory-barriers.txt | 141 +- include/linux/compiler.h | 12 +- include/linux/irq.h | 6 +- include/linux/rcupdate.h | 2 - include/linux/srcu.h | 19 +- kernel/irq/internals.h | 4 + kernel/rcu/rcutorture.c | 14 +- kernel/rcu/tiny_plugin.h | 15 +- kernel/rcu/tree.c | 143 +- kernel/rcu/tree.h | 42 +- kernel/rcu/tree_plugin.h | 27 +- kernel/rcu/update.c | 1 + scripts/checkpatch.pl | 3 +- .../selftests/rcutorture/bin/parse-console.sh | 6 +- 29 files changed, 10233 insertions(+), 196 deletions(-) create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg create mode 100644 Documentation/RCU/Design/Data-Structures/Data-Structures.html create mode 100644 Documentation/RCU/Design/Data-Structures/Data-Structures.htmlx create mode 100644 Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg create mode 100644 Documentation/RCU/Design/Data-Structures/TreeLevel.svg create mode 100644 Documentation/RCU/Design/Data-Structures/TreeMapping.svg create mode 100644 Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg create mode 100644 Documentation/RCU/Design/Data-Structures/blkd_task.svg create mode 100644 Documentation/RCU/Design/Data-Structures/nxtlist.svg
Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg new file +474 -0
@@ -0,0 +1,474 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Creator: fig2dev Version 3.2 Patchlevel 5e --> + +<!-- CreationDate: Wed Dec 9 17:28:20 2015 --> + +<!-- Magnification: 3.000 --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="9.1in" + height="8.9in" + viewBox="-66 -66 10932 10707" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="BigTreeClassicRCU.fig"> + <metadata + id="metadata106"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs104"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path3864" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="973" + inkscape:window-height="1137" + id="namedview102" + showgrid="false" + inkscape:zoom="0.9743589" + inkscape:cx="409.50003" + inkscape:cy="400.49997" + inkscape:window-x="915" + inkscape:window-y="24" + inkscape:window-maximized="0" + inkscape:current-layer="g4" /> + <g + style="stroke-width:.025in; fill:none" + id="g4"> + <!-- Line: box --> + <rect + x="0" + y="0" + width="10800" + height="5625" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " + id="rect6" /> + <!-- Line: box --> + <rect + x="1125" + y="3600" + width="2700" + height="1350" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " + id="rect8" /> + <!-- Line: box --> + <rect + x="3825" + y="900" + width="2700" + height="1350" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " + id="rect10" /> + <!-- Line: box --> + <rect + x="6525" + y="3600" + width="2700" + height="1350" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " + id="rect12" /> + <!-- Line --> + <polyline + points="3375,6525 3375,5046 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline14" /> + <!-- Arrowhead on XXXpoint 3375 6525 - 3375 4860--> + <!-- Circle --> + <circle + cx="7425" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle18" /> + <!-- Circle --> + <circle + cx="7875" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle20" /> + <!-- Circle --> + <circle + cx="8325" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle22" /> + <!-- Circle --> + <circle + cx="2025" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle24" /> + <!-- Circle --> + <circle + cx="2475" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle26" /> + <!-- Circle --> + <circle + cx="2925" + cy="6075" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle28" /> + <!-- Circle --> + <circle + cx="4725" + cy="4275" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle30" /> + <!-- Circle --> + <circle + cx="5175" + cy="4275" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle32" /> + <!-- Circle --> + <circle + cx="5625" + cy="4275" + r="114" + style="fill:#000000;stroke:#000000;stroke-width:21;" + id="circle34" /> + <!-- Line: box --> + <rect + x="2025" + y="6525" + width="2700" + height="1800" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; " + id="rect36" /> + <!-- Line --> + <polyline + points="2475,3600 3975,2310 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline38" /> + <!-- Arrowhead on XXXpoint 2475 3600 - 4116 2190--> + <!-- Line --> + <polyline + points="7875,3600 6372,2310 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline42" /> + <!-- Arrowhead on XXXpoint 7875 3600 - 6231 2190--> + <!-- Line --> + <polyline + points="6975,8775 6975,5046 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline46" /> + <!-- Arrowhead on XXXpoint 6975 8775 - 6975 4860--> + <!-- Line --> + <polyline + points="1575,8775 1575,5046 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline50" /> + <!-- Arrowhead on XXXpoint 1575 8775 - 1575 4860--> + <!-- Line --> + <polyline + points="8775,6525 8775,5046 " + style="stroke:#00d1d1;stroke-width:44.9934641;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" + id="polyline54" /> + <!-- Arrowhead on XXXpoint 8775 6525 - 8775 4860--> + <!-- Text --> + <text + xml:space="preserve" + x="1575" + y="9225" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text58">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="1575" + y="9675" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text60">rcu_data</text> + <!-- Text --> + <text + xml:space="preserve" + x="1575" + y="10350" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="324" + text-anchor="middle" + id="text62">CPU 0</text> + <!-- Text --> + <text + xml:space="preserve" + x="3375" + y="6975" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text64">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="3375" + y="7425" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text66">rcu_data</text> + <!-- Text --> + <text + xml:space="preserve" + x="3375" + y="8100" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="324" + text-anchor="middle" + id="text68">CPU 15</text> + <!-- Text --> + <text + xml:space="preserve" + x="6975" + y="9225" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text70">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="6975" + y="9675" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text72">rcu_data</text> + <!-- Text --> + <text + xml:space="preserve" + x="6975" + y="10350" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="324" + text-anchor="middle" + id="text74">CPU 1007</text> + <!-- Text --> + <text + xml:space="preserve" + x="8730" + y="6930" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text76">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="8730" + y="7380" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text78">rcu_data</text> + <!-- Text --> + <text + xml:space="preserve" + x="8730" + y="8055" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="324" + text-anchor="middle" + id="text80">CPU 1023</text> + <!-- Text --> + <text + xml:space="preserve" + x="225" + y="450" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="start" + id="text82">struct rcu_state</text> + <!-- Text --> + <text + xml:space="preserve" + x="2475" + y="4050" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text84">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="2475" + y="4500" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text86">rcu_node</text> + <!-- Text --> + <text + xml:space="preserve" + x="7875" + y="4500" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text88">rcu_node</text> + <!-- Text --> + <text + xml:space="preserve" + x="7875" + y="4050" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text90">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="5175" + y="1350" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text92">struct</text> + <!-- Text --> + <text + xml:space="preserve" + x="5175" + y="1800" + fill="#000000" + font-family="Courier" + font-style="normal" + font-weight="bold" + font-size="288" + text-anchor="middle" + id="text94">rcu_node</text> + <!-- Line: box --> + <rect + x="225" + y="8775" + width="2700" + height="1800" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; " + id="rect96" /> + <!-- Line: box --> + <rect + x="5625" + y="8775" + width="2700" + height="1800" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; " + id="rect98" /> + <!-- Line: box --> + <rect + x="7380" + y="6480" + width="2700" + height="1800" + rx="0" + style="stroke:#000000;stroke-width:45; stroke-linejoin:miter; stroke-linecap:butt; " + id="rect100" /> + </g> +</svg>
Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg new file +499 -0
499 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg new file +695 -0
695 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg new file +741 -0
741 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg new file +858 -0
591 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/Data-Structures.html new file +1395 -0
1,395 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/Data-Structures.htmlx new file +1295 -0
1,295 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg new file +939 -0
939 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/TreeLevel.svg new file +828 -0
828 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/TreeMapping.svg new file +305 -0
305 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg new file +380 -0
380 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/blkd_task.svg new file +843 -0
843 lines not on this page · raw message
Documentation/RCU/Design/Data-Structures/nxtlist.svg new file +396 -0
396 lines not on this page · raw message
Documentation/RCU/Design/Requirements/Requirements.html +185 -40
225 lines not on this page · raw message
Documentation/RCU/Design/Requirements/Requirements.htmlx +120 -1
121 lines not on this page · raw message
Documentation/memory-barriers.txt +116 -25
141 lines not on this page · raw message
kernel/rcu/tree.c +70 -73
143 lines not on this page · raw message
kernel/rcu/tree.h +31 -11
42 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/parse-console.sh +4 -2
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Quoted 3 lines · Ingo Molnar
(Note the somewhat larger .html/.htmlx files about RCU data structures - let us know if you think they are over the top.)
I don't think they are over the top because they are *large*.
I don't want to pull them because they seem to be totally pointlessly *duplicate*,
I don't want to see the same stuff twice.
Either you do html, or you do htmlx. But in no case do you do *both*.
And quite franklty, since the only point of that seems to be the whole "quiz" thing, I erally think this should go away.
No more of these silly cute pictures, or cute html tricks with quizzes.
Do *documentation*, not games!
Not pulled.
Linus
Quoted 14 lines · Linus Torvalds
Quoted 3 lines · Ingo Molnar
(Note the somewhat larger .html/.htmlx files about RCU data structures - let us know if you think they are over the top.)
I don't think they are over the top because they are *large*.
I don't want to pull them because they seem to be totally pointlessly *duplicate*,
I don't want to see the same stuff twice.
Either you do html, or you do htmlx. But in no case do you do *both*.
Quoted 8 lines
And quite franklty, since the only point of that seems to be the whole "quiz" thing, I erally think this should go away.
No more of these silly cute pictures, or cute html tricks with quizzes.
Do *documentation*, not games!
Not pulled.
OK, will rework.
Thanx, Paul
Quoted 18 lines · Paul E. McKenney
Quoted 17 lines · Linus Torvalds
Quoted 3 lines · Ingo Molnar
(Note the somewhat larger .html/.htmlx files about RCU data structures - let us know if you think they are over the top.)
I don't think they are over the top because they are *large*.
I don't want to pull them because they seem to be totally pointlessly *duplicate*,
I don't want to see the same stuff twice.
Either you do html, or you do htmlx. But in no case do you do *both*.
And quite franklty, since the only point of that seems to be the whole "quiz" thing, I erally think this should go away.
Quoted 7 lines
Quoted 5 lines
No more of these silly cute pictures, or cute html tricks with quizzes.
Do *documentation*, not games!
Not pulled.
OK, will rework.
Meanwhile, to not hold up the other RCU changes, I've reconstructed core/rcu with the following branches:
fixes.2015.02.23a: Miscellaneous fixes
torture.2015.02.23a: Torture-test updatesi.e. the doc.2015.02.23a bits that need reworking are left out.
I'll send an updated pull request in a few minutes.
Thanks,
Ingo
Quoted 32 lines · Ingo Molnar
Quoted 18 lines · Paul E. McKenney
Quoted 17 lines · Linus Torvalds
Quoted 3 lines · Ingo Molnar
(Note the somewhat larger .html/.htmlx files about RCU data structures - let us know if you think they are over the top.)
I don't think they are over the top because they are *large*.
I don't want to pull them because they seem to be totally pointlessly *duplicate*,
I don't want to see the same stuff twice.
Either you do html, or you do htmlx. But in no case do you do *both*.
And quite franklty, since the only point of that seems to be the whole "quiz" thing, I erally think this should go away.
Quoted 7 lines
Quoted 5 lines
No more of these silly cute pictures, or cute html tricks with quizzes.
Do *documentation*, not games!
Not pulled.
OK, will rework.
Meanwhile, to not hold up the other RCU changes, I've reconstructed core/rcu with the following branches:
Quoted 6 lines
fixes.2015.02.23a: Miscellaneous fixes torture.2015.02.23a: Torture-test updatesi.e. the doc.2015.02.23a bits that need reworking are left out.
I'll send an updated pull request in a few minutes.
Good point! I will send a pull of the documentation commits that do not involve Documentation/RCU/Design.
Thanx, Paul
Quoted 3 lines · Paul E. McKenney
Good point! I will send a pull of the documentation commits that do not involve
Documentation/RCU/Design.
Note that I have no objections what-so-ever with the html in the Design doc directory: I think using html and svg's to do the boxes and things is fine. Using html and svg's because you can do better graphics for showing real technical relationships is absolutely *fine*.
What I object to is "cute". We had a cartoonish jpeg at some point (maybe it's still there, I didn't check), and now the quizzes with the html filtering and checking in both versions etc.
I think "cute" may well be fine for doing presentations etc.
But I don't think it's something we want in the kernel sources, and it absolutely isn't when it adds big files (whether they be duplicate info or jpeg's) or special non-standard file formats.
It ends up being actively detrimental to disseminating the information, because of the conversion scripts, or because it's just distracting.
Linus
Quoted 18 lines · Linus Torvalds
Quoted 3 lines · Paul E. McKenney
Good point! I will send a pull of the documentation commits that do not involve
Documentation/RCU/Design.Note that I have no objections what-so-ever with the html in the Design doc directory: I think using html and svg's to do the boxes and things is fine. Using html and svg's because you can do better graphics for showing real technical relationships is absolutely *fine*.
What I object to is "cute". We had a cartoonish jpeg at some point (maybe it's still there, I didn't check), and now the quizzes with the html filtering and checking in both versions etc.
I think "cute" may well be fine for doing presentations etc.
Quoted 7 lines
But I don't think it's something we want in the kernel sources, and it absolutely isn't when it adds big files (whether they be duplicate info or jpeg's) or special non-standard file formats.
It ends up being actively detrimental to disseminating the information, because of the conversion scripts, or because it's just distracting.
There is indeed a cartoon in the Requirements documentation, as well as a simple diagram that can just as easily be represented with text. (What can I say? I had that .svg lying around and was feeling lazy.) The commit at the end of this email removes them, and I have queued it for 3.7.
On the html/htmlx duplication, understood. I will fix this.
On the quick quizzes, if you want me to get rid of them, they are gone.
However, they really do have a serious purpose. That purpose is to help readers understand what they do and do not know, which admittedly is the sort of help that many people might rather do without. I learned about this the hard way, while taking a class in a familiar subject some years back. I read the first chapter of the text, and was surprised to find that I could answer only about 30% of the questions. Yes, I did re-read the chapter more carefully, and then was able to easily answer all the questions.
The point is that after reading the chapter the first time, I thought I knew the material, but I very clearly did not. The quick quizzes are intended to provide this same service to others, unwelcome though that might be.
But again, if you don't want them, I will get rid of them. After all, at the time that they become critically important, I won't be in a position to be worried about it. ;-)
Thanx, Paul
------------------------------------------------------------------------
commit 4fc4c42836db14c1a7ba8558cfab6db82bfe79b5
Author: Paul E. McKenney <[email protected]> Date: Tue Mar 15 11:03:36 2016 -0700
documentation: Remove unnecessary images from requirements
This commit removes a cutesy cartoon and also a diagram that can just as easily be represented by text.
Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png deleted +0 -0
Documentation/RCU/Design/Requirements/RCUApplicability.svg deleted +0 -0
Documentation/RCU/Design/Requirements/Requirements.html +20 -8
@@ -1120,12 +1120,27 @@ These classes is covered in the following sections. <h3><a name="Specialization">Specialization</a></h3> <p> -RCU is and always has been intended primarily for read-mostly situations, as -illustrated by the following figure. -This means that RCU's read-side primitives are optimized, often at the +RCU is and always has been intended primarily for read-mostly situations, +which means that RCU's read-side primitives are optimized, often at the expense of its update-side primitives. +Experience thus far is captured by the following list of situations: -<p><img src="RCUApplicability.svg" alt="RCUApplicability.svg" width="70%"></p> +<ol> +<li> Read-mostly data, where stale and inconsistent data is not + a problem: RCU works great! +<li> Read-mostly data, where data must be consistent: + RCU works well. +<li> Read-write data, where data must be consistent: + RCU <i>might</i> work OK. + Or not. +<li> Write-mostly data, where data must be consistent: + RCU is very unlikely to be the right tool for the job, + with the following exceptions, where RCU can provide: + <ol type=a> + <li> Existence guarantees for update-friendly mechanisms. + <li> Wait-free read-side primitives for real-time use. + </ol> +</ol> <p> This focus on read-mostly situations means that RCU must interoperate
@@ -1171,10 +1186,7 @@ some period of time, so the exact wait period is a judgment call. One of our pair of veternarians might wait 30 seconds before pronouncing the cat dead, while the other might insist on waiting a full minute. The two veternarians would then disagree on the state of the cat during -the final 30 seconds of the minute following the last heartbeat, as -fancifully illustrated below: - -<p><img src="2013-08-is-it-dead.png" alt="2013-08-is-it-dead.png" width="431"></p> +the final 30 seconds of the minute following the last heartbeat. <p> Interestingly enough, this same situation applies to hardware.
Documentation/RCU/Design/Requirements/Requirements.htmlx +20 -8
@@ -1257,12 +1257,27 @@ These classes is covered in the following sections. <h3><a name="Specialization">Specialization</a></h3> <p> -RCU is and always has been intended primarily for read-mostly situations, as -illustrated by the following figure. -This means that RCU's read-side primitives are optimized, often at the +RCU is and always has been intended primarily for read-mostly situations, +which means that RCU's read-side primitives are optimized, often at the expense of its update-side primitives. +Experience thus far is captured by the following list of situations: -<p><img src="RCUApplicability.svg" alt="RCUApplicability.svg" width="70%"></p> +<ol> +<li> Read-mostly data, where stale and inconsistent data is not + a problem: RCU works great! +<li> Read-mostly data, where data must be consistent: + RCU works well. +<li> Read-write data, where data must be consistent: + RCU <i>might</i> work OK. + Or not. +<li> Write-mostly data, where data must be consistent: + RCU is very unlikely to be the right tool for the job, + with the following exceptions, where RCU can provide: + <ol type=a> + <li> Existence guarantees for update-friendly mechanisms. + <li> Wait-free read-side primitives for real-time use. + </ol> +</ol> <p> This focus on read-mostly situations means that RCU must interoperate
@@ -1330,10 +1345,7 @@ some period of time, so the exact wait period is a judgment call. One of our pair of veternarians might wait 30 seconds before pronouncing the cat dead, while the other might insist on waiting a full minute. The two veternarians would then disagree on the state of the cat during -the final 30 seconds of the minute following the last heartbeat, as -fancifully illustrated below: - -<p><img src="2013-08-is-it-dead.png" alt="2013-08-is-it-dead.png" width="431"></p> +the final 30 seconds of the minute following the last heartbeat. <p> Interestingly enough, this same situation applies to hardware.
Quoted 2 lines · Paul E. McKenney
On the quick quizzes, if you want me to get rid of them, they are gone.
You don't have to remove them (but I do think cartoons etc should be).
But dammit, you don't need to duplicate a big file or use a non-standard format for something as trivial as a quiz.
There are *trivial* solutions to this:
- just move the answer in the html file (or to another html file past a link).
- or just make the answer be in text using the background color (have
people select the text to see it)
- or make the answer be in a tiny font and make people use "ctrl-+"
or whatever.
None of these require a non-standard format and munging and duplication.
Linus
Quoted 14 lines · Linus Torvalds
Quoted 2 lines · Paul E. McKenney
On the quick quizzes, if you want me to get rid of them, they are gone.
You don't have to remove them (but I do think cartoons etc should be).
But dammit, you don't need to duplicate a big file or use a non-standard format for something as trivial as a quiz.
There are *trivial* solutions to this:
- just move the answer in the html file (or to another html file past a link).
Quoted 7 lines
- or just make the answer be in text using the background color (have
people select the text to see it)- or make the answer be in a tiny font and make people use "ctrl-+"
or whatever.None of these require a non-standard format and munging and duplication.
Will fix!
Thanx, Paul