Skip to contentSkip to conversation

RCU changes for v4.6

GIT PULL Ingo Molnar 3 participants 9 messages Mar 14, 2016 – Mar 15, 2016

Subsystems (10)
Documentation Kselftest RCU IRQ +6 more subsystems
lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 000000000000..727e270b11e4
@@ -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

include/linux/compiler.h +8 -4
index 48f5aab117ae..7cfc58a6e61c 100644

Lines of this file are not shown. View the raw message.

include/linux/irq.h +4 -2
index 3c1c96786248..cd14cd4a22b4 100644

Lines of this file are not shown. View the raw message.

include/linux/rcupdate.h +0 -2
index 14e6f47ee16f..b5d48bd56e3f 100644

Lines of this file are not shown. View the raw message.

include/linux/srcu.h +17 -2
index f5f80c5643ac..dc8eb63c6568 100644

Lines of this file are not shown. View the raw message.

kernel/irq/internals.h +4 -0
index fcab63c66905..3d182932d2d1 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/rcutorture.c +8 -6
index d2988d047d66..65ae0e5c35da 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/tiny_plugin.h +2 -13
index e492a5253e0f..196f0302e2f4 100644

Lines of this file are not shown. View the 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

kernel/rcu/tree_plugin.h +13 -14
index 9467a8b7e756..43e9b4a4bcd9 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/update.c +1 -0
index 76b94e19430b..ca828b41c938 100644

Lines of this file are not shown. View the raw message.

scripts/checkpatch.pl +2 -1
index 0147c91fa549..874132b26d23 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/rcutorture/bin/parse-console.sh +4 -2
index 844787a0d7be..5eb49b7f864c 100755

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.

#1 lore raw
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

#2 lore raw
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

#3 lore raw
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 updates

i.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

#4 lore raw
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 updates

i.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

#5 lore raw
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

#6 lore raw
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
deleted file mode 100644
index 7496a55e4e7b..000000000000
Documentation/RCU/Design/Requirements/RCUApplicability.svg deleted +0 -0
deleted file mode 100644
index ebcbeee391ed..000000000000
Documentation/RCU/Design/Requirements/Requirements.html +20 -8
index 01e12b86e81f..c67a96a2a389 100644
@@ -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
index 3355f1f9384c..d6a84f3e0451 100644
@@ -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.
#7 lore raw
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

#8 lore raw
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