aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/RCU/Design
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/RCU/Design')
-rw-r--r--Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg499
-rw-r--r--Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg695
-rw-r--r--Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg741
-rw-r--r--Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg834
-rw-r--r--Documentation/RCU/Design/Data-Structures/Data-Structures.html173
-rw-r--r--Documentation/RCU/Design/Data-Structures/blkd_task.svg676
-rw-r--r--Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html6
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html2
-rw-r--r--Documentation/RCU/Design/Requirements/Requirements.html206
9 files changed, 748 insertions, 3084 deletions
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg
deleted file mode 100644
index 9bbb1944f962..000000000000
--- a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg
+++ /dev/null
@@ -1,499 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Creator: fig2dev Version 3.2 Patchlevel 5e -->
3
4<!-- CreationDate: Wed Dec 9 17:26:09 2015 -->
5
6<!-- Magnification: 2.000 -->
7
8<svg
9 xmlns:dc="http://purl.org/dc/elements/1.1/"
10 xmlns:cc="http://creativecommons.org/ns#"
11 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
12 xmlns:svg="http://www.w3.org/2000/svg"
13 xmlns="http://www.w3.org/2000/svg"
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16 width="5.7in"
17 height="6.6in"
18 viewBox="-44 -44 6838 7888"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="BigTreeClassicRCUBH.fig">
23 <metadata
24 id="metadata110">
25 <rdf:RDF>
26 <cc:Work
27 rdf:about="">
28 <dc:format>image/svg+xml</dc:format>
29 <dc:type
30 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
31 <dc:title></dc:title>
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs108">
37 <marker
38 inkscape:stockid="Arrow1Mend"
39 orient="auto"
40 refY="0.0"
41 refX="0.0"
42 id="Arrow1Mend"
43 style="overflow:visible;">
44 <path
45 id="path3868"
46 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 "
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
48 transform="scale(0.4) rotate(180) translate(10,0)" />
49 </marker>
50 <marker
51 inkscape:stockid="Arrow2Mend"
52 orient="auto"
53 refY="0.0"
54 refX="0.0"
55 id="Arrow2Mend"
56 style="overflow:visible;">
57 <path
58 id="path3886"
59 style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
60 d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
61 transform="scale(0.6) rotate(180) translate(0,0)" />
62 </marker>
63 </defs>
64 <sodipodi:namedview
65 pagecolor="#ffffff"
66 bordercolor="#666666"
67 borderopacity="1"
68 objecttolerance="10"
69 gridtolerance="10"
70 guidetolerance="10"
71 inkscape:pageopacity="0"
72 inkscape:pageshadow="2"
73 inkscape:window-width="878"
74 inkscape:window-height="1148"
75 id="namedview106"
76 showgrid="false"
77 inkscape:zoom="1.3547758"
78 inkscape:cx="256.5"
79 inkscape:cy="297"
80 inkscape:window-x="45"
81 inkscape:window-y="24"
82 inkscape:window-maximized="0"
83 inkscape:current-layer="g4" />
84 <g
85 style="stroke-width:.025in; fill:none"
86 id="g4">
87 <!-- Line: box -->
88 <rect
89 x="450"
90 y="0"
91 width="6300"
92 height="7350"
93 rx="0"
94 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
95 id="rect6" />
96 <!-- Line: box -->
97 <rect
98 x="4950"
99 y="4950"
100 width="1500"
101 height="900"
102 rx="0"
103 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
104 id="rect8" />
105 <!-- Line: box -->
106 <rect
107 x="750"
108 y="600"
109 width="5700"
110 height="3750"
111 rx="0"
112 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
113 id="rect10" />
114 <!-- Line: box -->
115 <rect
116 x="0"
117 y="450"
118 width="6300"
119 height="7350"
120 rx="0"
121 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
122 id="rect12" />
123 <!-- Line: box -->
124 <rect
125 x="300"
126 y="1050"
127 width="5700"
128 height="3750"
129 rx="0"
130 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
131 id="rect14" />
132 <!-- Circle -->
133 <circle
134 cx="2850"
135 cy="3900"
136 r="76"
137 style="fill:#000000;stroke:#000000;stroke-width:14;"
138 id="circle16" />
139 <!-- Circle -->
140 <circle
141 cx="3150"
142 cy="3900"
143 r="76"
144 style="fill:#000000;stroke:#000000;stroke-width:14;"
145 id="circle18" />
146 <!-- Circle -->
147 <circle
148 cx="3450"
149 cy="3900"
150 r="76"
151 style="fill:#000000;stroke:#000000;stroke-width:14;"
152 id="circle20" />
153 <!-- Circle -->
154 <circle
155 cx="1350"
156 cy="5100"
157 r="76"
158 style="fill:#000000;stroke:#000000;stroke-width:14;"
159 id="circle22" />
160 <!-- Circle -->
161 <circle
162 cx="1650"
163 cy="5100"
164 r="76"
165 style="fill:#000000;stroke:#000000;stroke-width:14;"
166 id="circle24" />
167 <!-- Circle -->
168 <circle
169 cx="1950"
170 cy="5100"
171 r="76"
172 style="fill:#000000;stroke:#000000;stroke-width:14;"
173 id="circle26" />
174 <!-- Circle -->
175 <circle
176 cx="4350"
177 cy="5100"
178 r="76"
179 style="fill:#000000;stroke:#000000;stroke-width:14;"
180 id="circle28" />
181 <!-- Circle -->
182 <circle
183 cx="4650"
184 cy="5100"
185 r="76"
186 style="fill:#000000;stroke:#000000;stroke-width:14;"
187 id="circle30" />
188 <!-- Circle -->
189 <circle
190 cx="4950"
191 cy="5100"
192 r="76"
193 style="fill:#000000;stroke:#000000;stroke-width:14;"
194 id="circle32" />
195 <!-- Line -->
196 <polyline
197 points="1350,3450 2350,2590 "
198 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
199 id="polyline34" />
200 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
201 <!-- Line -->
202 <polyline
203 points="4950,3450 3948,2590 "
204 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
205 id="polyline38" />
206 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
207 <!-- Line: box -->
208 <rect
209 x="750"
210 y="3450"
211 width="1800"
212 height="900"
213 rx="0"
214 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
215 id="rect42" />
216 <!-- Line -->
217 <polyline
218 points="2250,5400 2250,4414 "
219 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
220 id="polyline44" />
221 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
222 <!-- Line: box -->
223 <rect
224 x="1500"
225 y="5400"
226 width="1500"
227 height="900"
228 rx="0"
229 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
230 id="rect48" />
231 <!-- Line: box -->
232 <rect
233 x="300"
234 y="6600"
235 width="1500"
236 height="900"
237 rx="0"
238 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
239 id="rect50" />
240 <!-- Line: box -->
241 <rect
242 x="3750"
243 y="3450"
244 width="1800"
245 height="900"
246 rx="0"
247 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
248 id="rect52" />
249 <!-- Line: box -->
250 <rect
251 x="4500"
252 y="5400"
253 width="1500"
254 height="900"
255 rx="0"
256 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
257 id="rect54" />
258 <!-- Line: box -->
259 <rect
260 x="3300"
261 y="6600"
262 width="1500"
263 height="900"
264 rx="0"
265 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
266 id="rect56" />
267 <!-- Line: box -->
268 <rect
269 x="2250"
270 y="1650"
271 width="1800"
272 height="900"
273 rx="0"
274 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
275 id="rect58" />
276 <!-- Text -->
277 <text
278 xml:space="preserve"
279 x="6450"
280 y="300"
281 fill="#000000"
282 font-family="Helvetica"
283 font-style="normal"
284 font-weight="normal"
285 font-size="192"
286 text-anchor="end"
287 id="text60">rcu_bh</text>
288 <!-- Text -->
289 <text
290 xml:space="preserve"
291 x="3150"
292 y="1950"
293 fill="#000000"
294 font-family="Courier"
295 font-style="normal"
296 font-weight="bold"
297 font-size="192"
298 text-anchor="middle"
299 id="text62">struct</text>
300 <!-- Text -->
301 <text
302 xml:space="preserve"
303 x="3150"
304 y="2250"
305 fill="#000000"
306 font-family="Courier"
307 font-style="normal"
308 font-weight="bold"
309 font-size="192"
310 text-anchor="middle"
311 id="text64">rcu_node</text>
312 <!-- Text -->
313 <text
314 xml:space="preserve"
315 x="1650"
316 y="3750"
317 fill="#000000"
318 font-family="Courier"
319 font-style="normal"
320 font-weight="bold"
321 font-size="192"
322 text-anchor="middle"
323 id="text66">struct</text>
324 <!-- Text -->
325 <text
326 xml:space="preserve"
327 x="1650"
328 y="4050"
329 fill="#000000"
330 font-family="Courier"
331 font-style="normal"
332 font-weight="bold"
333 font-size="192"
334 text-anchor="middle"
335 id="text68">rcu_node</text>
336 <!-- Text -->
337 <text
338 xml:space="preserve"
339 x="4650"
340 y="4050"
341 fill="#000000"
342 font-family="Courier"
343 font-style="normal"
344 font-weight="bold"
345 font-size="192"
346 text-anchor="middle"
347 id="text70">rcu_node</text>
348 <!-- Text -->
349 <text
350 xml:space="preserve"
351 x="4650"
352 y="3750"
353 fill="#000000"
354 font-family="Courier"
355 font-style="normal"
356 font-weight="bold"
357 font-size="192"
358 text-anchor="middle"
359 id="text72">struct</text>
360 <!-- Text -->
361 <text
362 xml:space="preserve"
363 x="2250"
364 y="5700"
365 fill="#000000"
366 font-family="Courier"
367 font-style="normal"
368 font-weight="bold"
369 font-size="192"
370 text-anchor="middle"
371 id="text74">struct</text>
372 <!-- Text -->
373 <text
374 xml:space="preserve"
375 x="2250"
376 y="6000"
377 fill="#000000"
378 font-family="Courier"
379 font-style="normal"
380 font-weight="bold"
381 font-size="192"
382 text-anchor="middle"
383 id="text76">rcu_data</text>
384 <!-- Text -->
385 <text
386 xml:space="preserve"
387 x="1050"
388 y="6900"
389 fill="#000000"
390 font-family="Courier"
391 font-style="normal"
392 font-weight="bold"
393 font-size="192"
394 text-anchor="middle"
395 id="text78">struct</text>
396 <!-- Text -->
397 <text
398 xml:space="preserve"
399 x="1050"
400 y="7200"
401 fill="#000000"
402 font-family="Courier"
403 font-style="normal"
404 font-weight="bold"
405 font-size="192"
406 text-anchor="middle"
407 id="text80">rcu_data</text>
408 <!-- Text -->
409 <text
410 xml:space="preserve"
411 x="5250"
412 y="5700"
413 fill="#000000"
414 font-family="Courier"
415 font-style="normal"
416 font-weight="bold"
417 font-size="192"
418 text-anchor="middle"
419 id="text82">struct</text>
420 <!-- Text -->
421 <text
422 xml:space="preserve"
423 x="5250"
424 y="6000"
425 fill="#000000"
426 font-family="Courier"
427 font-style="normal"
428 font-weight="bold"
429 font-size="192"
430 text-anchor="middle"
431 id="text84">rcu_data</text>
432 <!-- Text -->
433 <text
434 xml:space="preserve"
435 x="4050"
436 y="6900"
437 fill="#000000"
438 font-family="Courier"
439 font-style="normal"
440 font-weight="bold"
441 font-size="192"
442 text-anchor="middle"
443 id="text86">struct</text>
444 <!-- Text -->
445 <text
446 xml:space="preserve"
447 x="4050"
448 y="7200"
449 fill="#000000"
450 font-family="Courier"
451 font-style="normal"
452 font-weight="bold"
453 font-size="192"
454 text-anchor="middle"
455 id="text88">rcu_data</text>
456 <!-- Text -->
457 <text
458 xml:space="preserve"
459 x="450"
460 y="1350"
461 fill="#000000"
462 font-family="Courier"
463 font-style="normal"
464 font-weight="bold"
465 font-size="192"
466 text-anchor="start"
467 id="text90">struct rcu_state</text>
468 <!-- Text -->
469 <text
470 xml:space="preserve"
471 x="6000"
472 y="750"
473 fill="#000000"
474 font-family="Helvetica"
475 font-style="normal"
476 font-weight="normal"
477 font-size="192"
478 text-anchor="end"
479 id="text92">rcu_sched</text>
480 <!-- Line -->
481 <polyline
482 points="5250,5400 5250,4414 "
483 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
484 id="polyline94" />
485 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
486 <!-- Line -->
487 <polyline
488 points="4050,6600 4050,4414 "
489 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
490 id="polyline98" />
491 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
492 <!-- Line -->
493 <polyline
494 points="1050,6600 1050,4414 "
495 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
496 id="polyline102" />
497 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
498 </g>
499</svg>
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg
deleted file mode 100644
index 21ba7823479d..000000000000
--- a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg
+++ /dev/null
@@ -1,695 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Creator: fig2dev Version 3.2 Patchlevel 5e -->
3
4<!-- CreationDate: Wed Dec 9 17:20:02 2015 -->
5
6<!-- Magnification: 2.000 -->
7
8<svg
9 xmlns:dc="http://purl.org/dc/elements/1.1/"
10 xmlns:cc="http://creativecommons.org/ns#"
11 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
12 xmlns:svg="http://www.w3.org/2000/svg"
13 xmlns="http://www.w3.org/2000/svg"
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16 width="5.7in"
17 height="8.6in"
18 viewBox="-44 -44 6838 10288"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="BigTreeClassicRCUBHdyntick.fig">
23 <metadata
24 id="metadata166">
25 <rdf:RDF>
26 <cc:Work
27 rdf:about="">
28 <dc:format>image/svg+xml</dc:format>
29 <dc:type
30 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
31 <dc:title></dc:title>
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs164">
37 <marker
38 inkscape:stockid="Arrow1Mend"
39 orient="auto"
40 refY="0.0"
41 refX="0.0"
42 id="Arrow1Mend"
43 style="overflow:visible;">
44 <path
45 id="path3924"
46 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 "
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
48 transform="scale(0.4) rotate(180) translate(10,0)" />
49 </marker>
50 <marker
51 inkscape:stockid="Arrow2Lend"
52 orient="auto"
53 refY="0.0"
54 refX="0.0"
55 id="Arrow2Lend"
56 style="overflow:visible;">
57 <path
58 id="path3936"
59 style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
60 d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
61 transform="scale(1.1) rotate(180) translate(1,0)" />
62 </marker>
63 </defs>
64 <sodipodi:namedview
65 pagecolor="#ffffff"
66 bordercolor="#666666"
67 borderopacity="1"
68 objecttolerance="10"
69 gridtolerance="10"
70 guidetolerance="10"
71 inkscape:pageopacity="0"
72 inkscape:pageshadow="2"
73 inkscape:window-width="845"
74 inkscape:window-height="988"
75 id="namedview162"
76 showgrid="false"
77 inkscape:zoom="1.0452196"
78 inkscape:cx="256.5"
79 inkscape:cy="387.00003"
80 inkscape:window-x="356"
81 inkscape:window-y="61"
82 inkscape:window-maximized="0"
83 inkscape:current-layer="g4" />
84 <g
85 style="stroke-width:.025in; fill:none"
86 id="g4">
87 <!-- Line: box -->
88 <rect
89 x="450"
90 y="0"
91 width="6300"
92 height="7350"
93 rx="0"
94 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
95 id="rect6" />
96 <!-- Line: box -->
97 <rect
98 x="4950"
99 y="4950"
100 width="1500"
101 height="900"
102 rx="0"
103 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
104 id="rect8" />
105 <!-- Line: box -->
106 <rect
107 x="750"
108 y="600"
109 width="5700"
110 height="3750"
111 rx="0"
112 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
113 id="rect10" />
114 <!-- Line -->
115 <polyline
116 points="5250,8100 5688,5912 "
117 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
118 id="polyline12" />
119 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
120 <polyline
121 points="5714 6068 5704 5822 5598 6044 "
122 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
123 id="polyline14" />
124 <!-- Line -->
125 <polyline
126 points="4050,9300 4486,7262 "
127 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
128 id="polyline16" />
129 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
130 <polyline
131 points="4514 7418 4506 7172 4396 7394 "
132 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
133 id="polyline18" />
134 <!-- Line -->
135 <polyline
136 points="1040,9300 1476,7262 "
137 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
138 id="polyline20" />
139 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
140 <polyline
141 points="1504 7418 1496 7172 1386 7394 "
142 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
143 id="polyline22" />
144 <!-- Line -->
145 <polyline
146 points="2240,8100 2676,6062 "
147 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
148 id="polyline24" />
149 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
150 <polyline
151 points="2704 6218 2696 5972 2586 6194 "
152 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
153 id="polyline26" />
154 <!-- Line: box -->
155 <rect
156 x="0"
157 y="450"
158 width="6300"
159 height="7350"
160 rx="0"
161 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
162 id="rect28" />
163 <!-- Line: box -->
164 <rect
165 x="300"
166 y="1050"
167 width="5700"
168 height="3750"
169 rx="0"
170 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
171 id="rect30" />
172 <!-- Line -->
173 <polyline
174 points="1350,3450 2350,2590 "
175 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
176 id="polyline32" />
177 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
178 <!-- Line -->
179 <polyline
180 points="4950,3450 3948,2590 "
181 style="stroke:#00d1d1;stroke-width:30.0045575;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
182 id="polyline36" />
183 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
184 <!-- Line -->
185 <polyline
186 points="4050,6600 4050,4414 "
187 style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
188 id="polyline40" />
189 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
190 <!-- Line -->
191 <polyline
192 points="1050,6600 1050,4414 "
193 style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
194 id="polyline44" />
195 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
196 <!-- Line -->
197 <polyline
198 points="2250,5400 2250,4414 "
199 style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
200 id="polyline48" />
201 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
202 <!-- Line -->
203 <polyline
204 points="2250,8100 2250,6364 "
205 style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)"
206 id="polyline52" />
207 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
208 <!-- Line -->
209 <polyline
210 points="1050,9300 1050,7564 "
211 style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)"
212 id="polyline56" />
213 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
214 <!-- Line -->
215 <polyline
216 points="4050,9300 4050,7564 "
217 style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)"
218 id="polyline60" />
219 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
220 <!-- Line -->
221 <polyline
222 points="5250,8100 5250,6364 "
223 style="stroke:#00ff00;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)"
224 id="polyline64" />
225 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
226 <!-- Circle -->
227 <circle
228 cx="2850"
229 cy="3900"
230 r="76"
231 style="fill:#000000;stroke:#000000;stroke-width:14;"
232 id="circle68" />
233 <!-- Circle -->
234 <circle
235 cx="3150"
236 cy="3900"
237 r="76"
238 style="fill:#000000;stroke:#000000;stroke-width:14;"
239 id="circle70" />
240 <!-- Circle -->
241 <circle
242 cx="3450"
243 cy="3900"
244 r="76"
245 style="fill:#000000;stroke:#000000;stroke-width:14;"
246 id="circle72" />
247 <!-- Circle -->
248 <circle
249 cx="1350"
250 cy="5100"
251 r="76"
252 style="fill:#000000;stroke:#000000;stroke-width:14;"
253 id="circle74" />
254 <!-- Circle -->
255 <circle
256 cx="1650"
257 cy="5100"
258 r="76"
259 style="fill:#000000;stroke:#000000;stroke-width:14;"
260 id="circle76" />
261 <!-- Circle -->
262 <circle
263 cx="1950"
264 cy="5100"
265 r="76"
266 style="fill:#000000;stroke:#000000;stroke-width:14;"
267 id="circle78" />
268 <!-- Circle -->
269 <circle
270 cx="4350"
271 cy="5100"
272 r="76"
273 style="fill:#000000;stroke:#000000;stroke-width:14;"
274 id="circle80" />
275 <!-- Circle -->
276 <circle
277 cx="4650"
278 cy="5100"
279 r="76"
280 style="fill:#000000;stroke:#000000;stroke-width:14;"
281 id="circle82" />
282 <!-- Circle -->
283 <circle
284 cx="4950"
285 cy="5100"
286 r="76"
287 style="fill:#000000;stroke:#000000;stroke-width:14;"
288 id="circle84" />
289 <!-- Line: box -->
290 <rect
291 x="750"
292 y="3450"
293 width="1800"
294 height="900"
295 rx="0"
296 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
297 id="rect86" />
298 <!-- Line: box -->
299 <rect
300 x="300"
301 y="6600"
302 width="1500"
303 height="900"
304 rx="0"
305 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
306 id="rect88" />
307 <!-- Line: box -->
308 <rect
309 x="3750"
310 y="3450"
311 width="1800"
312 height="900"
313 rx="0"
314 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
315 id="rect90" />
316 <!-- Line: box -->
317 <rect
318 x="4500"
319 y="5400"
320 width="1500"
321 height="900"
322 rx="0"
323 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
324 id="rect92" />
325 <!-- Line: box -->
326 <rect
327 x="3300"
328 y="6600"
329 width="1500"
330 height="900"
331 rx="0"
332 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
333 id="rect94" />
334 <!-- Line: box -->
335 <rect
336 x="2250"
337 y="1650"
338 width="1800"
339 height="900"
340 rx="0"
341 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
342 id="rect96" />
343 <!-- Line: box -->
344 <rect
345 x="0"
346 y="9300"
347 width="2100"
348 height="900"
349 rx="0"
350 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
351 id="rect98" />
352 <!-- Line: box -->
353 <rect
354 x="1350"
355 y="8100"
356 width="2100"
357 height="900"
358 rx="0"
359 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
360 id="rect100" />
361 <!-- Line: box -->
362 <rect
363 x="3000"
364 y="9300"
365 width="2100"
366 height="900"
367 rx="0"
368 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
369 id="rect102" />
370 <!-- Line: box -->
371 <rect
372 x="4350"
373 y="8100"
374 width="2100"
375 height="900"
376 rx="0"
377 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
378 id="rect104" />
379 <!-- Line: box -->
380 <rect
381 x="1500"
382 y="5400"
383 width="1500"
384 height="900"
385 rx="0"
386 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
387 id="rect106" />
388 <!-- Text -->
389 <text
390 xml:space="preserve"
391 x="6450"
392 y="300"
393 fill="#000000"
394 font-family="Helvetica"
395 font-style="normal"
396 font-weight="normal"
397 font-size="192"
398 text-anchor="end"
399 id="text108">rcu_bh</text>
400 <!-- Text -->
401 <text
402 xml:space="preserve"
403 x="3150"
404 y="1950"
405 fill="#000000"
406 font-family="Courier"
407 font-style="normal"
408 font-weight="bold"
409 font-size="192"
410 text-anchor="middle"
411 id="text110">struct</text>
412 <!-- Text -->
413 <text
414 xml:space="preserve"
415 x="3150"
416 y="2250"
417 fill="#000000"
418 font-family="Courier"
419 font-style="normal"
420 font-weight="bold"
421 font-size="192"
422 text-anchor="middle"
423 id="text112">rcu_node</text>
424 <!-- Text -->
425 <text
426 xml:space="preserve"
427 x="1650"
428 y="3750"
429 fill="#000000"
430 font-family="Courier"
431 font-style="normal"
432 font-weight="bold"
433 font-size="192"
434 text-anchor="middle"
435 id="text114">struct</text>
436 <!-- Text -->
437 <text
438 xml:space="preserve"
439 x="1650"
440 y="4050"
441 fill="#000000"
442 font-family="Courier"
443 font-style="normal"
444 font-weight="bold"
445 font-size="192"
446 text-anchor="middle"
447 id="text116">rcu_node</text>
448 <!-- Text -->
449 <text
450 xml:space="preserve"
451 x="4650"
452 y="4050"
453 fill="#000000"
454 font-family="Courier"
455 font-style="normal"
456 font-weight="bold"
457 font-size="192"
458 text-anchor="middle"
459 id="text118">rcu_node</text>
460 <!-- Text -->
461 <text
462 xml:space="preserve"
463 x="4650"
464 y="3750"
465 fill="#000000"
466 font-family="Courier"
467 font-style="normal"
468 font-weight="bold"
469 font-size="192"
470 text-anchor="middle"
471 id="text120">struct</text>
472 <!-- Text -->
473 <text
474 xml:space="preserve"
475 x="2250"
476 y="5700"
477 fill="#000000"
478 font-family="Courier"
479 font-style="normal"
480 font-weight="bold"
481 font-size="192"
482 text-anchor="middle"
483 id="text122">struct</text>
484 <!-- Text -->
485 <text
486 xml:space="preserve"
487 x="2250"
488 y="6000"
489 fill="#000000"
490 font-family="Courier"
491 font-style="normal"
492 font-weight="bold"
493 font-size="192"
494 text-anchor="middle"
495 id="text124">rcu_data</text>
496 <!-- Text -->
497 <text
498 xml:space="preserve"
499 x="1050"
500 y="6900"
501 fill="#000000"
502 font-family="Courier"
503 font-style="normal"
504 font-weight="bold"
505 font-size="192"
506 text-anchor="middle"
507 id="text126">struct</text>
508 <!-- Text -->
509 <text
510 xml:space="preserve"
511 x="1050"
512 y="7200"
513 fill="#000000"
514 font-family="Courier"
515 font-style="normal"
516 font-weight="bold"
517 font-size="192"
518 text-anchor="middle"
519 id="text128">rcu_data</text>
520 <!-- Text -->
521 <text
522 xml:space="preserve"
523 x="5250"
524 y="5700"
525 fill="#000000"
526 font-family="Courier"
527 font-style="normal"
528 font-weight="bold"
529 font-size="192"
530 text-anchor="middle"
531 id="text130">struct</text>
532 <!-- Text -->
533 <text
534 xml:space="preserve"
535 x="5250"
536 y="6000"
537 fill="#000000"
538 font-family="Courier"
539 font-style="normal"
540 font-weight="bold"
541 font-size="192"
542 text-anchor="middle"
543 id="text132">rcu_data</text>
544 <!-- Text -->
545 <text
546 xml:space="preserve"
547 x="4050"
548 y="6900"
549 fill="#000000"
550 font-family="Courier"
551 font-style="normal"
552 font-weight="bold"
553 font-size="192"
554 text-anchor="middle"
555 id="text134">struct</text>
556 <!-- Text -->
557 <text
558 xml:space="preserve"
559 x="4050"
560 y="7200"
561 fill="#000000"
562 font-family="Courier"
563 font-style="normal"
564 font-weight="bold"
565 font-size="192"
566 text-anchor="middle"
567 id="text136">rcu_data</text>
568 <!-- Text -->
569 <text
570 xml:space="preserve"
571 x="450"
572 y="1350"
573 fill="#000000"
574 font-family="Courier"
575 font-style="normal"
576 font-weight="bold"
577 font-size="192"
578 text-anchor="start"
579 id="text138">struct rcu_state</text>
580 <!-- Text -->
581 <text
582 xml:space="preserve"
583 x="1050"
584 y="9600"
585 fill="#000000"
586 font-family="Courier"
587 font-style="normal"
588 font-weight="bold"
589 font-size="192"
590 text-anchor="middle"
591 id="text140">struct</text>
592 <!-- Text -->
593 <text
594 xml:space="preserve"
595 x="1050"
596 y="9900"
597 fill="#000000"
598 font-family="Courier"
599 font-style="normal"
600 font-weight="bold"
601 font-size="192"
602 text-anchor="middle"
603 id="text142">rcu_dynticks</text>
604 <!-- Text -->
605 <text
606 xml:space="preserve"
607 x="4050"
608 y="9600"
609 fill="#000000"
610 font-family="Courier"
611 font-style="normal"
612 font-weight="bold"
613 font-size="192"
614 text-anchor="middle"
615 id="text144">struct</text>
616 <!-- Text -->
617 <text
618 xml:space="preserve"
619 x="4050"
620 y="9900"
621 fill="#000000"
622 font-family="Courier"
623 font-style="normal"
624 font-weight="bold"
625 font-size="192"
626 text-anchor="middle"
627 id="text146">rcu_dynticks</text>
628 <!-- Text -->
629 <text
630 xml:space="preserve"
631 x="2400"
632 y="8400"
633 fill="#000000"
634 font-family="Courier"
635 font-style="normal"
636 font-weight="bold"
637 font-size="192"
638 text-anchor="middle"
639 id="text148">struct</text>
640 <!-- Text -->
641 <text
642 xml:space="preserve"
643 x="2400"
644 y="8700"
645 fill="#000000"
646 font-family="Courier"
647 font-style="normal"
648 font-weight="bold"
649 font-size="192"
650 text-anchor="middle"
651 id="text150">rcu_dynticks</text>
652 <!-- Text -->
653 <text
654 xml:space="preserve"
655 x="5400"
656 y="8400"
657 fill="#000000"
658 font-family="Courier"
659 font-style="normal"
660 font-weight="bold"
661 font-size="192"
662 text-anchor="middle"
663 id="text152">struct</text>
664 <!-- Text -->
665 <text
666 xml:space="preserve"
667 x="5400"
668 y="8700"
669 fill="#000000"
670 font-family="Courier"
671 font-style="normal"
672 font-weight="bold"
673 font-size="192"
674 text-anchor="middle"
675 id="text154">rcu_dynticks</text>
676 <!-- Text -->
677 <text
678 xml:space="preserve"
679 x="6000"
680 y="750"
681 fill="#000000"
682 font-family="Helvetica"
683 font-style="normal"
684 font-weight="normal"
685 font-size="192"
686 text-anchor="end"
687 id="text156">rcu_sched</text>
688 <!-- Line -->
689 <polyline
690 points="5250,5400 5250,4414 "
691 style="stroke:#00d1d1;stroke-width:30.00455750000000066;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
692 id="polyline158" />
693 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
694 </g>
695</svg>
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg
deleted file mode 100644
index 15adcac036c7..000000000000
--- a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg
+++ /dev/null
@@ -1,741 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Creator: fig2dev Version 3.2 Patchlevel 5e -->
3
4<!-- CreationDate: Wed Dec 9 17:32:59 2015 -->
5
6<!-- Magnification: 2.000 -->
7
8<svg
9 xmlns:dc="http://purl.org/dc/elements/1.1/"
10 xmlns:cc="http://creativecommons.org/ns#"
11 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
12 xmlns:svg="http://www.w3.org/2000/svg"
13 xmlns="http://www.w3.org/2000/svg"
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16 width="6.1in"
17 height="8.9in"
18 viewBox="-44 -44 7288 10738"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="BigTreePreemptRCUBHdyntick.fig">
23 <metadata
24 id="metadata182">
25 <rdf:RDF>
26 <cc:Work
27 rdf:about="">
28 <dc:format>image/svg+xml</dc:format>
29 <dc:type
30 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
31 <dc:title></dc:title>
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs180">
37 <marker
38 inkscape:stockid="Arrow1Mend"
39 orient="auto"
40 refY="0.0"
41 refX="0.0"
42 id="Arrow1Mend"
43 style="overflow:visible;">
44 <path
45 id="path3940"
46 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 "
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
48 transform="scale(0.4) rotate(180) translate(10,0)" />
49 </marker>
50 </defs>
51 <sodipodi:namedview
52 pagecolor="#ffffff"
53 bordercolor="#666666"
54 borderopacity="1"
55 objecttolerance="10"
56 gridtolerance="10"
57 guidetolerance="10"
58 inkscape:pageopacity="0"
59 inkscape:pageshadow="2"
60 inkscape:window-width="874"
61 inkscape:window-height="1148"
62 id="namedview178"
63 showgrid="false"
64 inkscape:zoom="1.2097379"
65 inkscape:cx="274.5"
66 inkscape:cy="400.49997"
67 inkscape:window-x="946"
68 inkscape:window-y="24"
69 inkscape:window-maximized="0"
70 inkscape:current-layer="g4" />
71 <g
72 style="stroke-width:.025in; fill:none"
73 id="g4">
74 <!-- Line: box -->
75 <rect
76 x="900"
77 y="0"
78 width="6300"
79 height="7350"
80 rx="0"
81 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
82 id="rect6" />
83 <!-- Line: box -->
84 <rect
85 x="1200"
86 y="600"
87 width="5700"
88 height="3750"
89 rx="0"
90 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
91 id="rect8" />
92 <!-- Line: box -->
93 <rect
94 x="5400"
95 y="4950"
96 width="1500"
97 height="900"
98 rx="0"
99 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
100 id="rect10" />
101 <!-- Line: box -->
102 <rect
103 x="450"
104 y="450"
105 width="6300"
106 height="7350"
107 rx="0"
108 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
109 id="rect12" />
110 <!-- Line: box -->
111 <rect
112 x="750"
113 y="1050"
114 width="5700"
115 height="3750"
116 rx="0"
117 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
118 id="rect14" />
119 <!-- Line: box -->
120 <rect
121 x="4950"
122 y="5400"
123 width="1500"
124 height="900"
125 rx="0"
126 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
127 id="rect16" />
128 <!-- Line -->
129 <polyline
130 points="5250,8550 5688,6362 "
131 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
132 id="polyline18" />
133 <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240-->
134 <polyline
135 points="5714 6518 5704 6272 5598 6494 "
136 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
137 id="polyline20" />
138 <!-- Line -->
139 <polyline
140 points="4050,9750 4486,7712 "
141 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
142 id="polyline22" />
143 <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590-->
144 <polyline
145 points="4514 7868 4506 7622 4396 7844 "
146 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
147 id="polyline24" />
148 <!-- Line -->
149 <polyline
150 points="1040,9750 1476,7712 "
151 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
152 id="polyline26" />
153 <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590-->
154 <polyline
155 points="1504 7868 1496 7622 1386 7844 "
156 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
157 id="polyline28" />
158 <!-- Line -->
159 <polyline
160 points="2240,8550 2676,6512 "
161 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
162 id="polyline30" />
163 <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390-->
164 <polyline
165 points="2704 6668 2696 6422 2586 6644 "
166 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
167 id="polyline32" />
168 <!-- Line -->
169 <polyline
170 points="4050,9750 5682,6360 "
171 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
172 id="polyline34" />
173 <!-- Arrowhead on XXXpoint 4050 9750 - 5736 6246-->
174 <polyline
175 points="5672 6518 5722 6276 5562 6466 "
176 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
177 id="polyline36" />
178 <!-- Line -->
179 <polyline
180 points="1010,9750 2642,6360 "
181 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
182 id="polyline38" />
183 <!-- Arrowhead on XXXpoint 1010 9750 - 2696 6246-->
184 <polyline
185 points="2632 6518 2682 6276 2522 6466 "
186 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; "
187 id="polyline40" />
188 <!-- Line: box -->
189 <rect
190 x="0"
191 y="900"
192 width="6300"
193 height="7350"
194 rx="0"
195 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
196 id="rect42" />
197 <!-- Line: box -->
198 <rect
199 x="300"
200 y="1500"
201 width="5700"
202 height="3750"
203 rx="0"
204 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
205 id="rect44" />
206 <!-- Line -->
207 <polyline
208 points="1350,3900 2350,3040 "
209 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
210 id="polyline46" />
211 <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960-->
212 <!-- Line -->
213 <polyline
214 points="4950,3900 3948,3040 "
215 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
216 id="polyline50" />
217 <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960-->
218 <!-- Line -->
219 <polyline
220 points="4050,7050 4050,4864 "
221 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
222 id="polyline54" />
223 <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740-->
224 <!-- Line -->
225 <polyline
226 points="1050,7050 1050,4864 "
227 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
228 id="polyline58" />
229 <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740-->
230 <!-- Line -->
231 <polyline
232 points="2250,5850 2250,4864 "
233 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
234 id="polyline62" />
235 <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740-->
236 <!-- Line -->
237 <polyline
238 points="2250,8550 2250,6814 "
239 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
240 id="polyline66" />
241 <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690-->
242 <!-- Line -->
243 <polyline
244 points="1050,9750 1050,8014 "
245 style="stroke:#00ff00;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
246 id="polyline70" />
247 <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890-->
248 <!-- Line -->
249 <polyline
250 points="4050,9750 4050,8014 "
251 style="stroke:#00ff00;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
252 id="polyline74" />
253 <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890-->
254 <!-- Line -->
255 <polyline
256 points="5250,8550 5250,6814 "
257 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
258 id="polyline78" />
259 <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690-->
260 <!-- Circle -->
261 <circle
262 cx="2850"
263 cy="4350"
264 r="76"
265 style="fill:#000000;stroke:#000000;stroke-width:14;"
266 id="circle82" />
267 <!-- Circle -->
268 <circle
269 cx="3150"
270 cy="4350"
271 r="76"
272 style="fill:#000000;stroke:#000000;stroke-width:14;"
273 id="circle84" />
274 <!-- Circle -->
275 <circle
276 cx="3450"
277 cy="4350"
278 r="76"
279 style="fill:#000000;stroke:#000000;stroke-width:14;"
280 id="circle86" />
281 <!-- Circle -->
282 <circle
283 cx="1350"
284 cy="5550"
285 r="76"
286 style="fill:#000000;stroke:#000000;stroke-width:14;"
287 id="circle88" />
288 <!-- Circle -->
289 <circle
290 cx="1650"
291 cy="5550"
292 r="76"
293 style="fill:#000000;stroke:#000000;stroke-width:14;"
294 id="circle90" />
295 <!-- Circle -->
296 <circle
297 cx="1950"
298 cy="5550"
299 r="76"
300 style="fill:#000000;stroke:#000000;stroke-width:14;"
301 id="circle92" />
302 <!-- Circle -->
303 <circle
304 cx="4350"
305 cy="5550"
306 r="76"
307 style="fill:#000000;stroke:#000000;stroke-width:14;"
308 id="circle94" />
309 <!-- Circle -->
310 <circle
311 cx="4650"
312 cy="5550"
313 r="76"
314 style="fill:#000000;stroke:#000000;stroke-width:14;"
315 id="circle96" />
316 <!-- Circle -->
317 <circle
318 cx="4950"
319 cy="5550"
320 r="76"
321 style="fill:#000000;stroke:#000000;stroke-width:14;"
322 id="circle98" />
323 <!-- Line: box -->
324 <rect
325 x="750"
326 y="3900"
327 width="1800"
328 height="900"
329 rx="0"
330 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
331 id="rect100" />
332 <!-- Line: box -->
333 <rect
334 x="300"
335 y="7050"
336 width="1500"
337 height="900"
338 rx="0"
339 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
340 id="rect102" />
341 <!-- Line: box -->
342 <rect
343 x="3750"
344 y="3900"
345 width="1800"
346 height="900"
347 rx="0"
348 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
349 id="rect104" />
350 <!-- Line: box -->
351 <rect
352 x="4500"
353 y="5850"
354 width="1500"
355 height="900"
356 rx="0"
357 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
358 id="rect106" />
359 <!-- Line: box -->
360 <rect
361 x="3300"
362 y="7050"
363 width="1500"
364 height="900"
365 rx="0"
366 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
367 id="rect108" />
368 <!-- Line: box -->
369 <rect
370 x="2250"
371 y="2100"
372 width="1800"
373 height="900"
374 rx="0"
375 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; "
376 id="rect110" />
377 <!-- Line: box -->
378 <rect
379 x="0"
380 y="9750"
381 width="2100"
382 height="900"
383 rx="0"
384 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
385 id="rect112" />
386 <!-- Line: box -->
387 <rect
388 x="1350"
389 y="8550"
390 width="2100"
391 height="900"
392 rx="0"
393 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
394 id="rect114" />
395 <!-- Line: box -->
396 <rect
397 x="3000"
398 y="9750"
399 width="2100"
400 height="900"
401 rx="0"
402 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
403 id="rect116" />
404 <!-- Line: box -->
405 <rect
406 x="4350"
407 y="8550"
408 width="2100"
409 height="900"
410 rx="0"
411 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
412 id="rect118" />
413 <!-- Line: box -->
414 <rect
415 x="1500"
416 y="5850"
417 width="1500"
418 height="900"
419 rx="0"
420 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
421 id="rect120" />
422 <!-- Text -->
423 <text
424 xml:space="preserve"
425 x="6450"
426 y="750"
427 fill="#000000"
428 font-family="Helvetica"
429 font-style="normal"
430 font-weight="normal"
431 font-size="192"
432 text-anchor="end"
433 id="text122">rcu_bh</text>
434 <!-- Text -->
435 <text
436 xml:space="preserve"
437 x="3150"
438 y="2400"
439 fill="#000000"
440 font-family="Courier"
441 font-style="normal"
442 font-weight="bold"
443 font-size="192"
444 text-anchor="middle"
445 id="text124">struct</text>
446 <!-- Text -->
447 <text
448 xml:space="preserve"
449 x="3150"
450 y="2700"
451 fill="#000000"
452 font-family="Courier"
453 font-style="normal"
454 font-weight="bold"
455 font-size="192"
456 text-anchor="middle"
457 id="text126">rcu_node</text>
458 <!-- Text -->
459 <text
460 xml:space="preserve"
461 x="1650"
462 y="4200"
463 fill="#000000"
464 font-family="Courier"
465 font-style="normal"
466 font-weight="bold"
467 font-size="192"
468 text-anchor="middle"
469 id="text128">struct</text>
470 <!-- Text -->
471 <text
472 xml:space="preserve"
473 x="1650"
474 y="4500"
475 fill="#000000"
476 font-family="Courier"
477 font-style="normal"
478 font-weight="bold"
479 font-size="192"
480 text-anchor="middle"
481 id="text130">rcu_node</text>
482 <!-- Text -->
483 <text
484 xml:space="preserve"
485 x="4650"
486 y="4500"
487 fill="#000000"
488 font-family="Courier"
489 font-style="normal"
490 font-weight="bold"
491 font-size="192"
492 text-anchor="middle"
493 id="text132">rcu_node</text>
494 <!-- Text -->
495 <text
496 xml:space="preserve"
497 x="4650"
498 y="4200"
499 fill="#000000"
500 font-family="Courier"
501 font-style="normal"
502 font-weight="bold"
503 font-size="192"
504 text-anchor="middle"
505 id="text134">struct</text>
506 <!-- Text -->
507 <text
508 xml:space="preserve"
509 x="2250"
510 y="6150"
511 fill="#000000"
512 font-family="Courier"
513 font-style="normal"
514 font-weight="bold"
515 font-size="192"
516 text-anchor="middle"
517 id="text136">struct</text>
518 <!-- Text -->
519 <text
520 xml:space="preserve"
521 x="2250"
522 y="6450"
523 fill="#000000"
524 font-family="Courier"
525 font-style="normal"
526 font-weight="bold"
527 font-size="192"
528 text-anchor="middle"
529 id="text138">rcu_data</text>
530 <!-- Text -->
531 <text
532 xml:space="preserve"
533 x="1050"
534 y="7350"
535 fill="#000000"
536 font-family="Courier"
537 font-style="normal"
538 font-weight="bold"
539 font-size="192"
540 text-anchor="middle"
541 id="text140">struct</text>
542 <!-- Text -->
543 <text
544 xml:space="preserve"
545 x="1050"
546 y="7650"
547 fill="#000000"
548 font-family="Courier"
549 font-style="normal"
550 font-weight="bold"
551 font-size="192"
552 text-anchor="middle"
553 id="text142">rcu_data</text>
554 <!-- Text -->
555 <text
556 xml:space="preserve"
557 x="5250"
558 y="6150"
559 fill="#000000"
560 font-family="Courier"
561 font-style="normal"
562 font-weight="bold"
563 font-size="192"
564 text-anchor="middle"
565 id="text144">struct</text>
566 <!-- Text -->
567 <text
568 xml:space="preserve"
569 x="5250"
570 y="6450"
571 fill="#000000"
572 font-family="Courier"
573 font-style="normal"
574 font-weight="bold"
575 font-size="192"
576 text-anchor="middle"
577 id="text146">rcu_data</text>
578 <!-- Text -->
579 <text
580 xml:space="preserve"
581 x="4050"
582 y="7350"
583 fill="#000000"
584 font-family="Courier"
585 font-style="normal"
586 font-weight="bold"
587 font-size="192"
588 text-anchor="middle"
589 id="text148">struct</text>
590 <!-- Text -->
591 <text
592 xml:space="preserve"
593 x="4050"
594 y="7650"
595 fill="#000000"
596 font-family="Courier"
597 font-style="normal"
598 font-weight="bold"
599 font-size="192"
600 text-anchor="middle"
601 id="text150">rcu_data</text>
602 <!-- Text -->
603 <text
604 xml:space="preserve"
605 x="450"
606 y="1800"
607 fill="#000000"
608 font-family="Courier"
609 font-style="normal"
610 font-weight="bold"
611 font-size="192"
612 text-anchor="start"
613 id="text152">struct rcu_state</text>
614 <!-- Text -->
615 <text
616 xml:space="preserve"
617 x="1050"
618 y="10050"
619 fill="#000000"
620 font-family="Courier"
621 font-style="normal"
622 font-weight="bold"
623 font-size="192"
624 text-anchor="middle"
625 id="text154">struct</text>
626 <!-- Text -->
627 <text
628 xml:space="preserve"
629 x="1050"
630 y="10350"
631 fill="#000000"
632 font-family="Courier"
633 font-style="normal"
634 font-weight="bold"
635 font-size="192"
636 text-anchor="middle"
637 id="text156">rcu_dynticks</text>
638 <!-- Text -->
639 <text
640 xml:space="preserve"
641 x="4050"
642 y="10050"
643 fill="#000000"
644 font-family="Courier"
645 font-style="normal"
646 font-weight="bold"
647 font-size="192"
648 text-anchor="middle"
649 id="text158">struct</text>
650 <!-- Text -->
651 <text
652 xml:space="preserve"
653 x="4050"
654 y="10350"
655 fill="#000000"
656 font-family="Courier"
657 font-style="normal"
658 font-weight="bold"
659 font-size="192"
660 text-anchor="middle"
661 id="text160">rcu_dynticks</text>
662 <!-- Text -->
663 <text
664 xml:space="preserve"
665 x="2400"
666 y="8850"
667 fill="#000000"
668 font-family="Courier"
669 font-style="normal"
670 font-weight="bold"
671 font-size="192"
672 text-anchor="middle"
673 id="text162">struct</text>
674 <!-- Text -->
675 <text
676 xml:space="preserve"
677 x="2400"
678 y="9150"
679 fill="#000000"
680 font-family="Courier"
681 font-style="normal"
682 font-weight="bold"
683 font-size="192"
684 text-anchor="middle"
685 id="text164">rcu_dynticks</text>
686 <!-- Text -->
687 <text
688 xml:space="preserve"
689 x="5400"
690 y="8850"
691 fill="#000000"
692 font-family="Courier"
693 font-style="normal"
694 font-weight="bold"
695 font-size="192"
696 text-anchor="middle"
697 id="text166">struct</text>
698 <!-- Text -->
699 <text
700 xml:space="preserve"
701 x="5400"
702 y="9150"
703 fill="#000000"
704 font-family="Courier"
705 font-style="normal"
706 font-weight="bold"
707 font-size="192"
708 text-anchor="middle"
709 id="text168">rcu_dynticks</text>
710 <!-- Text -->
711 <text
712 xml:space="preserve"
713 x="6900"
714 y="300"
715 fill="#000000"
716 font-family="Helvetica"
717 font-style="normal"
718 font-weight="normal"
719 font-size="192"
720 text-anchor="end"
721 id="text170">rcu_preempt</text>
722 <!-- Text -->
723 <text
724 xml:space="preserve"
725 x="6000"
726 y="1200"
727 fill="#000000"
728 font-family="Helvetica"
729 font-style="normal"
730 font-weight="normal"
731 font-size="192"
732 text-anchor="end"
733 id="text172">rcu_sched</text>
734 <!-- Line -->
735 <polyline
736 points="5250,5850 5250,4864 "
737 style="stroke:#00d1d1;stroke-width:30.00205472;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
738 id="polyline174" />
739 <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740-->
740 </g>
741</svg>
diff --git a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg
index bbc3801470d0..3a1a4f85dc3a 100644
--- a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg
+++ b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg
@@ -13,12 +13,12 @@
13 xmlns="http://www.w3.org/2000/svg" 13 xmlns="http://www.w3.org/2000/svg"
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16 width="7.4in" 16 width="7.4000001in"
17 height="9.9in" 17 height="7.9000001in"
18 viewBox="-44 -44 8938 11938" 18 viewBox="-44 -44 8938 9526.283"
19 id="svg2" 19 id="svg2"
20 version="1.1" 20 version="1.1"
21 inkscape:version="0.48.4 r9939" 21 inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
22 sodipodi:docname="BigTreePreemptRCUBHdyntickCB.svg"> 22 sodipodi:docname="BigTreePreemptRCUBHdyntickCB.svg">
23 <metadata 23 <metadata
24 id="metadata212"> 24 id="metadata212">
@@ -37,15 +37,46 @@
37 <marker 37 <marker
38 inkscape:stockid="Arrow1Mend" 38 inkscape:stockid="Arrow1Mend"
39 orient="auto" 39 orient="auto"
40 refY="0.0" 40 refY="0"
41 refX="0.0" 41 refX="0"
42 id="marker1177"
43 style="overflow:visible"
44 inkscape:isstock="true">
45 <path
46 id="path897"
47 d="M 0,0 5,-5 -12.5,0 5,5 Z"
48 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
49 transform="matrix(-0.4,0,0,-0.4,-4,0)"
50 inkscape:connector-curvature="0" />
51 </marker>
52 <marker
53 inkscape:stockid="Arrow1Lend"
54 orient="auto"
55 refY="0"
56 refX="0"
57 id="Arrow1Lend"
58 style="overflow:visible"
59 inkscape:isstock="true">
60 <path
61 id="path891"
62 d="M 0,0 5,-5 -12.5,0 5,5 Z"
63 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
64 transform="matrix(-0.8,0,0,-0.8,-10,0)"
65 inkscape:connector-curvature="0" />
66 </marker>
67 <marker
68 inkscape:stockid="Arrow1Mend"
69 orient="auto"
70 refY="0"
71 refX="0"
42 id="Arrow1Mend" 72 id="Arrow1Mend"
43 style="overflow:visible;"> 73 style="overflow:visible">
44 <path 74 <path
45 id="path3970" 75 id="path3970"
46 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 " 76 d="M 0,0 5,-5 -12.5,0 5,5 Z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" 77 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
48 transform="scale(0.4) rotate(180) translate(10,0)" /> 78 transform="matrix(-0.4,0,0,-0.4,-4,0)"
79 inkscape:connector-curvature="0" />
49 </marker> 80 </marker>
50 </defs> 81 </defs>
51 <sodipodi:namedview 82 <sodipodi:namedview
@@ -57,802 +88,575 @@
57 guidetolerance="10" 88 guidetolerance="10"
58 inkscape:pageopacity="0" 89 inkscape:pageopacity="0"
59 inkscape:pageshadow="2" 90 inkscape:pageshadow="2"
60 inkscape:window-width="881" 91 inkscape:window-width="1920"
61 inkscape:window-height="1128" 92 inkscape:window-height="1019"
62 id="namedview208" 93 id="namedview208"
63 showgrid="false" 94 showgrid="false"
64 inkscape:zoom="1.0195195" 95 inkscape:zoom="1.0195195"
65 inkscape:cx="333" 96 inkscape:cx="166.25478"
66 inkscape:cy="445.49997" 97 inkscape:cy="362.18693"
67 inkscape:window-x="936" 98 inkscape:window-x="0"
68 inkscape:window-y="24" 99 inkscape:window-y="0"
69 inkscape:window-maximized="0" 100 inkscape:window-maximized="1"
70 inkscape:current-layer="g4" /> 101 inkscape:current-layer="g4" />
71 <g 102 <g
72 style="stroke-width:.025in; fill:none" 103 style="fill:none;stroke-width:0.025in"
73 id="g4"> 104 id="g4"
105 transform="translate(0,-2415.6743)">
74 <!-- Line: box --> 106 <!-- Line: box -->
75 <rect
76 x="900"
77 y="0"
78 width="6300"
79 height="7350"
80 rx="0"
81 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
82 id="rect6" />
83 <!-- Line: box --> 107 <!-- Line: box -->
84 <rect
85 x="1200"
86 y="600"
87 width="5700"
88 height="3750"
89 rx="0"
90 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
91 id="rect8" />
92 <!-- Line: box --> 108 <!-- Line: box -->
93 <rect
94 x="5400"
95 y="4950"
96 width="1500"
97 height="900"
98 rx="0"
99 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
100 id="rect10" />
101 <!-- Line: box --> 109 <!-- Line: box -->
102 <rect
103 x="450"
104 y="450"
105 width="6300"
106 height="7350"
107 rx="0"
108 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
109 id="rect12" />
110 <!-- Line: box --> 110 <!-- Line: box -->
111 <rect
112 x="750"
113 y="1050"
114 width="5700"
115 height="3750"
116 rx="0"
117 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
118 id="rect14" />
119 <!-- Line: box --> 111 <!-- Line: box -->
120 <rect
121 x="4950"
122 y="5400"
123 width="1500"
124 height="900"
125 rx="0"
126 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
127 id="rect16" />
128 <!-- Line --> 112 <!-- Line -->
129 <polyline
130 points="5250,8550 5688,6362 "
131 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
132 id="polyline18" />
133 <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240--> 113 <!-- Arrowhead on XXXpoint 5250 8550 - 5710 6240-->
134 <polyline 114 <polyline
135 points="5714 6518 5704 6272 5598 6494 " 115 points="5714 6518 5704 6272 5598 6494 "
136 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 116 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
137 id="polyline20" /> 117 id="polyline20"
118 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
138 <!-- Line --> 119 <!-- Line -->
139 <polyline
140 points="4050,9750 4486,7712 "
141 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
142 id="polyline22" />
143 <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590--> 120 <!-- Arrowhead on XXXpoint 4050 9750 - 4512 7590-->
144 <polyline 121 <polyline
145 points="4514 7868 4506 7622 4396 7844 " 122 points="4514 7868 4506 7622 4396 7844 "
146 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 123 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
147 id="polyline24" /> 124 id="polyline24"
125 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
148 <!-- Line --> 126 <!-- Line -->
149 <polyline
150 points="1040,9750 1476,7712 "
151 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
152 id="polyline26" />
153 <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590--> 127 <!-- Arrowhead on XXXpoint 1040 9750 - 1502 7590-->
154 <polyline 128 <polyline
155 points="1504 7868 1496 7622 1386 7844 " 129 points="1504 7868 1496 7622 1386 7844 "
156 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 130 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
157 id="polyline28" /> 131 id="polyline28"
132 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
158 <!-- Line --> 133 <!-- Line -->
159 <polyline
160 points="2240,8550 2676,6512 "
161 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
162 id="polyline30" />
163 <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390--> 134 <!-- Arrowhead on XXXpoint 2240 8550 - 2702 6390-->
164 <polyline 135 <polyline
165 points="2704 6668 2696 6422 2586 6644 " 136 points="2704 6668 2696 6422 2586 6644 "
166 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 137 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
167 id="polyline32" /> 138 id="polyline32"
139 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
168 <!-- Line --> 140 <!-- Line -->
169 <polyline
170 points="4050,9600 5692,6062 "
171 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
172 id="polyline34" />
173 <!-- Arrowhead on XXXpoint 4050 9600 - 5744 5948--> 141 <!-- Arrowhead on XXXpoint 4050 9600 - 5744 5948-->
174 <polyline 142 <polyline
175 points="5682 6220 5730 5978 5574 6170 " 143 points="5682 6220 5730 5978 5574 6170 "
176 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 144 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
177 id="polyline36" /> 145 id="polyline36"
146 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
178 <!-- Line --> 147 <!-- Line -->
179 <polyline
180 points="1086,9600 2728,6062 "
181 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
182 id="polyline38" />
183 <!-- Arrowhead on XXXpoint 1086 9600 - 2780 5948--> 148 <!-- Arrowhead on XXXpoint 1086 9600 - 2780 5948-->
184 <polyline 149 <polyline
185 points="2718 6220 2766 5978 2610 6170 " 150 points="2718 6220 2766 5978 2610 6170 "
186 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 151 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
187 id="polyline40" /> 152 id="polyline40"
153 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
188 <!-- Line: box --> 154 <!-- Line: box -->
189 <rect 155 <rect
190 x="0" 156 x="12.340758"
191 y="900" 157 y="2442.5947"
192 width="6300" 158 width="6300"
193 height="7350" 159 height="7045.3135"
194 rx="0" 160 rx="0"
195 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " 161 style="fill:#ffffff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
196 id="rect42" /> 162 id="rect42" />
197 <!-- Line: box --> 163 <!-- Line: box -->
198 <rect 164 <rect
199 x="300" 165 x="312.34076"
200 y="1500" 166 y="3017.7224"
201 width="5700" 167 width="5700"
202 height="3750" 168 height="3594.5476"
203 rx="0" 169 rx="0"
204 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " 170 style="fill:#ffff00;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
205 id="rect44" /> 171 id="rect44" />
206 <!-- Line --> 172 <!-- Line -->
207 <polyline 173 <polyline
208 points="1350,3900 2350,3040 " 174 points="1350,3900 2350,3040 "
209 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 175 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
210 id="polyline46" /> 176 id="polyline46"
177 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
211 <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960--> 178 <!-- Arrowhead on XXXpoint 1350 3900 - 2444 2960-->
212 <!-- Line --> 179 <!-- Line -->
213 <polyline 180 <polyline
214 points="4950,3900 3948,3040 " 181 points="4950,3900 3948,3040 "
215 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 182 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
216 id="polyline50" /> 183 id="polyline50"
184 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
217 <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960--> 185 <!-- Arrowhead on XXXpoint 4950 3900 - 3854 2960-->
218 <!-- Line --> 186 <!-- Line -->
219 <polyline 187 <polyline
220 points="4050,7050 4050,4864 " 188 points="4050,7050 4050,4864 "
221 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 189 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
222 id="polyline54" /> 190 id="polyline54"
191 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
223 <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740--> 192 <!-- Arrowhead on XXXpoint 4050 7050 - 4050 4740-->
224 <!-- Line --> 193 <!-- Line -->
225 <polyline 194 <polyline
226 points="1050,7050 1050,4864 " 195 points="1050,7050 1050,4864 "
227 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 196 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
228 id="polyline58" /> 197 id="polyline58"
198 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
229 <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740--> 199 <!-- Arrowhead on XXXpoint 1050 7050 - 1050 4740-->
230 <!-- Line --> 200 <!-- Line -->
231 <polyline 201 <polyline
232 points="2250,5850 2250,4864 " 202 points="2250,5850 2250,4864 "
233 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 203 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
234 id="polyline62" /> 204 id="polyline62"
205 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
235 <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740--> 206 <!-- Arrowhead on XXXpoint 2250 5850 - 2250 4740-->
236 <!-- Line --> 207 <!-- Line -->
237 <polyline
238 points="2250,8550 2250,6814 "
239 style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
240 id="polyline66" />
241 <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690--> 208 <!-- Arrowhead on XXXpoint 2250 8550 - 2250 6690-->
242 <!-- Line --> 209 <!-- Line -->
243 <polyline
244 points="1050,9750 1050,8014 "
245 style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
246 id="polyline70" />
247 <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890--> 210 <!-- Arrowhead on XXXpoint 1050 9750 - 1050 7890-->
248 <!-- Line --> 211 <!-- Line -->
249 <polyline
250 points="4050,9750 4050,8014 "
251 style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
252 id="polyline74" />
253 <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890--> 212 <!-- Arrowhead on XXXpoint 4050 9750 - 4050 7890-->
254 <!-- Line --> 213 <!-- Line -->
255 <polyline
256 points="5250,8550 5250,6814 "
257 style="stroke:#00ff00;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
258 id="polyline78" />
259 <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690--> 214 <!-- Arrowhead on XXXpoint 5250 8550 - 5250 6690-->
260 <!-- Line --> 215 <!-- Line -->
261 <polyline
262 points="6000,6300 8048,7910 "
263 style="stroke:#87cfff;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)"
264 id="polyline82" />
265 <!-- Arrowhead on XXXpoint 6000 6300 - 8146 7986--> 216 <!-- Arrowhead on XXXpoint 6000 6300 - 8146 7986-->
266 <!-- Circle --> 217 <!-- Circle -->
267 <circle 218 <ellipse
268 cx="2850" 219 cx="2862.3408"
269 cy="4350" 220 cy="5749.5786"
270 r="76" 221 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
271 style="fill:#000000;stroke:#000000;stroke-width:14;" 222 id="circle86"
272 id="circle86" /> 223 rx="76"
224 ry="72.849495" />
273 <!-- Circle --> 225 <!-- Circle -->
274 <circle 226 <ellipse
275 cx="3150" 227 cx="3162.3408"
276 cy="4350" 228 cy="5749.5786"
277 r="76" 229 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
278 style="fill:#000000;stroke:#000000;stroke-width:14;" 230 id="circle88"
279 id="circle88" /> 231 rx="76"
232 ry="72.849495" />
280 <!-- Circle --> 233 <!-- Circle -->
281 <circle 234 <ellipse
282 cx="3450" 235 cx="3462.3408"
283 cy="4350" 236 cy="5749.5786"
284 r="76" 237 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
285 style="fill:#000000;stroke:#000000;stroke-width:14;" 238 id="circle90"
286 id="circle90" /> 239 rx="76"
240 ry="72.849495" />
287 <!-- Circle --> 241 <!-- Circle -->
288 <circle 242 <ellipse
289 cx="1350" 243 cx="1362.3407"
290 cy="5550" 244 cy="6899.834"
291 r="76" 245 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
292 style="fill:#000000;stroke:#000000;stroke-width:14;" 246 id="circle92"
293 id="circle92" /> 247 rx="76"
248 ry="72.849495" />
294 <!-- Circle --> 249 <!-- Circle -->
295 <circle 250 <ellipse
296 cx="1650" 251 cx="1662.3407"
297 cy="5550" 252 cy="6899.834"
298 r="76" 253 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
299 style="fill:#000000;stroke:#000000;stroke-width:14;" 254 id="circle94"
300 id="circle94" /> 255 rx="76"
256 ry="72.849495" />
301 <!-- Circle --> 257 <!-- Circle -->
302 <circle 258 <ellipse
303 cx="1950" 259 cx="1962.3407"
304 cy="5550" 260 cy="6899.834"
305 r="76" 261 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
306 style="fill:#000000;stroke:#000000;stroke-width:14;" 262 id="circle96"
307 id="circle96" /> 263 rx="76"
264 ry="72.849495" />
308 <!-- Circle --> 265 <!-- Circle -->
309 <circle 266 <ellipse
310 cx="4350" 267 cx="4362.3408"
311 cy="5550" 268 cy="6899.834"
312 r="76" 269 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
313 style="fill:#000000;stroke:#000000;stroke-width:14;" 270 id="circle98"
314 id="circle98" /> 271 rx="76"
272 ry="72.849495" />
315 <!-- Circle --> 273 <!-- Circle -->
316 <circle 274 <ellipse
317 cx="4650" 275 cx="4662.3408"
318 cy="5550" 276 cy="6899.834"
319 r="76" 277 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
320 style="fill:#000000;stroke:#000000;stroke-width:14;" 278 id="circle100"
321 id="circle100" /> 279 rx="76"
280 ry="72.849495" />
322 <!-- Circle --> 281 <!-- Circle -->
323 <circle 282 <ellipse
324 cx="4950" 283 cx="4962.3408"
325 cy="5550" 284 cy="6899.834"
326 r="76" 285 style="fill:#000000;stroke:#000000;stroke-width:13.70675087"
327 style="fill:#000000;stroke:#000000;stroke-width:14;" 286 id="circle102"
328 id="circle102" /> 287 rx="76"
288 ry="72.849495" />
329 <!-- Line: box --> 289 <!-- Line: box -->
330 <rect 290 <rect
331 x="7350" 291 x="6745.3027"
332 y="7950" 292 y="8146.0654"
333 width="1500" 293 width="1500"
334 height="900" 294 height="862.69141"
335 rx="0" 295 rx="0"
336 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 296 style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
337 id="rect104" /> 297 id="rect104" />
338 <!-- Line: box --> 298 <!-- Line: box -->
339 <rect 299 <rect
340 x="7350" 300 x="6745.3027"
341 y="9450" 301 y="9583.8857"
342 width="1500" 302 width="1500"
343 height="900" 303 height="862.69141"
344 rx="0" 304 rx="0"
345 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 305 style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
346 id="rect106" /> 306 id="rect106" />
347 <!-- Line --> 307 <!-- Line -->
348 <polyline 308 <polyline
349 points="8100,8850 8100,9384 " 309 points="8100,8850 8100,9384 "
350 style="stroke:#000000;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" 310 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend)"
351 id="polyline108" /> 311 id="polyline108"
312 transform="matrix(1,0,0,0.95854605,-604.69715,525.62477)" />
352 <!-- Arrowhead on XXXpoint 8100 8850 - 8100 9510--> 313 <!-- Arrowhead on XXXpoint 8100 8850 - 8100 9510-->
353 <!-- Line: box --> 314 <!-- Line: box -->
354 <rect 315 <rect
355 x="7350" 316 x="6745.3027"
356 y="10950" 317 y="11021.704"
357 width="1500" 318 width="1500"
358 height="900" 319 height="862.69141"
359 rx="0" 320 rx="0"
360 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 321 style="stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
361 id="rect112" /> 322 id="rect112" />
362 <!-- Line --> 323 <!-- Line -->
363 <polyline 324 <polyline
364 points="8100,10350 8100,10884 " 325 points="8100,10350 8100,10884 "
365 style="stroke:#000000;stroke-width:30;stroke-linejoin:miter;stroke-linecap:butt;marker-end:url(#Arrow1Mend)" 326 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend)"
366 id="polyline114" /> 327 id="polyline114"
328 transform="matrix(1,0,0,0.95854605,-604.69715,525.62477)" />
367 <!-- Arrowhead on XXXpoint 8100 10350 - 8100 11010--> 329 <!-- Arrowhead on XXXpoint 8100 10350 - 8100 11010-->
368 <!-- Line: box --> 330 <!-- Line: box -->
369 <rect 331 <rect
370 x="750" 332 x="762.34076"
371 y="3900" 333 y="5318.2324"
372 width="1800" 334 width="1800"
373 height="900" 335 height="862.69141"
374 rx="0" 336 rx="0"
375 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 337 style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
376 id="rect118" /> 338 id="rect118" />
377 <!-- Line: box --> 339 <!-- Line: box -->
378 <rect 340 <rect
379 x="300" 341 x="312.34076"
380 y="7050" 342 y="8337.6533"
381 width="1500" 343 width="1500"
382 height="900" 344 height="862.69141"
383 rx="0" 345 rx="0"
384 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 346 style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
385 id="rect120" /> 347 id="rect120" />
386 <!-- Line: box --> 348 <!-- Line: box -->
387 <rect 349 <rect
388 x="3750" 350 x="3762.3408"
389 y="3900" 351 y="5318.2324"
390 width="1800" 352 width="1800"
391 height="900" 353 height="862.69141"
392 rx="0" 354 rx="0"
393 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 355 style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
394 id="rect122" /> 356 id="rect122" />
395 <!-- Line: box --> 357 <!-- Line: box -->
396 <rect 358 <rect
397 x="4500" 359 x="4512.3408"
398 y="5850" 360 y="7187.3975"
399 width="1500" 361 width="1500"
400 height="900" 362 height="862.69141"
401 rx="0" 363 rx="0"
402 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 364 style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
403 id="rect124" /> 365 id="rect124" />
404 <!-- Line: box --> 366 <!-- Line: box -->
405 <rect 367 <rect
406 x="3300" 368 x="3312.3408"
407 y="7050" 369 y="8337.6533"
408 width="1500" 370 width="1500"
409 height="900" 371 height="862.69141"
410 rx="0" 372 rx="0"
411 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 373 style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
412 id="rect126" /> 374 id="rect126" />
413 <!-- Line: box --> 375 <!-- Line: box -->
414 <rect 376 <rect
415 x="2250" 377 x="2262.3408"
416 y="2100" 378 y="3592.8503"
417 width="1800" 379 width="1800"
418 height="900" 380 height="862.69141"
419 rx="0" 381 rx="0"
420 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 382 style="fill:#ffbfbf;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
421 id="rect128" /> 383 id="rect128" />
422 <!-- Line: box --> 384 <!-- Line: box -->
423 <rect
424 x="0"
425 y="9750"
426 width="2100"
427 height="900"
428 rx="0"
429 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
430 id="rect130" />
431 <!-- Line: box --> 385 <!-- Line: box -->
432 <rect
433 x="1350"
434 y="8550"
435 width="2100"
436 height="900"
437 rx="0"
438 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
439 id="rect132" />
440 <!-- Line: box --> 386 <!-- Line: box -->
441 <rect
442 x="3000"
443 y="9750"
444 width="2100"
445 height="900"
446 rx="0"
447 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
448 id="rect134" />
449 <!-- Line: box --> 387 <!-- Line: box -->
450 <rect
451 x="4350"
452 y="8550"
453 width="2100"
454 height="900"
455 rx="0"
456 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
457 id="rect136" />
458 <!-- Line: box --> 388 <!-- Line: box -->
459 <rect 389 <rect
460 x="1500" 390 x="1512.3407"
461 y="5850" 391 y="7187.3975"
462 width="1500" 392 width="1500"
463 height="900" 393 height="862.69141"
464 rx="0" 394 rx="0"
465 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 395 style="fill:#87cfff;stroke:#000000;stroke-width:29.37160873;stroke-linecap:butt;stroke-linejoin:miter"
466 id="rect138" /> 396 id="rect138" />
467 <!-- Text --> 397 <!-- Text -->
468 <text 398 <text
469 xml:space="preserve" 399 xml:space="preserve"
470 x="8100" 400 x="7338.3037"
471 y="8250" 401 y="8614.0625"
472 fill="#000000"
473 font-family="Courier"
474 font-style="normal" 402 font-style="normal"
475 font-weight="bold" 403 font-weight="bold"
476 font-size="192" 404 font-size="192"
477 text-anchor="middle" 405 id="text140"
478 id="text140">struct</text> 406 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
407 transform="scale(1.0213945,0.97905363)">struct</text>
479 <!-- Text --> 408 <!-- Text -->
480 <text 409 <text
481 xml:space="preserve" 410 xml:space="preserve"
482 x="8100" 411 x="7338.3037"
483 y="8550" 412 y="8907.7783"
484 fill="#000000"
485 font-family="Courier"
486 font-style="normal" 413 font-style="normal"
487 font-weight="bold" 414 font-weight="bold"
488 font-size="192" 415 font-size="192"
489 text-anchor="middle" 416 id="text142"
490 id="text142">rcu_head</text> 417 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
418 transform="scale(1.0213945,0.97905363)">rcu_head</text>
491 <!-- Text --> 419 <!-- Text -->
492 <text 420 <text
493 xml:space="preserve" 421 xml:space="preserve"
494 x="8100" 422 x="7338.3037"
495 y="9750" 423 y="10082.644"
496 fill="#000000"
497 font-family="Courier"
498 font-style="normal" 424 font-style="normal"
499 font-weight="bold" 425 font-weight="bold"
500 font-size="192" 426 font-size="192"
501 text-anchor="middle" 427 id="text144"
502 id="text144">struct</text> 428 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
429 transform="scale(1.0213945,0.97905363)">struct</text>
503 <!-- Text --> 430 <!-- Text -->
504 <text 431 <text
505 xml:space="preserve" 432 xml:space="preserve"
506 x="8100" 433 x="7338.3037"
507 y="10050" 434 y="10376.36"
508 fill="#000000"
509 font-family="Courier"
510 font-style="normal" 435 font-style="normal"
511 font-weight="bold" 436 font-weight="bold"
512 font-size="192" 437 font-size="192"
513 text-anchor="middle" 438 id="text146"
514 id="text146">rcu_head</text> 439 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
440 transform="scale(1.0213945,0.97905363)">rcu_head</text>
515 <!-- Text --> 441 <!-- Text -->
516 <text 442 <text
517 xml:space="preserve" 443 xml:space="preserve"
518 x="8100" 444 x="7338.3037"
519 y="11250" 445 y="11551.224"
520 fill="#000000"
521 font-family="Courier"
522 font-style="normal" 446 font-style="normal"
523 font-weight="bold" 447 font-weight="bold"
524 font-size="192" 448 font-size="192"
525 text-anchor="middle" 449 id="text148"
526 id="text148">struct</text> 450 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
451 transform="scale(1.0213945,0.97905363)">struct</text>
527 <!-- Text --> 452 <!-- Text -->
528 <text 453 <text
529 xml:space="preserve" 454 xml:space="preserve"
530 x="8100" 455 x="7338.3037"
531 y="11550" 456 y="11844.94"
532 fill="#000000"
533 font-family="Courier"
534 font-style="normal" 457 font-style="normal"
535 font-weight="bold" 458 font-weight="bold"
536 font-size="192" 459 font-size="192"
537 text-anchor="middle" 460 id="text150"
538 id="text150">rcu_head</text> 461 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
462 transform="scale(1.0213945,0.97905363)">rcu_head</text>
539 <!-- Text --> 463 <!-- Text -->
540 <text 464 <text
541 xml:space="preserve" 465 xml:space="preserve"
542 x="6000" 466 x="5886.4043"
543 y="1200" 467 y="2788.5688"
544 fill="#000000"
545 font-family="Helvetica"
546 font-style="normal" 468 font-style="normal"
547 font-weight="normal" 469 font-weight="normal"
548 font-size="192" 470 font-size="192"
549 text-anchor="end" 471 id="text152"
550 id="text152">rcu_sched</text> 472 style="font-style:normal;font-weight:normal;font-size:187.978302px;font-family:Helvetica;text-anchor:end;fill:#000000;stroke-width:0.02447634in"
473 transform="scale(1.0213945,0.97905363)">rcu_state</text>
551 <!-- Text --> 474 <!-- Text -->
552 <text
553 xml:space="preserve"
554 x="6450"
555 y="750"
556 fill="#000000"
557 font-family="Helvetica"
558 font-style="normal"
559 font-weight="normal"
560 font-size="192"
561 text-anchor="end"
562 id="text154">rcu_bh</text>
563 <!-- Text --> 475 <!-- Text -->
564 <text 476 <text
565 xml:space="preserve" 477 xml:space="preserve"
566 x="3150" 478 x="3096.1016"
567 y="2400" 479 y="3963.4336"
568 fill="#000000"
569 font-family="Courier"
570 font-style="normal" 480 font-style="normal"
571 font-weight="bold" 481 font-weight="bold"
572 font-size="192" 482 font-size="192"
573 text-anchor="middle" 483 id="text156"
574 id="text156">struct</text> 484 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
485 transform="scale(1.0213945,0.97905363)">struct</text>
575 <!-- Text --> 486 <!-- Text -->
576 <text 487 <text
577 xml:space="preserve" 488 xml:space="preserve"
578 x="3150" 489 x="3096.1016"
579 y="2700" 490 y="4257.1494"
580 fill="#000000"
581 font-family="Courier"
582 font-style="normal" 491 font-style="normal"
583 font-weight="bold" 492 font-weight="bold"
584 font-size="192" 493 font-size="192"
585 text-anchor="middle" 494 id="text158"
586 id="text158">rcu_node</text> 495 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
496 transform="scale(1.0213945,0.97905363)">rcu_node</text>
587 <!-- Text --> 497 <!-- Text -->
588 <text 498 <text
589 xml:space="preserve" 499 xml:space="preserve"
590 x="1650" 500 x="1627.5209"
591 y="4200" 501 y="5725.7305"
592 fill="#000000"
593 font-family="Courier"
594 font-style="normal" 502 font-style="normal"
595 font-weight="bold" 503 font-weight="bold"
596 font-size="192" 504 font-size="192"
597 text-anchor="middle" 505 id="text160"
598 id="text160">struct</text> 506 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
507 transform="scale(1.0213945,0.97905363)">struct</text>
599 <!-- Text --> 508 <!-- Text -->
600 <text 509 <text
601 xml:space="preserve" 510 xml:space="preserve"
602 x="1650" 511 x="1627.5209"
603 y="4500" 512 y="6019.4463"
604 fill="#000000"
605 font-family="Courier"
606 font-style="normal" 513 font-style="normal"
607 font-weight="bold" 514 font-weight="bold"
608 font-size="192" 515 font-size="192"
609 text-anchor="middle" 516 id="text162"
610 id="text162">rcu_node</text> 517 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
518 transform="scale(1.0213945,0.97905363)">rcu_node</text>
611 <!-- Text --> 519 <!-- Text -->
612 <text 520 <text
613 xml:space="preserve" 521 xml:space="preserve"
614 x="4650" 522 x="4564.6821"
615 y="4500" 523 y="6019.4463"
616 fill="#000000"
617 font-family="Courier"
618 font-style="normal" 524 font-style="normal"
619 font-weight="bold" 525 font-weight="bold"
620 font-size="192" 526 font-size="192"
621 text-anchor="middle" 527 id="text164"
622 id="text164">rcu_node</text> 528 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
529 transform="scale(1.0213945,0.97905363)">rcu_node</text>
623 <!-- Text --> 530 <!-- Text -->
624 <text 531 <text
625 xml:space="preserve" 532 xml:space="preserve"
626 x="4650" 533 x="4564.6821"
627 y="4200" 534 y="5725.7305"
628 fill="#000000"
629 font-family="Courier"
630 font-style="normal" 535 font-style="normal"
631 font-weight="bold" 536 font-weight="bold"
632 font-size="192" 537 font-size="192"
633 text-anchor="middle" 538 id="text166"
634 id="text166">struct</text> 539 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
540 transform="scale(1.0213945,0.97905363)">struct</text>
635 <!-- Text --> 541 <!-- Text -->
636 <text 542 <text
637 xml:space="preserve" 543 xml:space="preserve"
638 x="2250" 544 x="2214.9531"
639 y="6150" 545 y="7634.8848"
640 fill="#000000"
641 font-family="Courier"
642 font-style="normal" 546 font-style="normal"
643 font-weight="bold" 547 font-weight="bold"
644 font-size="192" 548 font-size="192"
645 text-anchor="middle" 549 id="text168"
646 id="text168">struct</text> 550 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
551 transform="scale(1.0213945,0.97905363)">struct</text>
647 <!-- Text --> 552 <!-- Text -->
648 <text 553 <text
649 xml:space="preserve" 554 xml:space="preserve"
650 x="2250" 555 x="2214.9531"
651 y="6450" 556 y="7928.6011"
652 fill="#000000"
653 font-family="Courier"
654 font-style="normal" 557 font-style="normal"
655 font-weight="bold" 558 font-weight="bold"
656 font-size="192" 559 font-size="192"
657 text-anchor="middle" 560 id="text170"
658 id="text170">rcu_data</text> 561 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
562 transform="scale(1.0213945,0.97905363)">rcu_data</text>
659 <!-- Text --> 563 <!-- Text -->
660 <text 564 <text
661 xml:space="preserve" 565 xml:space="preserve"
662 x="1050" 566 x="1040.0886"
663 y="7350" 567 y="8809.749"
664 fill="#000000"
665 font-family="Courier"
666 font-style="normal" 568 font-style="normal"
667 font-weight="bold" 569 font-weight="bold"
668 font-size="192" 570 font-size="192"
669 text-anchor="middle" 571 id="text172"
670 id="text172">struct</text> 572 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
573 transform="scale(1.0213945,0.97905363)">struct</text>
671 <!-- Text --> 574 <!-- Text -->
672 <text 575 <text
673 xml:space="preserve" 576 xml:space="preserve"
674 x="1050" 577 x="1040.0886"
675 y="7650" 578 y="9103.4648"
676 fill="#000000"
677 font-family="Courier"
678 font-style="normal" 579 font-style="normal"
679 font-weight="bold" 580 font-weight="bold"
680 font-size="192" 581 font-size="192"
681 text-anchor="middle" 582 id="text174"
682 id="text174">rcu_data</text> 583 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
584 transform="scale(1.0213945,0.97905363)">rcu_data</text>
683 <!-- Text --> 585 <!-- Text -->
684 <text 586 <text
685 xml:space="preserve" 587 xml:space="preserve"
686 x="5250" 588 x="5152.1138"
687 y="6150" 589 y="7634.8848"
688 fill="#000000"
689 font-family="Courier"
690 font-style="normal" 590 font-style="normal"
691 font-weight="bold" 591 font-weight="bold"
692 font-size="192" 592 font-size="192"
693 text-anchor="middle" 593 id="text176"
694 id="text176">struct</text> 594 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
595 transform="scale(1.0213945,0.97905363)">struct</text>
695 <!-- Text --> 596 <!-- Text -->
696 <text 597 <text
697 xml:space="preserve" 598 xml:space="preserve"
698 x="5250" 599 x="5152.1138"
699 y="6450" 600 y="7928.6011"
700 fill="#000000"
701 font-family="Courier"
702 font-style="normal" 601 font-style="normal"
703 font-weight="bold" 602 font-weight="bold"
704 font-size="192" 603 font-size="192"
705 text-anchor="middle" 604 id="text178"
706 id="text178">rcu_data</text> 605 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
606 transform="scale(1.0213945,0.97905363)">rcu_data</text>
707 <!-- Text --> 607 <!-- Text -->
708 <text 608 <text
709 xml:space="preserve" 609 xml:space="preserve"
710 x="4050" 610 x="3977.2495"
711 y="7350" 611 y="8809.749"
712 fill="#000000"
713 font-family="Courier"
714 font-style="normal" 612 font-style="normal"
715 font-weight="bold" 613 font-weight="bold"
716 font-size="192" 614 font-size="192"
717 text-anchor="middle" 615 id="text180"
718 id="text180">struct</text> 616 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
617 transform="scale(1.0213945,0.97905363)">struct</text>
719 <!-- Text --> 618 <!-- Text -->
720 <text 619 <text
721 xml:space="preserve" 620 xml:space="preserve"
722 x="4050" 621 x="3977.2495"
723 y="7650" 622 y="9103.4648"
724 fill="#000000"
725 font-family="Courier"
726 font-style="normal" 623 font-style="normal"
727 font-weight="bold" 624 font-weight="bold"
728 font-size="192" 625 font-size="192"
729 text-anchor="middle" 626 id="text182"
730 id="text182">rcu_data</text> 627 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:middle;fill:#000000;stroke-width:0.02447634in"
628 transform="scale(1.0213945,0.97905363)">rcu_data</text>
731 <!-- Text --> 629 <!-- Text -->
732 <text 630 <text
733 xml:space="preserve" 631 xml:space="preserve"
734 x="450" 632 x="452.6564"
735 y="1800" 633 y="3376.0012"
736 fill="#000000"
737 font-family="Courier"
738 font-style="normal" 634 font-style="normal"
739 font-weight="bold" 635 font-weight="bold"
740 font-size="192" 636 font-size="192"
741 text-anchor="start" 637 id="text184"
742 id="text184">struct rcu_state</text> 638 style="font-style:normal;font-weight:bold;font-size:187.978302px;font-family:Courier;text-anchor:start;fill:#000000;stroke-width:0.02447634in"
639 transform="scale(1.0213945,0.97905363)">struct rcu_state</text>
743 <!-- Text --> 640 <!-- Text -->
744 <text
745 xml:space="preserve"
746 x="1050"
747 y="10050"
748 fill="#000000"
749 font-family="Courier"
750 font-style="normal"
751 font-weight="bold"
752 font-size="192"
753 text-anchor="middle"
754 id="text186">struct</text>
755 <!-- Text --> 641 <!-- Text -->
756 <text
757 xml:space="preserve"
758 x="1050"
759 y="10350"
760 fill="#000000"
761 font-family="Courier"
762 font-style="normal"
763 font-weight="bold"
764 font-size="192"
765 text-anchor="middle"
766 id="text188">rcu_dynticks</text>
767 <!-- Text --> 642 <!-- Text -->
768 <text
769 xml:space="preserve"
770 x="4050"
771 y="10050"
772 fill="#000000"
773 font-family="Courier"
774 font-style="normal"
775 font-weight="bold"
776 font-size="192"
777 text-anchor="middle"
778 id="text190">struct</text>
779 <!-- Text --> 643 <!-- Text -->
780 <text
781 xml:space="preserve"
782 x="4050"
783 y="10350"
784 fill="#000000"
785 font-family="Courier"
786 font-style="normal"
787 font-weight="bold"
788 font-size="192"
789 text-anchor="middle"
790 id="text192">rcu_dynticks</text>
791 <!-- Text --> 644 <!-- Text -->
792 <text
793 xml:space="preserve"
794 x="2400"
795 y="8850"
796 fill="#000000"
797 font-family="Courier"
798 font-style="normal"
799 font-weight="bold"
800 font-size="192"
801 text-anchor="middle"
802 id="text194">struct</text>
803 <!-- Text --> 645 <!-- Text -->
804 <text
805 xml:space="preserve"
806 x="2400"
807 y="9150"
808 fill="#000000"
809 font-family="Courier"
810 font-style="normal"
811 font-weight="bold"
812 font-size="192"
813 text-anchor="middle"
814 id="text196">rcu_dynticks</text>
815 <!-- Text --> 646 <!-- Text -->
816 <text
817 xml:space="preserve"
818 x="5400"
819 y="8850"
820 fill="#000000"
821 font-family="Courier"
822 font-style="normal"
823 font-weight="bold"
824 font-size="192"
825 text-anchor="middle"
826 id="text198">struct</text>
827 <!-- Text --> 647 <!-- Text -->
828 <text
829 xml:space="preserve"
830 x="5400"
831 y="9150"
832 fill="#000000"
833 font-family="Courier"
834 font-style="normal"
835 font-weight="bold"
836 font-size="192"
837 text-anchor="middle"
838 id="text200">rcu_dynticks</text>
839 <!-- Text --> 648 <!-- Text -->
840 <text
841 xml:space="preserve"
842 x="6900"
843 y="300"
844 fill="#000000"
845 font-family="Helvetica"
846 font-style="normal"
847 font-weight="normal"
848 font-size="192"
849 text-anchor="end"
850 id="text202">rcu_preempt</text>
851 <!-- Line --> 649 <!-- Line -->
852 <polyline 650 <polyline
853 points="5250,5850 5250,4864 " 651 points="5250,5850 5250,4864 "
854 style="stroke:#00d1d1;stroke-width:29.99463964;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 652 style="stroke:#00d1d1;stroke-width:29.99464035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
855 id="polyline204" /> 653 id="polyline204"
654 transform="matrix(1,0,0,0.95854605,12.340758,1579.9033)" />
856 <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740--> 655 <!-- Arrowhead on XXXpoint 5250 5850 - 5250 4740-->
656 <path
657 style="fill:none;stroke:#000000;stroke-width:34.24744034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1177)"
658 d="m 6000.1472,7564.2558 c 1498.5508,0 1498.5508,0 1498.5508,0 v 520.0252"
659 id="path886"
660 inkscape:connector-curvature="0" />
857 </g> 661 </g>
858</svg> 662</svg>
diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
index 1d2051c0c3fc..18f179807563 100644
--- a/Documentation/RCU/Design/Data-Structures/Data-Structures.html
+++ b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
@@ -23,8 +23,6 @@ to each other.
23 The <tt>rcu_segcblist</tt> Structure</a> 23 The <tt>rcu_segcblist</tt> Structure</a>
24<li> <a href="#The rcu_data Structure"> 24<li> <a href="#The rcu_data Structure">
25 The <tt>rcu_data</tt> Structure</a> 25 The <tt>rcu_data</tt> Structure</a>
26<li> <a href="#The rcu_dynticks Structure">
27 The <tt>rcu_dynticks</tt> Structure</a>
28<li> <a href="#The rcu_head Structure"> 26<li> <a href="#The rcu_head Structure">
29 The <tt>rcu_head</tt> Structure</a> 27 The <tt>rcu_head</tt> Structure</a>
30<li> <a href="#RCU-Specific Fields in the task_struct Structure"> 28<li> <a href="#RCU-Specific Fields in the task_struct Structure">
@@ -127,9 +125,11 @@ CPUs, RCU would configure the <tt>rcu_node</tt> tree as follows:
127</p><p>RCU currently permits up to a four-level tree, which on a 64-bit system 125</p><p>RCU currently permits up to a four-level tree, which on a 64-bit system
128accommodates up to 4,194,304 CPUs, though only a mere 524,288 CPUs for 126accommodates up to 4,194,304 CPUs, though only a mere 524,288 CPUs for
12932-bit systems. 12732-bit systems.
130On the other hand, you can set <tt>CONFIG_RCU_FANOUT</tt> to be 128On the other hand, you can set both <tt>CONFIG_RCU_FANOUT</tt> and
131as small as 2 if you wish, which would permit only 16 CPUs, which 129<tt>CONFIG_RCU_FANOUT_LEAF</tt> to be as small as 2, which would result
132is useful for testing. 130in a 16-CPU test using a 4-level tree.
131This can be useful for testing large-system capabilities on small test
132machines.
133 133
134</p><p>This multi-level combining tree allows us to get most of the 134</p><p>This multi-level combining tree allows us to get most of the
135performance and scalability 135performance and scalability
@@ -154,44 +154,9 @@ on that root <tt>rcu_node</tt> structure remains acceptably low.
154keeping lock contention under control at all tree levels regardless 154keeping lock contention under control at all tree levels regardless
155of the level of loading on the system. 155of the level of loading on the system.
156 156
157</p><p>The Linux kernel actually supports multiple flavors of RCU
158running concurrently, so RCU builds separate data structures for each
159flavor.
160For example, for <tt>CONFIG_TREE_RCU=y</tt> kernels, RCU provides
161rcu_sched and rcu_bh, as shown below:
162
163</p><p><img src="BigTreeClassicRCUBH.svg" alt="BigTreeClassicRCUBH.svg" width="33%">
164
165</p><p>Energy efficiency is increasingly important, and for that
166reason the Linux kernel provides <tt>CONFIG_NO_HZ_IDLE</tt>, which
167turns off the scheduling-clock interrupts on idle CPUs, which in
168turn allows those CPUs to attain deeper sleep states and to consume
169less energy.
170CPUs whose scheduling-clock interrupts have been turned off are
171said to be in <i>dyntick-idle mode</i>.
172RCU must handle dyntick-idle CPUs specially
173because RCU would otherwise wake up each CPU on every grace period,
174which would defeat the whole purpose of <tt>CONFIG_NO_HZ_IDLE</tt>.
175RCU uses the <tt>rcu_dynticks</tt> structure to track
176which CPUs are in dyntick idle mode, as shown below:
177
178</p><p><img src="BigTreeClassicRCUBHdyntick.svg" alt="BigTreeClassicRCUBHdyntick.svg" width="33%">
179
180</p><p>However, if a CPU is in dyntick-idle mode, it is in that mode
181for all flavors of RCU.
182Therefore, a single <tt>rcu_dynticks</tt> structure is allocated per
183CPU, and all of a given CPU's <tt>rcu_data</tt> structures share
184that <tt>rcu_dynticks</tt>, as shown in the figure.
185
186</p><p>Kernels built with <tt>CONFIG_PREEMPT_RCU</tt> support
187rcu_preempt in addition to rcu_sched and rcu_bh, as shown below:
188
189</p><p><img src="BigTreePreemptRCUBHdyntick.svg" alt="BigTreePreemptRCUBHdyntick.svg" width="35%">
190
191</p><p>RCU updaters wait for normal grace periods by registering 157</p><p>RCU updaters wait for normal grace periods by registering
192RCU callbacks, either directly via <tt>call_rcu()</tt> and 158RCU callbacks, either directly via <tt>call_rcu()</tt> and
193friends (namely <tt>call_rcu_bh()</tt> and <tt>call_rcu_sched()</tt>), 159friends (namely <tt>call_rcu_bh()</tt> and <tt>call_rcu_sched()</tt>),
194there being a separate interface per flavor of RCU)
195or indirectly via <tt>synchronize_rcu()</tt> and friends. 160or indirectly via <tt>synchronize_rcu()</tt> and friends.
196RCU callbacks are represented by <tt>rcu_head</tt> structures, 161RCU callbacks are represented by <tt>rcu_head</tt> structures,
197which are queued on <tt>rcu_data</tt> structures while they are 162which are queued on <tt>rcu_data</tt> structures while they are
@@ -214,9 +179,6 @@ its own synchronization:
214<li> Each <tt>rcu_node</tt> structure has a spinlock. 179<li> Each <tt>rcu_node</tt> structure has a spinlock.
215<li> The fields in <tt>rcu_data</tt> are private to the corresponding 180<li> The fields in <tt>rcu_data</tt> are private to the corresponding
216 CPU, although a few can be read and written by other CPUs. 181 CPU, although a few can be read and written by other CPUs.
217<li> Similarly, the fields in <tt>rcu_dynticks</tt> are private
218 to the corresponding CPU, although a few can be read by
219 other CPUs.
220</ol> 182</ol>
221 183
222<p>It is important to note that different data structures can have 184<p>It is important to note that different data structures can have
@@ -272,11 +234,6 @@ follows:
272 access to this information from the corresponding CPU. 234 access to this information from the corresponding CPU.
273 Finally, this structure records past dyntick-idle state 235 Finally, this structure records past dyntick-idle state
274 for the corresponding CPU and also tracks statistics. 236 for the corresponding CPU and also tracks statistics.
275<li> <tt>rcu_dynticks</tt>:
276 This per-CPU structure tracks the current dyntick-idle
277 state for the corresponding CPU.
278 Unlike the other three structures, the <tt>rcu_dynticks</tt>
279 structure is not replicated per RCU flavor.
280<li> <tt>rcu_head</tt>: 237<li> <tt>rcu_head</tt>:
281 This structure represents RCU callbacks, and is the 238 This structure represents RCU callbacks, and is the
282 only structure allocated and managed by RCU users. 239 only structure allocated and managed by RCU users.
@@ -287,14 +244,14 @@ follows:
287<p>If all you wanted from this article was a general notion of how 244<p>If all you wanted from this article was a general notion of how
288RCU's data structures are related, you are done. 245RCU's data structures are related, you are done.
289Otherwise, each of the following sections give more details on 246Otherwise, each of the following sections give more details on
290the <tt>rcu_state</tt>, <tt>rcu_node</tt>, <tt>rcu_data</tt>, 247the <tt>rcu_state</tt>, <tt>rcu_node</tt> and <tt>rcu_data</tt> data
291and <tt>rcu_dynticks</tt> data structures. 248structures.
292 249
293<h3><a name="The rcu_state Structure"> 250<h3><a name="The rcu_state Structure">
294The <tt>rcu_state</tt> Structure</a></h3> 251The <tt>rcu_state</tt> Structure</a></h3>
295 252
296<p>The <tt>rcu_state</tt> structure is the base structure that 253<p>The <tt>rcu_state</tt> structure is the base structure that
297represents a flavor of RCU. 254represents the state of RCU in the system.
298This structure forms the interconnection between the 255This structure forms the interconnection between the
299<tt>rcu_node</tt> and <tt>rcu_data</tt> structures, 256<tt>rcu_node</tt> and <tt>rcu_data</tt> structures,
300tracks grace periods, contains the lock used to 257tracks grace periods, contains the lock used to
@@ -389,7 +346,7 @@ sequence number.
389The bottom two bits are the state of the current grace period, 346The bottom two bits are the state of the current grace period,
390which can be zero for not yet started or one for in progress. 347which can be zero for not yet started or one for in progress.
391In other words, if the bottom two bits of <tt>-&gt;gp_seq</tt> are 348In other words, if the bottom two bits of <tt>-&gt;gp_seq</tt> are
392zero, the corresponding flavor of RCU is idle. 349zero, then RCU is idle.
393Any other value in the bottom two bits indicates that something is broken. 350Any other value in the bottom two bits indicates that something is broken.
394This field is protected by the root <tt>rcu_node</tt> structure's 351This field is protected by the root <tt>rcu_node</tt> structure's
395<tt>-&gt;lock</tt> field. 352<tt>-&gt;lock</tt> field.
@@ -419,10 +376,10 @@ as follows:
419grace period in jiffies. 376grace period in jiffies.
420It is protected by the root <tt>rcu_node</tt>'s <tt>-&gt;lock</tt>. 377It is protected by the root <tt>rcu_node</tt>'s <tt>-&gt;lock</tt>.
421 378
422<p>The <tt>-&gt;name</tt> field points to the name of the RCU flavor 379<p>The <tt>-&gt;name</tt> and <tt>-&gt;abbr</tt> fields distinguish
423(for example, &ldquo;rcu_sched&rdquo;), and is constant. 380between preemptible RCU (&ldquo;rcu_preempt&rdquo; and &ldquo;p&rdquo;)
424The <tt>-&gt;abbr</tt> field contains a one-character abbreviation, 381and non-preemptible RCU (&ldquo;rcu_sched&rdquo; and &ldquo;s&rdquo;).
425for example, &ldquo;s&rdquo; for RCU-sched. 382These fields are used for diagnostic and tracing purposes.
426 383
427<h3><a name="The rcu_node Structure"> 384<h3><a name="The rcu_node Structure">
428The <tt>rcu_node</tt> Structure</a></h3> 385The <tt>rcu_node</tt> Structure</a></h3>
@@ -971,25 +928,31 @@ this <tt>rcu_segcblist</tt> structure, <i>not</i> the <tt>-&gt;head</tt>
971pointer. 928pointer.
972The reason for this is that all the ready-to-invoke callbacks 929The reason for this is that all the ready-to-invoke callbacks
973(that is, those in the <tt>RCU_DONE_TAIL</tt> segment) are extracted 930(that is, those in the <tt>RCU_DONE_TAIL</tt> segment) are extracted
974all at once at callback-invocation time. 931all at once at callback-invocation time (<tt>rcu_do_batch</tt>), due
932to which <tt>-&gt;head</tt> may be set to NULL if there are no not-done
933callbacks remaining in the <tt>rcu_segcblist</tt>.
975If callback invocation must be postponed, for example, because a 934If callback invocation must be postponed, for example, because a
976high-priority process just woke up on this CPU, then the remaining 935high-priority process just woke up on this CPU, then the remaining
977callbacks are placed back on the <tt>RCU_DONE_TAIL</tt> segment. 936callbacks are placed back on the <tt>RCU_DONE_TAIL</tt> segment and
978Either way, the <tt>-&gt;len</tt> and <tt>-&gt;len_lazy</tt> counts 937<tt>-&gt;head</tt> once again points to the start of the segment.
979are adjusted after the corresponding callbacks have been invoked, and so 938In short, the head field can briefly be <tt>NULL</tt> even though the
980again it is the <tt>-&gt;len</tt> count that accurately reflects whether 939CPU has callbacks present the entire time.
981or not there are callbacks associated with this <tt>rcu_segcblist</tt> 940Therefore, it is not appropriate to test the <tt>-&gt;head</tt> pointer
982structure. 941for <tt>NULL</tt>.
942
943<p>In contrast, the <tt>-&gt;len</tt> and <tt>-&gt;len_lazy</tt> counts
944are adjusted only after the corresponding callbacks have been invoked.
945This means that the <tt>-&gt;len</tt> count is zero only if
946the <tt>rcu_segcblist</tt> structure really is devoid of callbacks.
983Of course, off-CPU sampling of the <tt>-&gt;len</tt> count requires 947Of course, off-CPU sampling of the <tt>-&gt;len</tt> count requires
984the use of appropriate synchronization, for example, memory barriers. 948careful use of appropriate synchronization, for example, memory barriers.
985This synchronization can be a bit subtle, particularly in the case 949This synchronization can be a bit subtle, particularly in the case
986of <tt>rcu_barrier()</tt>. 950of <tt>rcu_barrier()</tt>.
987 951
988<h3><a name="The rcu_data Structure"> 952<h3><a name="The rcu_data Structure">
989The <tt>rcu_data</tt> Structure</a></h3> 953The <tt>rcu_data</tt> Structure</a></h3>
990 954
991<p>The <tt>rcu_data</tt> maintains the per-CPU state for the 955<p>The <tt>rcu_data</tt> maintains the per-CPU state for the RCU subsystem.
992corresponding flavor of RCU.
993The fields in this structure may be accessed only from the corresponding 956The fields in this structure may be accessed only from the corresponding
994CPU (and from tracing) unless otherwise stated. 957CPU (and from tracing) unless otherwise stated.
995This structure is the 958This structure is the
@@ -1015,30 +978,19 @@ as follows:
1015 978
1016<pre> 979<pre>
1017 1 int cpu; 980 1 int cpu;
1018 2 struct rcu_state *rsp; 981 2 struct rcu_node *mynode;
1019 3 struct rcu_node *mynode; 982 3 unsigned long grpmask;
1020 4 struct rcu_dynticks *dynticks; 983 4 bool beenonline;
1021 5 unsigned long grpmask;
1022 6 bool beenonline;
1023</pre> 984</pre>
1024 985
1025<p>The <tt>-&gt;cpu</tt> field contains the number of the 986<p>The <tt>-&gt;cpu</tt> field contains the number of the
1026corresponding CPU, the <tt>-&gt;rsp</tt> pointer references 987corresponding CPU and the <tt>-&gt;mynode</tt> field references the
1027the corresponding <tt>rcu_state</tt> structure (and is most frequently 988corresponding <tt>rcu_node</tt> structure.
1028used to locate the name of the corresponding flavor of RCU for tracing),
1029and the <tt>-&gt;mynode</tt> field references the corresponding
1030<tt>rcu_node</tt> structure.
1031The <tt>-&gt;mynode</tt> is used to propagate quiescent states 989The <tt>-&gt;mynode</tt> is used to propagate quiescent states
1032up the combining tree. 990up the combining tree.
1033<p>The <tt>-&gt;dynticks</tt> pointer references the 991These two fields are constant and therefore do not require synchronization.
1034<tt>rcu_dynticks</tt> structure corresponding to this
1035CPU.
1036Recall that a single per-CPU instance of the <tt>rcu_dynticks</tt>
1037structure is shared among all flavors of RCU.
1038These first four fields are constant and therefore require not
1039synchronization.
1040 992
1041</p><p>The <tt>-&gt;grpmask</tt> field indicates the bit in 993<p>The <tt>-&gt;grpmask</tt> field indicates the bit in
1042the <tt>-&gt;mynode-&gt;qsmask</tt> corresponding to this 994the <tt>-&gt;mynode-&gt;qsmask</tt> corresponding to this
1043<tt>rcu_data</tt> structure, and is also used when propagating 995<tt>rcu_data</tt> structure, and is also used when propagating
1044quiescent states. 996quiescent states.
@@ -1057,12 +1009,12 @@ as follows:
1057 3 bool cpu_no_qs; 1009 3 bool cpu_no_qs;
1058 4 bool core_needs_qs; 1010 4 bool core_needs_qs;
1059 5 bool gpwrap; 1011 5 bool gpwrap;
1060 6 unsigned long rcu_qs_ctr_snap;
1061</pre> 1012</pre>
1062 1013
1063<p>The <tt>-&gt;gp_seq</tt> and <tt>-&gt;gp_seq_needed</tt> 1014<p>The <tt>-&gt;gp_seq</tt> field is the counterpart of the field of the same
1064fields are the counterparts of the fields of the same name 1015name in the <tt>rcu_state</tt> and <tt>rcu_node</tt> structures. The
1065in the <tt>rcu_state</tt> and <tt>rcu_node</tt> structures. 1016<tt>-&gt;gp_seq_needed</tt> field is the counterpart of the field of the same
1017name in the rcu_node</tt> structure.
1066They may each lag up to one behind their <tt>rcu_node</tt> 1018They may each lag up to one behind their <tt>rcu_node</tt>
1067counterparts, but in <tt>CONFIG_NO_HZ_IDLE</tt> and 1019counterparts, but in <tt>CONFIG_NO_HZ_IDLE</tt> and
1068<tt>CONFIG_NO_HZ_FULL</tt> kernels can lag 1020<tt>CONFIG_NO_HZ_FULL</tt> kernels can lag
@@ -1103,10 +1055,6 @@ CPU has remained idle for so long that the
1103<tt>gp_seq</tt> counter is in danger of overflow, which 1055<tt>gp_seq</tt> counter is in danger of overflow, which
1104will cause the CPU to disregard the values of its counters on 1056will cause the CPU to disregard the values of its counters on
1105its next exit from idle. 1057its next exit from idle.
1106Finally, the <tt>rcu_qs_ctr_snap</tt> field is used to detect
1107cases where a given operation has resulted in a quiescent state
1108for all flavors of RCU, for example, <tt>cond_resched()</tt>
1109when RCU has indicated a need for quiescent states.
1110 1058
1111<h5>RCU Callback Handling</h5> 1059<h5>RCU Callback Handling</h5>
1112 1060
@@ -1179,26 +1127,22 @@ Finally, the <tt>-&gt;dynticks_fqs</tt> field is used to
1179count the number of times this CPU is determined to be in 1127count the number of times this CPU is determined to be in
1180dyntick-idle state, and is used for tracing and debugging purposes. 1128dyntick-idle state, and is used for tracing and debugging purposes.
1181 1129
1182<h3><a name="The rcu_dynticks Structure"> 1130<p>
1183The <tt>rcu_dynticks</tt> Structure</a></h3> 1131This portion of the rcu_data structure is declared as follows:
1184
1185<p>The <tt>rcu_dynticks</tt> maintains the per-CPU dyntick-idle state
1186for the corresponding CPU.
1187Unlike the other structures, <tt>rcu_dynticks</tt> is not
1188replicated over the different flavors of RCU.
1189The fields in this structure may be accessed only from the corresponding
1190CPU (and from tracing) unless otherwise stated.
1191Its fields are as follows:
1192 1132
1193<pre> 1133<pre>
1194 1 long dynticks_nesting; 1134 1 long dynticks_nesting;
1195 2 long dynticks_nmi_nesting; 1135 2 long dynticks_nmi_nesting;
1196 3 atomic_t dynticks; 1136 3 atomic_t dynticks;
1197 4 bool rcu_need_heavy_qs; 1137 4 bool rcu_need_heavy_qs;
1198 5 unsigned long rcu_qs_ctr; 1138 5 bool rcu_urgent_qs;
1199 6 bool rcu_urgent_qs;
1200</pre> 1139</pre>
1201 1140
1141<p>These fields in the rcu_data structure maintain the per-CPU dyntick-idle
1142state for the corresponding CPU.
1143The fields may be accessed only from the corresponding CPU (and from tracing)
1144unless otherwise stated.
1145
1202<p>The <tt>-&gt;dynticks_nesting</tt> field counts the 1146<p>The <tt>-&gt;dynticks_nesting</tt> field counts the
1203nesting depth of process execution, so that in normal circumstances 1147nesting depth of process execution, so that in normal circumstances
1204this counter has value zero or one. 1148this counter has value zero or one.
@@ -1240,19 +1184,12 @@ it is willing to call for heavy-weight dyntick-counter operations.
1240This flag is checked by RCU's context-switch and <tt>cond_resched()</tt> 1184This flag is checked by RCU's context-switch and <tt>cond_resched()</tt>
1241code, which provide a momentary idle sojourn in response. 1185code, which provide a momentary idle sojourn in response.
1242 1186
1243</p><p>The <tt>-&gt;rcu_qs_ctr</tt> field is used to record
1244quiescent states from <tt>cond_resched()</tt>.
1245Because <tt>cond_resched()</tt> can execute quite frequently, this
1246must be quite lightweight, as in a non-atomic increment of this
1247per-CPU field.
1248
1249</p><p>Finally, the <tt>-&gt;rcu_urgent_qs</tt> field is used to record 1187</p><p>Finally, the <tt>-&gt;rcu_urgent_qs</tt> field is used to record
1250the fact that the RCU core code would really like to see a quiescent 1188the fact that the RCU core code would really like to see a quiescent state from
1251state from the corresponding CPU, with the various other fields indicating 1189the corresponding CPU, with the various other fields indicating just how badly
1252just how badly RCU wants this quiescent state. 1190RCU wants this quiescent state.
1253This flag is checked by RCU's context-switch and <tt>cond_resched()</tt> 1191This flag is checked by RCU's context-switch path
1254code, which, if nothing else, non-atomically increment <tt>-&gt;rcu_qs_ctr</tt> 1192(<tt>rcu_note_context_switch</tt>) and the cond_resched code.
1255in response.
1256 1193
1257<table> 1194<table>
1258<tr><th>&nbsp;</th></tr> 1195<tr><th>&nbsp;</th></tr>
@@ -1425,11 +1362,11 @@ the last part of the array, thus traversing only the leaf
1425<h3><a name="Summary"> 1362<h3><a name="Summary">
1426Summary</a></h3> 1363Summary</a></h3>
1427 1364
1428So each flavor of RCU is represented by an <tt>rcu_state</tt> structure, 1365So the state of RCU is represented by an <tt>rcu_state</tt> structure,
1429which contains a combining tree of <tt>rcu_node</tt> and 1366which contains a combining tree of <tt>rcu_node</tt> and
1430<tt>rcu_data</tt> structures. 1367<tt>rcu_data</tt> structures.
1431Finally, in <tt>CONFIG_NO_HZ_IDLE</tt> kernels, each CPU's dyntick-idle 1368Finally, in <tt>CONFIG_NO_HZ_IDLE</tt> kernels, each CPU's dyntick-idle
1432state is tracked by an <tt>rcu_dynticks</tt> structure. 1369state is tracked by dynticks-related fields in the <tt>rcu_data</tt> structure.
1433 1370
1434If you made it this far, you are well prepared to read the code 1371If you made it this far, you are well prepared to read the code
1435walkthroughs in the other articles in this series. 1372walkthroughs in the other articles in this series.
diff --git a/Documentation/RCU/Design/Data-Structures/blkd_task.svg b/Documentation/RCU/Design/Data-Structures/blkd_task.svg
index 00e810bb8419..bed13e9ecab8 100644
--- a/Documentation/RCU/Design/Data-Structures/blkd_task.svg
+++ b/Documentation/RCU/Design/Data-Structures/blkd_task.svg
@@ -14,12 +14,12 @@
14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 15 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16 width="10.1in" 16 width="10.1in"
17 height="8.6in" 17 height="6.5999999in"
18 viewBox="-44 -44 12088 10288" 18 viewBox="-44 -44 12088 7895.4414"
19 id="svg2" 19 id="svg2"
20 version="1.1" 20 version="1.1"
21 inkscape:version="0.48.4 r9939" 21 inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
22 sodipodi:docname="blkd_task.fig"> 22 sodipodi:docname="blkd_task.svg">
23 <metadata 23 <metadata
24 id="metadata212"> 24 id="metadata212">
25 <rdf:RDF> 25 <rdf:RDF>
@@ -37,15 +37,16 @@
37 <marker 37 <marker
38 inkscape:stockid="Arrow1Mend" 38 inkscape:stockid="Arrow1Mend"
39 orient="auto" 39 orient="auto"
40 refY="0.0" 40 refY="0"
41 refX="0.0" 41 refX="0"
42 id="Arrow1Mend" 42 id="Arrow1Mend"
43 style="overflow:visible;"> 43 style="overflow:visible">
44 <path 44 <path
45 id="path3970" 45 id="path3970"
46 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 " 46 d="M 0,0 5,-5 -12.5,0 5,5 Z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" 47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
48 transform="scale(0.4) rotate(180) translate(10,0)" /> 48 transform="matrix(-0.4,0,0,-0.4,-4,0)"
49 inkscape:connector-curvature="0" />
49 </marker> 50 </marker>
50 </defs> 51 </defs>
51 <sodipodi:namedview 52 <sodipodi:namedview
@@ -57,787 +58,574 @@
57 guidetolerance="10" 58 guidetolerance="10"
58 inkscape:pageopacity="0" 59 inkscape:pageopacity="0"
59 inkscape:pageshadow="2" 60 inkscape:pageshadow="2"
60 inkscape:window-width="1087" 61 inkscape:window-width="1920"
61 inkscape:window-height="1144" 62 inkscape:window-height="1019"
62 id="namedview208" 63 id="namedview208"
63 showgrid="false" 64 showgrid="false"
64 inkscape:zoom="1.0495049" 65 inkscape:zoom="1.0495049"
65 inkscape:cx="454.50003" 66 inkscape:cx="456.40569"
66 inkscape:cy="387.00003" 67 inkscape:cy="348.88682"
67 inkscape:window-x="833" 68 inkscape:window-x="0"
68 inkscape:window-y="28" 69 inkscape:window-y="0"
69 inkscape:window-maximized="0" 70 inkscape:window-maximized="1"
70 inkscape:current-layer="g4" /> 71 inkscape:current-layer="g4"
72 showguides="false" />
71 <g 73 <g
72 style="stroke-width:.025in; fill:none" 74 style="fill:none;stroke-width:0.025in"
73 id="g4"> 75 id="g4"
76 transform="translate(0,-2393.6637)">
74 <!-- Line: box --> 77 <!-- Line: box -->
75 <rect
76 x="450"
77 y="0"
78 width="6300"
79 height="7350"
80 rx="0"
81 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; "
82 id="rect6" />
83 <!-- Line: box --> 78 <!-- Line: box -->
84 <rect
85 x="4950"
86 y="4950"
87 width="1500"
88 height="900"
89 rx="0"
90 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; "
91 id="rect8" />
92 <!-- Line: box --> 79 <!-- Line: box -->
93 <rect
94 x="750"
95 y="600"
96 width="5700"
97 height="3750"
98 rx="0"
99 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; "
100 id="rect10" />
101 <!-- Line --> 80 <!-- Line -->
102 <polyline
103 points="5250,8100 5688,5912 "
104 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
105 id="polyline12" />
106 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790--> 81 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
107 <polyline 82 <polyline
108 points="5714 6068 5704 5822 5598 6044 " 83 points="5714 6068 5704 5822 5598 6044 "
109 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 84 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
110 id="polyline14" /> 85 id="polyline14"
86 transform="translate(23.757862,2185.7233)" />
111 <!-- Line --> 87 <!-- Line -->
112 <polyline
113 points="4050,9300 4486,7262 "
114 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
115 id="polyline16" />
116 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140--> 88 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
117 <polyline 89 <polyline
118 points="4514 7418 4506 7172 4396 7394 " 90 points="4514 7418 4506 7172 4396 7394 "
119 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 91 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
120 id="polyline18" /> 92 id="polyline18"
93 transform="translate(23.757862,2185.7233)" />
121 <!-- Line --> 94 <!-- Line -->
122 <polyline
123 points="1040,9300 1476,7262 "
124 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
125 id="polyline20" />
126 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140--> 95 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
127 <polyline 96 <polyline
128 points="1504 7418 1496 7172 1386 7394 " 97 points="1504 7418 1496 7172 1386 7394 "
129 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 98 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
130 id="polyline22" /> 99 id="polyline22"
100 transform="translate(23.757862,2185.7233)" />
131 <!-- Line --> 101 <!-- Line -->
132 <polyline
133 points="2240,8100 2676,6062 "
134 style="stroke:#00ff00;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; "
135 id="polyline24" />
136 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940--> 102 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
137 <polyline 103 <polyline
138 points="2704 6218 2696 5972 2586 6194 " 104 points="2704 6218 2696 5972 2586 6194 "
139 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8; " 105 style="stroke:#00ff00;stroke-width:14;stroke-miterlimit:8"
140 id="polyline26" /> 106 id="polyline26"
107 transform="translate(23.757862,2185.7233)" />
141 <!-- Line: box --> 108 <!-- Line: box -->
142 <rect 109 <rect
143 x="0" 110 x="23.757858"
144 y="450" 111 y="2635.7231"
145 width="6300" 112 width="6300"
146 height="7350" 113 height="7350"
147 rx="0" 114 rx="0"
148 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffffff; " 115 style="fill:#ffffff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
149 id="rect28" /> 116 id="rect28" />
150 <!-- Line: box --> 117 <!-- Line: box -->
151 <rect 118 <rect
152 x="300" 119 x="323.75787"
153 y="1050" 120 y="3235.7231"
154 width="5700" 121 width="5700"
155 height="3750" 122 height="3750"
156 rx="0" 123 rx="0"
157 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffff00; " 124 style="fill:#ffff00;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
158 id="rect30" /> 125 id="rect30" />
159 <!-- Line --> 126 <!-- Line -->
160 <polyline 127 <polyline
161 points="1350,3450 2350,2590 " 128 points="1350,3450 2350,2590 "
162 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 129 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
163 id="polyline32" /> 130 id="polyline32"
131 transform="translate(23.757862,2185.7233)" />
164 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510--> 132 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
165 <!-- Line --> 133 <!-- Line -->
166 <polyline 134 <polyline
167 points="4950,3450 3948,2590 " 135 points="4950,3450 3948,2590 "
168 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 136 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
169 id="polyline36" /> 137 id="polyline36"
138 transform="translate(23.757862,2185.7233)" />
170 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510--> 139 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
171 <!-- Line --> 140 <!-- Line -->
172 <polyline 141 <polyline
173 points="4050,6600 4050,4414 " 142 points="4050,6600 4050,4414 "
174 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 143 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
175 id="polyline40" /> 144 id="polyline40"
145 transform="translate(23.757862,2185.7233)" />
176 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290--> 146 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
177 <!-- Line --> 147 <!-- Line -->
178 <polyline 148 <polyline
179 points="1050,6600 1050,4414 " 149 points="1050,6600 1050,4414 "
180 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 150 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
181 id="polyline44" /> 151 id="polyline44"
152 transform="translate(23.757862,2185.7233)" />
182 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290--> 153 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
183 <!-- Line --> 154 <!-- Line -->
184 <polyline 155 <polyline
185 points="2250,5400 2250,4414 " 156 points="2250,5400 2250,4414 "
186 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 157 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
187 id="polyline48" /> 158 id="polyline48"
159 transform="translate(23.757862,2185.7233)" />
188 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290--> 160 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
189 <!-- Line --> 161 <!-- Line -->
190 <polyline
191 points="2250,8100 2250,6364 "
192 style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
193 id="polyline52" />
194 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240--> 162 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
195 <!-- Line --> 163 <!-- Line -->
196 <polyline
197 points="1050,9300 1050,7564 "
198 style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
199 id="polyline56" />
200 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440--> 164 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
201 <!-- Line --> 165 <!-- Line -->
202 <polyline
203 points="4050,9300 4050,7564 "
204 style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
205 id="polyline60" />
206 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440--> 166 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
207 <!-- Line --> 167 <!-- Line -->
208 <polyline
209 points="5250,8100 5250,6364 "
210 style="stroke:#00ff00;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
211 id="polyline64" />
212 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240--> 168 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
213 <!-- Circle --> 169 <!-- Circle -->
214 <circle 170 <circle
215 cx="2850" 171 cx="2873.7581"
216 cy="3900" 172 cy="6085.7236"
217 r="76" 173 r="76"
218 style="fill:#000000;stroke:#000000;stroke-width:14;" 174 style="fill:#000000;stroke:#000000;stroke-width:14"
219 id="circle68" /> 175 id="circle68" />
220 <!-- Circle --> 176 <!-- Circle -->
221 <circle 177 <circle
222 cx="3150" 178 cx="3173.7581"
223 cy="3900" 179 cy="6085.7236"
224 r="76" 180 r="76"
225 style="fill:#000000;stroke:#000000;stroke-width:14;" 181 style="fill:#000000;stroke:#000000;stroke-width:14"
226 id="circle70" /> 182 id="circle70" />
227 <!-- Circle --> 183 <!-- Circle -->
228 <circle 184 <circle
229 cx="3450" 185 cx="3473.7581"
230 cy="3900" 186 cy="6085.7236"
231 r="76" 187 r="76"
232 style="fill:#000000;stroke:#000000;stroke-width:14;" 188 style="fill:#000000;stroke:#000000;stroke-width:14"
233 id="circle72" /> 189 id="circle72" />
234 <!-- Circle --> 190 <!-- Circle -->
235 <circle 191 <circle
236 cx="1350" 192 cx="1373.7578"
237 cy="5100" 193 cy="7285.7236"
238 r="76" 194 r="76"
239 style="fill:#000000;stroke:#000000;stroke-width:14;" 195 style="fill:#000000;stroke:#000000;stroke-width:14"
240 id="circle74" /> 196 id="circle74" />
241 <!-- Circle --> 197 <!-- Circle -->
242 <circle 198 <circle
243 cx="1650" 199 cx="1673.7578"
244 cy="5100" 200 cy="7285.7236"
245 r="76" 201 r="76"
246 style="fill:#000000;stroke:#000000;stroke-width:14;" 202 style="fill:#000000;stroke:#000000;stroke-width:14"
247 id="circle76" /> 203 id="circle76" />
248 <!-- Circle --> 204 <!-- Circle -->
249 <circle 205 <circle
250 cx="1950" 206 cx="1973.7578"
251 cy="5100" 207 cy="7285.7236"
252 r="76" 208 r="76"
253 style="fill:#000000;stroke:#000000;stroke-width:14;" 209 style="fill:#000000;stroke:#000000;stroke-width:14"
254 id="circle78" /> 210 id="circle78" />
255 <!-- Circle --> 211 <!-- Circle -->
256 <circle 212 <circle
257 cx="4350" 213 cx="4373.7578"
258 cy="5100" 214 cy="7285.7236"
259 r="76" 215 r="76"
260 style="fill:#000000;stroke:#000000;stroke-width:14;" 216 style="fill:#000000;stroke:#000000;stroke-width:14"
261 id="circle80" /> 217 id="circle80" />
262 <!-- Circle --> 218 <!-- Circle -->
263 <circle 219 <circle
264 cx="4650" 220 cx="4673.7578"
265 cy="5100" 221 cy="7285.7236"
266 r="76" 222 r="76"
267 style="fill:#000000;stroke:#000000;stroke-width:14;" 223 style="fill:#000000;stroke:#000000;stroke-width:14"
268 id="circle82" /> 224 id="circle82" />
269 <!-- Circle --> 225 <!-- Circle -->
270 <circle 226 <circle
271 cx="4950" 227 cx="4973.7578"
272 cy="5100" 228 cy="7285.7236"
273 r="76" 229 r="76"
274 style="fill:#000000;stroke:#000000;stroke-width:14;" 230 style="fill:#000000;stroke:#000000;stroke-width:14"
275 id="circle84" /> 231 id="circle84" />
276 <!-- Line: box --> 232 <!-- Line: box -->
277 <rect 233 <rect
278 x="750" 234 x="773.75781"
279 y="3450" 235 y="5635.7236"
280 width="1800" 236 width="1800"
281 height="900" 237 height="900"
282 rx="0" 238 rx="0"
283 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 239 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
284 id="rect86" /> 240 id="rect86" />
285 <!-- Line: box --> 241 <!-- Line: box -->
286 <rect 242 <rect
287 x="300" 243 x="323.75787"
288 y="6600" 244 y="8785.7227"
289 width="1500" 245 width="1500"
290 height="900" 246 height="900"
291 rx="0" 247 rx="0"
292 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 248 style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
293 id="rect88" /> 249 id="rect88" />
294 <!-- Line: box --> 250 <!-- Line: box -->
295 <rect 251 <rect
296 x="4500" 252 x="4523.7578"
297 y="5400" 253 y="7585.7236"
298 width="1500" 254 width="1500"
299 height="900" 255 height="900"
300 rx="0" 256 rx="0"
301 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 257 style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
302 id="rect90" /> 258 id="rect90" />
303 <!-- Line: box --> 259 <!-- Line: box -->
304 <rect 260 <rect
305 x="3300" 261 x="3323.7581"
306 y="6600" 262 y="8785.7227"
307 width="1500" 263 width="1500"
308 height="900" 264 height="900"
309 rx="0" 265 rx="0"
310 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 266 style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
311 id="rect92" /> 267 id="rect92" />
312 <!-- Line: box --> 268 <!-- Line: box -->
313 <rect 269 <rect
314 x="2250" 270 x="2273.7581"
315 y="1650" 271 y="3835.7231"
316 width="1800" 272 width="1800"
317 height="900" 273 height="900"
318 rx="0" 274 rx="0"
319 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 275 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
320 id="rect94" /> 276 id="rect94" />
321 <!-- Line: box --> 277 <!-- Line: box -->
322 <rect
323 x="0"
324 y="9300"
325 width="2100"
326 height="900"
327 rx="0"
328 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
329 id="rect96" />
330 <!-- Line: box --> 278 <!-- Line: box -->
331 <rect
332 x="1350"
333 y="8100"
334 width="2100"
335 height="900"
336 rx="0"
337 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
338 id="rect98" />
339 <!-- Line: box --> 279 <!-- Line: box -->
340 <rect
341 x="3000"
342 y="9300"
343 width="2100"
344 height="900"
345 rx="0"
346 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
347 id="rect100" />
348 <!-- Line: box --> 280 <!-- Line: box -->
349 <rect
350 x="4350"
351 y="8100"
352 width="2100"
353 height="900"
354 rx="0"
355 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#00ff00; "
356 id="rect102" />
357 <!-- Line: box --> 281 <!-- Line: box -->
358 <rect 282 <rect
359 x="1500" 283 x="1523.7578"
360 y="5400" 284 y="7585.7236"
361 width="1500" 285 width="1500"
362 height="900" 286 height="900"
363 rx="0" 287 rx="0"
364 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#87cfff; " 288 style="fill:#87cfff;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
365 id="rect104" /> 289 id="rect104" />
366 <!-- Line --> 290 <!-- Line -->
367 <polygon 291 <polygon
368 points="5550,3450 7350,2850 7350,5100 5550,4350 5550,3450 " 292 points="7350,2850 7350,5100 5550,4350 5550,3450 "
369 style="stroke:#000000;stroke-width:14; stroke-linejoin:miter; stroke-linecap:butt; stroke-dasharray:120 120;fill:#ffbfbf; " 293 style="fill:#ffbfbf;stroke:#000000;stroke-width:14;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:120, 120"
370 id="polygon106" /> 294 id="polygon106"
295 transform="translate(23.757862,2185.7233)" />
371 <!-- Line --> 296 <!-- Line -->
372 <polyline 297 <polyline
373 points="9300,3150 10734,3150 " 298 points="9300,3150 10734,3150 "
374 style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 299 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
375 id="polyline108" /> 300 id="polyline108"
301 transform="translate(23.757862,2185.7233)" />
376 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150--> 302 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150-->
377 <!-- Line: box --> 303 <!-- Line: box -->
378 <rect 304 <rect
379 x="10800" 305 x="10823.758"
380 y="2850" 306 y="5035.7236"
381 width="1200" 307 width="1200"
382 height="750" 308 height="750"
383 rx="0" 309 rx="0"
384 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 310 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
385 id="rect112" /> 311 id="rect112" />
386 <!-- Line --> 312 <!-- Line -->
387 <polyline 313 <polyline
388 points="11400,3600 11400,4284 " 314 points="11400,3600 11400,4284 "
389 style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 315 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
390 id="polyline114" /> 316 id="polyline114"
317 transform="translate(23.757862,2185.7233)" />
391 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410--> 318 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410-->
392 <!-- Line: box --> 319 <!-- Line: box -->
393 <rect 320 <rect
394 x="10800" 321 x="10823.758"
395 y="4350" 322 y="6535.7236"
396 width="1200" 323 width="1200"
397 height="750" 324 height="750"
398 rx="0" 325 rx="0"
399 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 326 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
400 id="rect118" /> 327 id="rect118" />
401 <!-- Line --> 328 <!-- Line -->
402 <polyline 329 <polyline
403 points="11400,5100 11400,5784 " 330 points="11400,5100 11400,5784 "
404 style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 331 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
405 id="polyline120" /> 332 id="polyline120"
333 transform="translate(23.757862,2185.7233)" />
406 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910--> 334 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910-->
407 <!-- Line: box --> 335 <!-- Line: box -->
408 <rect 336 <rect
409 x="10800" 337 x="10823.758"
410 y="5850" 338 y="8035.7236"
411 width="1200" 339 width="1200"
412 height="750" 340 height="750"
413 rx="0" 341 rx="0"
414 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " 342 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
415 id="rect124" /> 343 id="rect124" />
416 <!-- Line --> 344 <!-- Line -->
417 <polyline 345 <polyline
418 points="9300,3900 9900,3900 9900,4650 10734,4650 " 346 points="9300,3900 9900,3900 9900,4650 10734,4650 "
419 style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 347 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
420 id="polyline126" /> 348 id="polyline126"
349 transform="translate(23.757862,2185.7233)" />
421 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650--> 350 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650-->
422 <!-- Line --> 351 <!-- Line -->
423 <polyline 352 <polyline
424 points="9300,4650 9600,4650 9600,6150 10734,6150 " 353 points="9300,4650 9600,4650 9600,6150 10734,6150 "
425 style="stroke:#000000;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 354 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
426 id="polyline130" /> 355 id="polyline130"
356 transform="translate(23.757862,2185.7233)" />
427 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150--> 357 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150-->
428 <!-- Text --> 358 <!-- Text -->
429 <text
430 xml:space="preserve"
431 x="6450"
432 y="300"
433 fill="#000000"
434 font-family="Helvetica"
435 font-style="normal"
436 font-weight="normal"
437 font-size="192"
438 text-anchor="end"
439 id="text134">rcu_bh</text>
440 <!-- Text --> 359 <!-- Text -->
441 <text 360 <text
442 xml:space="preserve" 361 xml:space="preserve"
443 x="3150" 362 x="3173.7581"
444 y="1950" 363 y="4135.7231"
445 fill="#000000"
446 font-family="Courier"
447 font-style="normal" 364 font-style="normal"
448 font-weight="bold" 365 font-weight="bold"
449 font-size="192" 366 font-size="192"
450 text-anchor="middle" 367 id="text136"
451 id="text136">struct</text> 368 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
452 <!-- Text --> 369 <!-- Text -->
453 <text 370 <text
454 xml:space="preserve" 371 xml:space="preserve"
455 x="3150" 372 x="3173.7581"
456 y="2250" 373 y="4435.7236"
457 fill="#000000"
458 font-family="Courier"
459 font-style="normal" 374 font-style="normal"
460 font-weight="bold" 375 font-weight="bold"
461 font-size="192" 376 font-size="192"
462 text-anchor="middle" 377 id="text138"
463 id="text138">rcu_node</text> 378 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text>
464 <!-- Text --> 379 <!-- Text -->
465 <text 380 <text
466 xml:space="preserve" 381 xml:space="preserve"
467 x="1650" 382 x="1673.7578"
468 y="3750" 383 y="5935.7236"
469 fill="#000000"
470 font-family="Courier"
471 font-style="normal" 384 font-style="normal"
472 font-weight="bold" 385 font-weight="bold"
473 font-size="192" 386 font-size="192"
474 text-anchor="middle" 387 id="text140"
475 id="text140">struct</text> 388 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
476 <!-- Text --> 389 <!-- Text -->
477 <text 390 <text
478 xml:space="preserve" 391 xml:space="preserve"
479 x="1650" 392 x="1673.7578"
480 y="4050" 393 y="6235.7236"
481 fill="#000000"
482 font-family="Courier"
483 font-style="normal" 394 font-style="normal"
484 font-weight="bold" 395 font-weight="bold"
485 font-size="192" 396 font-size="192"
486 text-anchor="middle" 397 id="text142"
487 id="text142">rcu_node</text> 398 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text>
488 <!-- Text --> 399 <!-- Text -->
489 <text 400 <text
490 xml:space="preserve" 401 xml:space="preserve"
491 x="2250" 402 x="2273.7581"
492 y="5700" 403 y="7885.7236"
493 fill="#000000"
494 font-family="Courier"
495 font-style="normal" 404 font-style="normal"
496 font-weight="bold" 405 font-weight="bold"
497 font-size="192" 406 font-size="192"
498 text-anchor="middle" 407 id="text144"
499 id="text144">struct</text> 408 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
500 <!-- Text --> 409 <!-- Text -->
501 <text 410 <text
502 xml:space="preserve" 411 xml:space="preserve"
503 x="2250" 412 x="2273.7581"
504 y="6000" 413 y="8185.7236"
505 fill="#000000"
506 font-family="Courier"
507 font-style="normal" 414 font-style="normal"
508 font-weight="bold" 415 font-weight="bold"
509 font-size="192" 416 font-size="192"
510 text-anchor="middle" 417 id="text146"
511 id="text146">rcu_data</text> 418 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text>
512 <!-- Text --> 419 <!-- Text -->
513 <text 420 <text
514 xml:space="preserve" 421 xml:space="preserve"
515 x="1050" 422 x="1073.7578"
516 y="6900" 423 y="9085.7227"
517 fill="#000000"
518 font-family="Courier"
519 font-style="normal" 424 font-style="normal"
520 font-weight="bold" 425 font-weight="bold"
521 font-size="192" 426 font-size="192"
522 text-anchor="middle" 427 id="text148"
523 id="text148">struct</text> 428 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
524 <!-- Text --> 429 <!-- Text -->
525 <text 430 <text
526 xml:space="preserve" 431 xml:space="preserve"
527 x="1050" 432 x="1073.7578"
528 y="7200" 433 y="9385.7227"
529 fill="#000000"
530 font-family="Courier"
531 font-style="normal" 434 font-style="normal"
532 font-weight="bold" 435 font-weight="bold"
533 font-size="192" 436 font-size="192"
534 text-anchor="middle" 437 id="text150"
535 id="text150">rcu_data</text> 438 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text>
536 <!-- Text --> 439 <!-- Text -->
537 <text 440 <text
538 xml:space="preserve" 441 xml:space="preserve"
539 x="5250" 442 x="5273.7578"
540 y="5700" 443 y="7885.7236"
541 fill="#000000"
542 font-family="Courier"
543 font-style="normal" 444 font-style="normal"
544 font-weight="bold" 445 font-weight="bold"
545 font-size="192" 446 font-size="192"
546 text-anchor="middle" 447 id="text152"
547 id="text152">struct</text> 448 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
548 <!-- Text --> 449 <!-- Text -->
549 <text 450 <text
550 xml:space="preserve" 451 xml:space="preserve"
551 x="5250" 452 x="5273.7578"
552 y="6000" 453 y="8185.7236"
553 fill="#000000"
554 font-family="Courier"
555 font-style="normal" 454 font-style="normal"
556 font-weight="bold" 455 font-weight="bold"
557 font-size="192" 456 font-size="192"
558 text-anchor="middle" 457 id="text154"
559 id="text154">rcu_data</text> 458 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text>
560 <!-- Text --> 459 <!-- Text -->
561 <text 460 <text
562 xml:space="preserve" 461 xml:space="preserve"
563 x="4050" 462 x="4073.7578"
564 y="6900" 463 y="9085.7227"
565 fill="#000000"
566 font-family="Courier"
567 font-style="normal" 464 font-style="normal"
568 font-weight="bold" 465 font-weight="bold"
569 font-size="192" 466 font-size="192"
570 text-anchor="middle" 467 id="text156"
571 id="text156">struct</text> 468 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
572 <!-- Text --> 469 <!-- Text -->
573 <text 470 <text
574 xml:space="preserve" 471 xml:space="preserve"
575 x="4050" 472 x="4073.7578"
576 y="7200" 473 y="9385.7227"
577 fill="#000000"
578 font-family="Courier"
579 font-style="normal" 474 font-style="normal"
580 font-weight="bold" 475 font-weight="bold"
581 font-size="192" 476 font-size="192"
582 text-anchor="middle" 477 id="text158"
583 id="text158">rcu_data</text> 478 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_data</text>
584 <!-- Text --> 479 <!-- Text -->
585 <text 480 <text
586 xml:space="preserve" 481 xml:space="preserve"
587 x="450" 482 x="473.75784"
588 y="1350" 483 y="3535.7231"
589 fill="#000000"
590 font-family="Courier"
591 font-style="normal" 484 font-style="normal"
592 font-weight="bold" 485 font-weight="bold"
593 font-size="192" 486 font-size="192"
594 text-anchor="start" 487 id="text160"
595 id="text160">struct rcu_state</text> 488 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">struct rcu_state</text>
596 <!-- Text --> 489 <!-- Text -->
597 <text
598 xml:space="preserve"
599 x="1050"
600 y="9600"
601 fill="#000000"
602 font-family="Courier"
603 font-style="normal"
604 font-weight="bold"
605 font-size="192"
606 text-anchor="middle"
607 id="text162">struct</text>
608 <!-- Text --> 490 <!-- Text -->
609 <text
610 xml:space="preserve"
611 x="1050"
612 y="9900"
613 fill="#000000"
614 font-family="Courier"
615 font-style="normal"
616 font-weight="bold"
617 font-size="192"
618 text-anchor="middle"
619 id="text164">rcu_dynticks</text>
620 <!-- Text --> 491 <!-- Text -->
621 <text
622 xml:space="preserve"
623 x="4050"
624 y="9600"
625 fill="#000000"
626 font-family="Courier"
627 font-style="normal"
628 font-weight="bold"
629 font-size="192"
630 text-anchor="middle"
631 id="text166">struct</text>
632 <!-- Text --> 492 <!-- Text -->
633 <text
634 xml:space="preserve"
635 x="4050"
636 y="9900"
637 fill="#000000"
638 font-family="Courier"
639 font-style="normal"
640 font-weight="bold"
641 font-size="192"
642 text-anchor="middle"
643 id="text168">rcu_dynticks</text>
644 <!-- Text --> 493 <!-- Text -->
645 <text
646 xml:space="preserve"
647 x="2400"
648 y="8400"
649 fill="#000000"
650 font-family="Courier"
651 font-style="normal"
652 font-weight="bold"
653 font-size="192"
654 text-anchor="middle"
655 id="text170">struct</text>
656 <!-- Text --> 494 <!-- Text -->
657 <text
658 xml:space="preserve"
659 x="2400"
660 y="8700"
661 fill="#000000"
662 font-family="Courier"
663 font-style="normal"
664 font-weight="bold"
665 font-size="192"
666 text-anchor="middle"
667 id="text172">rcu_dynticks</text>
668 <!-- Text --> 495 <!-- Text -->
669 <text
670 xml:space="preserve"
671 x="5400"
672 y="8400"
673 fill="#000000"
674 font-family="Courier"
675 font-style="normal"
676 font-weight="bold"
677 font-size="192"
678 text-anchor="middle"
679 id="text174">struct</text>
680 <!-- Text --> 496 <!-- Text -->
681 <text
682 xml:space="preserve"
683 x="5400"
684 y="8700"
685 fill="#000000"
686 font-family="Courier"
687 font-style="normal"
688 font-weight="bold"
689 font-size="192"
690 text-anchor="middle"
691 id="text176">rcu_dynticks</text>
692 <!-- Text --> 497 <!-- Text -->
693 <text 498 <text
694 xml:space="preserve" 499 xml:space="preserve"
695 x="6000" 500 x="6023.7578"
696 y="750" 501 y="2935.7231"
697 fill="#000000"
698 font-family="Helvetica"
699 font-style="normal" 502 font-style="normal"
700 font-weight="normal" 503 font-weight="normal"
701 font-size="192" 504 font-size="192"
702 text-anchor="end" 505 id="text178"
703 id="text178">rcu_sched</text> 506 style="font-style:normal;font-weight:normal;font-size:192px;font-family:Helvetica;text-anchor:end;fill:#000000">rcu_state</text>
704 <!-- Text --> 507 <!-- Text -->
705 <text 508 <text
706 xml:space="preserve" 509 xml:space="preserve"
707 x="11400" 510 x="11423.758"
708 y="3300" 511 y="5485.7236"
709 fill="#000000"
710 font-family="Helvetica"
711 font-style="normal" 512 font-style="normal"
712 font-weight="normal" 513 font-weight="normal"
713 font-size="216" 514 font-size="216"
714 text-anchor="middle" 515 id="text180"
715 id="text180">T3</text> 516 style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T3</text>
716 <!-- Text --> 517 <!-- Text -->
717 <text 518 <text
718 xml:space="preserve" 519 xml:space="preserve"
719 x="11400" 520 x="11423.758"
720 y="4800" 521 y="6985.7236"
721 fill="#000000"
722 font-family="Helvetica"
723 font-style="normal" 522 font-style="normal"
724 font-weight="normal" 523 font-weight="normal"
725 font-size="216" 524 font-size="216"
726 text-anchor="middle" 525 id="text182"
727 id="text182">T2</text> 526 style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T2</text>
728 <!-- Text --> 527 <!-- Text -->
729 <text 528 <text
730 xml:space="preserve" 529 xml:space="preserve"
731 x="11400" 530 x="11423.758"
732 y="6300" 531 y="8485.7227"
733 fill="#000000"
734 font-family="Helvetica"
735 font-style="normal" 532 font-style="normal"
736 font-weight="normal" 533 font-weight="normal"
737 font-size="216" 534 font-size="216"
738 text-anchor="middle" 535 id="text184"
739 id="text184">T1</text> 536 style="font-style:normal;font-weight:normal;font-size:216px;font-family:Helvetica;text-anchor:middle;fill:#000000">T1</text>
740 <!-- Line --> 537 <!-- Line -->
741 <polyline 538 <polyline
742 points="5250,5400 5250,4414 " 539 points="5250,5400 5250,4414 "
743 style="stroke:#00d1d1;stroke-width:30.00057884;stroke-linejoin:miter;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" 540 style="stroke:#00d1d1;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
744 id="polyline186" /> 541 id="polyline186"
542 transform="translate(23.757862,2185.7233)" />
745 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290--> 543 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
746 <!-- Line: box --> 544 <!-- Line: box -->
747 <rect 545 <rect
748 x="3750" 546 x="3773.7581"
749 y="3450" 547 y="5635.7236"
750 width="1800" 548 width="1800"
751 height="900" 549 height="900"
752 rx="0" 550 rx="0"
753 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 551 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
754 id="rect190" /> 552 id="rect190" />
755 <!-- Line: box --> 553 <!-- Line: box -->
756 <rect 554 <rect
757 x="7350" 555 x="7373.7578"
758 y="2850" 556 y="5035.7236"
759 width="1950" 557 width="1950"
760 height="750" 558 height="750"
761 rx="0" 559 rx="0"
762 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 560 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
763 id="rect192" /> 561 id="rect192" />
764 <!-- Line: box --> 562 <!-- Line: box -->
765 <rect 563 <rect
766 x="7350" 564 x="7373.7578"
767 y="3600" 565 y="5785.7236"
768 width="1950" 566 width="1950"
769 height="750" 567 height="750"
770 rx="0" 568 rx="0"
771 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 569 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
772 id="rect194" /> 570 id="rect194" />
773 <!-- Line: box --> 571 <!-- Line: box -->
774 <rect 572 <rect
775 x="7350" 573 x="7373.7578"
776 y="4350" 574 y="6535.7236"
777 width="1950" 575 width="1950"
778 height="750" 576 height="750"
779 rx="0" 577 rx="0"
780 style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffbfbf; " 578 style="fill:#ffbfbf;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
781 id="rect196" /> 579 id="rect196" />
782 <!-- Text --> 580 <!-- Text -->
783 <text 581 <text
784 xml:space="preserve" 582 xml:space="preserve"
785 x="4650" 583 x="4673.7578"
786 y="4050" 584 y="6235.7236"
787 fill="#000000"
788 font-family="Courier"
789 font-style="normal" 585 font-style="normal"
790 font-weight="bold" 586 font-weight="bold"
791 font-size="192" 587 font-size="192"
792 text-anchor="middle" 588 id="text198"
793 id="text198">rcu_node</text> 589 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">rcu_node</text>
794 <!-- Text --> 590 <!-- Text -->
795 <text 591 <text
796 xml:space="preserve" 592 xml:space="preserve"
797 x="4650" 593 x="4673.7578"
798 y="3750" 594 y="5935.7236"
799 fill="#000000"
800 font-family="Courier"
801 font-style="normal" 595 font-style="normal"
802 font-weight="bold" 596 font-weight="bold"
803 font-size="192" 597 font-size="192"
804 text-anchor="middle" 598 id="text200"
805 id="text200">struct</text> 599 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:middle;fill:#000000">struct</text>
806 <!-- Text --> 600 <!-- Text -->
807 <text 601 <text
808 xml:space="preserve" 602 xml:space="preserve"
809 x="7500" 603 x="7523.7578"
810 y="3300" 604 y="5485.7236"
811 fill="#000000"
812 font-family="Courier"
813 font-style="normal" 605 font-style="normal"
814 font-weight="bold" 606 font-weight="bold"
815 font-size="192" 607 font-size="192"
816 text-anchor="start" 608 id="text202"
817 id="text202">blkd_tasks</text> 609 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">blkd_tasks</text>
818 <!-- Text --> 610 <!-- Text -->
819 <text 611 <text
820 xml:space="preserve" 612 xml:space="preserve"
821 x="7500" 613 x="7523.7578"
822 y="4050" 614 y="6235.7236"
823 fill="#000000"
824 font-family="Courier"
825 font-style="normal" 615 font-style="normal"
826 font-weight="bold" 616 font-weight="bold"
827 font-size="192" 617 font-size="192"
828 text-anchor="start" 618 id="text204"
829 id="text204">gp_tasks</text> 619 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">gp_tasks</text>
830 <!-- Text --> 620 <!-- Text -->
831 <text 621 <text
832 xml:space="preserve" 622 xml:space="preserve"
833 x="7500" 623 x="7523.7578"
834 y="4800" 624 y="6985.7236"
835 fill="#000000"
836 font-family="Courier"
837 font-style="normal" 625 font-style="normal"
838 font-weight="bold" 626 font-weight="bold"
839 font-size="192" 627 font-size="192"
840 text-anchor="start" 628 id="text206"
841 id="text206">exp_tasks</text> 629 style="font-style:normal;font-weight:bold;font-size:192px;font-family:Courier;text-anchor:start;fill:#000000">exp_tasks</text>
842 </g> 630 </g>
843</svg> 631</svg>
diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html
index e62c7c34a369..8e4f873b979f 100644
--- a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html
+++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html
@@ -160,9 +160,9 @@ was in flight.
160If the CPU is idle, then <tt>sync_sched_exp_handler()</tt> reports 160If the CPU is idle, then <tt>sync_sched_exp_handler()</tt> reports
161the quiescent state. 161the quiescent state.
162 162
163<p> 163<p> Otherwise, the handler forces a future context switch by setting the
164Otherwise, the handler invokes <tt>resched_cpu()</tt>, which forces 164NEED_RESCHED flag of the current task's thread flag and the CPU preempt
165a future context switch. 165counter.
166At the time of the context switch, the CPU reports the quiescent state. 166At the time of the context switch, the CPU reports the quiescent state.
167Should the CPU go offline first, it will report the quiescent state 167Should the CPU go offline first, it will report the quiescent state
168at that time. 168at that time.
diff --git a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
index a346ce0116eb..e4d94fba6c89 100644
--- a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
+++ b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
@@ -77,7 +77,7 @@ The key point is that the lock-acquisition functions, including
77<tt>smp_mb__after_unlock_lock()</tt> immediately after successful 77<tt>smp_mb__after_unlock_lock()</tt> immediately after successful
78acquisition of the lock. 78acquisition of the lock.
79 79
80<p>Therefore, for any given <tt>rcu_node</tt> struction, any access 80<p>Therefore, for any given <tt>rcu_node</tt> structure, any access
81happening before one of the above lock-release functions will be seen 81happening before one of the above lock-release functions will be seen
82by all CPUs as happening before any access happening after a later 82by all CPUs as happening before any access happening after a later
83one of the above lock-acquisition functions. 83one of the above lock-acquisition functions.
diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html
index 43c4e2f05f40..9fca73e03a98 100644
--- a/Documentation/RCU/Design/Requirements/Requirements.html
+++ b/Documentation/RCU/Design/Requirements/Requirements.html
@@ -900,8 +900,6 @@ Except where otherwise noted, these non-guarantees were premeditated.
900 Grace Periods Don't Partition Read-Side Critical Sections</a> 900 Grace Periods Don't Partition Read-Side Critical Sections</a>
901<li> <a href="#Read-Side Critical Sections Don't Partition Grace Periods"> 901<li> <a href="#Read-Side Critical Sections Don't Partition Grace Periods">
902 Read-Side Critical Sections Don't Partition Grace Periods</a> 902 Read-Side Critical Sections Don't Partition Grace Periods</a>
903<li> <a href="#Disabling Preemption Does Not Block Grace Periods">
904 Disabling Preemption Does Not Block Grace Periods</a>
905</ol> 903</ol>
906 904
907<h3><a name="Readers Impose Minimal Ordering">Readers Impose Minimal Ordering</a></h3> 905<h3><a name="Readers Impose Minimal Ordering">Readers Impose Minimal Ordering</a></h3>
@@ -1259,54 +1257,6 @@ of RCU grace periods.
1259<tr><td>&nbsp;</td></tr> 1257<tr><td>&nbsp;</td></tr>
1260</table> 1258</table>
1261 1259
1262<h3><a name="Disabling Preemption Does Not Block Grace Periods">
1263Disabling Preemption Does Not Block Grace Periods</a></h3>
1264
1265<p>
1266There was a time when disabling preemption on any given CPU would block
1267subsequent grace periods.
1268However, this was an accident of implementation and is not a requirement.
1269And in the current Linux-kernel implementation, disabling preemption
1270on a given CPU in fact does not block grace periods, as Oleg Nesterov
1271<a href="https://lkml.kernel.org/g/20150614193825.GA19582@redhat.com">demonstrated</a>.
1272
1273<p>
1274If you need a preempt-disable region to block grace periods, you need to add
1275<tt>rcu_read_lock()</tt> and <tt>rcu_read_unlock()</tt>, for example
1276as follows:
1277
1278<blockquote>
1279<pre>
1280 1 preempt_disable();
1281 2 rcu_read_lock();
1282 3 do_something();
1283 4 rcu_read_unlock();
1284 5 preempt_enable();
1285 6
1286 7 /* Spinlocks implicitly disable preemption. */
1287 8 spin_lock(&amp;mylock);
1288 9 rcu_read_lock();
128910 do_something();
129011 rcu_read_unlock();
129112 spin_unlock(&amp;mylock);
1292</pre>
1293</blockquote>
1294
1295<p>
1296In theory, you could enter the RCU read-side critical section first,
1297but it is more efficient to keep the entire RCU read-side critical
1298section contained in the preempt-disable region as shown above.
1299Of course, RCU read-side critical sections that extend outside of
1300preempt-disable regions will work correctly, but such critical sections
1301can be preempted, which forces <tt>rcu_read_unlock()</tt> to do
1302more work.
1303And no, this is <i>not</i> an invitation to enclose all of your RCU
1304read-side critical sections within preempt-disable regions, because
1305doing so would degrade real-time response.
1306
1307<p>
1308This non-requirement appeared with preemptible RCU.
1309
1310<h2><a name="Parallelism Facts of Life">Parallelism Facts of Life</a></h2> 1260<h2><a name="Parallelism Facts of Life">Parallelism Facts of Life</a></h2>
1311 1261
1312<p> 1262<p>
@@ -1381,6 +1331,7 @@ Classes of quality-of-implementation requirements are as follows:
1381<ol> 1331<ol>
1382<li> <a href="#Specialization">Specialization</a> 1332<li> <a href="#Specialization">Specialization</a>
1383<li> <a href="#Performance and Scalability">Performance and Scalability</a> 1333<li> <a href="#Performance and Scalability">Performance and Scalability</a>
1334<li> <a href="#Forward Progress">Forward Progress</a>
1384<li> <a href="#Composability">Composability</a> 1335<li> <a href="#Composability">Composability</a>
1385<li> <a href="#Corner Cases">Corner Cases</a> 1336<li> <a href="#Corner Cases">Corner Cases</a>
1386</ol> 1337</ol>
@@ -1645,7 +1596,7 @@ used in place of <tt>synchronize_rcu()</tt> as follows:
164516 struct foo *p; 159616 struct foo *p;
164617 159717
164718 spin_lock(&amp;gp_lock); 159818 spin_lock(&amp;gp_lock);
164819 p = rcu_dereference(gp); 159919 p = rcu_access_pointer(gp);
164920 if (!p) { 160020 if (!p) {
165021 spin_unlock(&amp;gp_lock); 160121 spin_unlock(&amp;gp_lock);
165122 return false; 160222 return false;
@@ -1822,6 +1773,106 @@ so it is too early to tell whether they will stand the test of time.
1822RCU thus provides a range of tools to allow updaters to strike the 1773RCU thus provides a range of tools to allow updaters to strike the
1823required tradeoff between latency, flexibility and CPU overhead. 1774required tradeoff between latency, flexibility and CPU overhead.
1824 1775
1776<h3><a name="Forward Progress">Forward Progress</a></h3>
1777
1778<p>
1779In theory, delaying grace-period completion and callback invocation
1780is harmless.
1781In practice, not only are memory sizes finite but also callbacks sometimes
1782do wakeups, and sufficiently deferred wakeups can be difficult
1783to distinguish from system hangs.
1784Therefore, RCU must provide a number of mechanisms to promote forward
1785progress.
1786
1787<p>
1788These mechanisms are not foolproof, nor can they be.
1789For one simple example, an infinite loop in an RCU read-side critical
1790section must by definition prevent later grace periods from ever completing.
1791For a more involved example, consider a 64-CPU system built with
1792<tt>CONFIG_RCU_NOCB_CPU=y</tt> and booted with <tt>rcu_nocbs=1-63</tt>,
1793where CPUs&nbsp;1 through&nbsp;63 spin in tight loops that invoke
1794<tt>call_rcu()</tt>.
1795Even if these tight loops also contain calls to <tt>cond_resched()</tt>
1796(thus allowing grace periods to complete), CPU&nbsp;0 simply will
1797not be able to invoke callbacks as fast as the other 63 CPUs can
1798register them, at least not until the system runs out of memory.
1799In both of these examples, the Spiderman principle applies: With great
1800power comes great responsibility.
1801However, short of this level of abuse, RCU is required to
1802ensure timely completion of grace periods and timely invocation of
1803callbacks.
1804
1805<p>
1806RCU takes the following steps to encourage timely completion of
1807grace periods:
1808
1809<ol>
1810<li> If a grace period fails to complete within 100&nbsp;milliseconds,
1811 RCU causes future invocations of <tt>cond_resched()</tt> on
1812 the holdout CPUs to provide an RCU quiescent state.
1813 RCU also causes those CPUs' <tt>need_resched()</tt> invocations
1814 to return <tt>true</tt>, but only after the corresponding CPU's
1815 next scheduling-clock.
1816<li> CPUs mentioned in the <tt>nohz_full</tt> kernel boot parameter
1817 can run indefinitely in the kernel without scheduling-clock
1818 interrupts, which defeats the above <tt>need_resched()</tt>
1819 strategem.
1820 RCU will therefore invoke <tt>resched_cpu()</tt> on any
1821 <tt>nohz_full</tt> CPUs still holding out after
1822 109&nbsp;milliseconds.
1823<li> In kernels built with <tt>CONFIG_RCU_BOOST=y</tt>, if a given
1824 task that has been preempted within an RCU read-side critical
1825 section is holding out for more than 500&nbsp;milliseconds,
1826 RCU will resort to priority boosting.
1827<li> If a CPU is still holding out 10&nbsp;seconds into the grace
1828 period, RCU will invoke <tt>resched_cpu()</tt> on it regardless
1829 of its <tt>nohz_full</tt> state.
1830</ol>
1831
1832<p>
1833The above values are defaults for systems running with <tt>HZ=1000</tt>.
1834They will vary as the value of <tt>HZ</tt> varies, and can also be
1835changed using the relevant Kconfig options and kernel boot parameters.
1836RCU currently does not do much sanity checking of these
1837parameters, so please use caution when changing them.
1838Note that these forward-progress measures are provided only for RCU,
1839not for
1840<a href="#Sleepable RCU">SRCU</a> or
1841<a href="#Tasks RCU">Tasks RCU</a>.
1842
1843<p>
1844RCU takes the following steps in <tt>call_rcu()</tt> to encourage timely
1845invocation of callbacks when any given non-<tt>rcu_nocbs</tt> CPU has
184610,000 callbacks, or has 10,000 more callbacks than it had the last time
1847encouragement was provided:
1848
1849<ol>
1850<li> Starts a grace period, if one is not already in progress.
1851<li> Forces immediate checking for quiescent states, rather than
1852 waiting for three milliseconds to have elapsed since the
1853 beginning of the grace period.
1854<li> Immediately tags the CPU's callbacks with their grace period
1855 completion numbers, rather than waiting for the <tt>RCU_SOFTIRQ</tt>
1856 handler to get around to it.
1857<li> Lifts callback-execution batch limits, which speeds up callback
1858 invocation at the expense of degrading realtime response.
1859</ol>
1860
1861<p>
1862Again, these are default values when running at <tt>HZ=1000</tt>,
1863and can be overridden.
1864Again, these forward-progress measures are provided only for RCU,
1865not for
1866<a href="#Sleepable RCU">SRCU</a> or
1867<a href="#Tasks RCU">Tasks RCU</a>.
1868Even for RCU, callback-invocation forward progress for <tt>rcu_nocbs</tt>
1869CPUs is much less well-developed, in part because workloads benefiting
1870from <tt>rcu_nocbs</tt> CPUs tend to invoke <tt>call_rcu()</tt>
1871relatively infrequently.
1872If workloads emerge that need both <tt>rcu_nocbs</tt> CPUs and high
1873<tt>call_rcu()</tt> invocation rates, then additional forward-progress
1874work will be required.
1875
1825<h3><a name="Composability">Composability</a></h3> 1876<h3><a name="Composability">Composability</a></h3>
1826 1877
1827<p> 1878<p>
@@ -2272,7 +2323,7 @@ that meets this requirement.
2272Furthermore, NMI handlers can be interrupted by what appear to RCU 2323Furthermore, NMI handlers can be interrupted by what appear to RCU
2273to be normal interrupts. 2324to be normal interrupts.
2274One way that this can happen is for code that directly invokes 2325One way that this can happen is for code that directly invokes
2275<tt>rcu_irq_enter()</tt> and </tt>rcu_irq_exit()</tt> to be called 2326<tt>rcu_irq_enter()</tt> and <tt>rcu_irq_exit()</tt> to be called
2276from an NMI handler. 2327from an NMI handler.
2277This astonishing fact of life prompted the current code structure, 2328This astonishing fact of life prompted the current code structure,
2278which has <tt>rcu_irq_enter()</tt> invoking <tt>rcu_nmi_enter()</tt> 2329which has <tt>rcu_irq_enter()</tt> invoking <tt>rcu_nmi_enter()</tt>
@@ -2294,7 +2345,7 @@ via <tt>del_timer_sync()</tt> or similar.
2294<p> 2345<p>
2295Unfortunately, there is no way to cancel an RCU callback; 2346Unfortunately, there is no way to cancel an RCU callback;
2296once you invoke <tt>call_rcu()</tt>, the callback function is 2347once you invoke <tt>call_rcu()</tt>, the callback function is
2297going to eventually be invoked, unless the system goes down first. 2348eventually going to be invoked, unless the system goes down first.
2298Because it is normally considered socially irresponsible to crash the system 2349Because it is normally considered socially irresponsible to crash the system
2299in response to a module unload request, we need some other way 2350in response to a module unload request, we need some other way
2300to deal with in-flight RCU callbacks. 2351to deal with in-flight RCU callbacks.
@@ -2424,23 +2475,37 @@ for context-switch-heavy <tt>CONFIG_NO_HZ_FULL=y</tt> workloads,
2424but there is room for further improvement. 2475but there is room for further improvement.
2425 2476
2426<p> 2477<p>
2427In the past, it was forbidden to disable interrupts across an 2478It is forbidden to hold any of scheduler's runqueue or priority-inheritance
2428<tt>rcu_read_unlock()</tt> unless that interrupt-disabled region 2479spinlocks across an <tt>rcu_read_unlock()</tt> unless interrupts have been
2429of code also included the matching <tt>rcu_read_lock()</tt>. 2480disabled across the entire RCU read-side critical section, that is,
2430Violating this restriction could result in deadlocks involving the 2481up to and including the matching <tt>rcu_read_lock()</tt>.
2431scheduler's runqueue and priority-inheritance spinlocks. 2482Violating this restriction can result in deadlocks involving these
2432This restriction was lifted when interrupt-disabled calls to 2483scheduler spinlocks.
2433<tt>rcu_read_unlock()</tt> started deferring the reporting of 2484There was hope that this restriction might be lifted when interrupt-disabled
2434the resulting RCU-preempt quiescent state until the end of that 2485calls to <tt>rcu_read_unlock()</tt> started deferring the reporting of
2486the resulting RCU-preempt quiescent state until the end of the corresponding
2435interrupts-disabled region. 2487interrupts-disabled region.
2436This deferred reporting means that the scheduler's runqueue and 2488Unfortunately, timely reporting of the corresponding quiescent state
2437priority-inheritance locks cannot be held while reporting an RCU-preempt 2489to expedited grace periods requires a call to <tt>raise_softirq()</tt>,
2438quiescent state, which lifts the earlier restriction, at least from 2490which can acquire these scheduler spinlocks.
2439a deadlock perspective. 2491In addition, real-time systems using RCU priority boosting
2440Unfortunately, real-time systems using RCU priority boosting may
2441need this restriction to remain in effect because deferred 2492need this restriction to remain in effect because deferred
2442quiescent-state reporting also defers deboosting, which in turn 2493quiescent-state reporting would also defer deboosting, which in turn
2443degrades real-time latencies. 2494would degrade real-time latencies.
2495
2496<p>
2497In theory, if a given RCU read-side critical section could be
2498guaranteed to be less than one second in duration, holding a scheduler
2499spinlock across that critical section's <tt>rcu_read_unlock()</tt>
2500would require only that preemption be disabled across the entire
2501RCU read-side critical section, not interrupts.
2502Unfortunately, given the possibility of vCPU preemption, long-running
2503interrupts, and so on, it is not possible in practice to guarantee
2504that a given RCU read-side critical section will complete in less than
2505one second.
2506Therefore, as noted above, if scheduler spinlocks are held across
2507a given call to <tt>rcu_read_unlock()</tt>, interrupts must be
2508disabled across the entire RCU read-side critical section.
2444 2509
2445<h3><a name="Tracing and RCU">Tracing and RCU</a></h3> 2510<h3><a name="Tracing and RCU">Tracing and RCU</a></h3>
2446 2511
@@ -3233,6 +3298,11 @@ For example, RCU callback overhead might be charged back to the
3233originating <tt>call_rcu()</tt> instance, though probably not 3298originating <tt>call_rcu()</tt> instance, though probably not
3234in production kernels. 3299in production kernels.
3235 3300
3301<p>
3302Additional work may be required to provide reasonable forward-progress
3303guarantees under heavy load for grace periods and for callback
3304invocation.
3305
3236<h2><a name="Summary">Summary</a></h2> 3306<h2><a name="Summary">Summary</a></h2>
3237 3307
3238<p> 3308<p>