aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-13 15:18:10 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-13 15:18:10 -0500
commit6098850e7e6978f95a958f79a645a653228d0002 (patch)
tree42e347ddd93cef05099b93157c32b80593572f02
parentf08d8bcc12de5a153e587027e77de83662eefb8a (diff)
parent72bc286b81d21404cdfecddf76b64c7163aac764 (diff)
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RCU updates from Ingo Molnar: "The main changes in this cycle are: - Documentation updates - RCU CPU stall-warning updates - Torture-test updates - Miscellaneous fixes Size wise the biggest updates are to documentation. Excluding documentation most of the code increase comes from a single commit which expands debugging" * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits) srcu: Add parameters to SRCU docbook comments doc: Rewrite confusing statement about memory barriers memory-barriers.txt: Fix typo in pairing example rcu/segcblist: Include rcupdate.h rcu: Add extended-quiescent-state testing advice rcu: Suppress lockdep false-positive ->boost_mtx complaints rcu: Do not include rtmutex_common.h unconditionally torture: Provide TMPDIR environment variable to specify tmpdir rcutorture: Dump writer stack if stalled rcutorture: Add interrupt-disable capability to stall-warning tests rcu: Suppress RCU CPU stall warnings while dumping trace rcu: Turn off tracing before dumping trace rcu: Make RCU CPU stall warnings check for irq-disabled CPUs sched,rcu: Make cond_resched() provide RCU quiescent state sched: Make resched_cpu() unconditional irq_work: Map irq_work_on_queue() to irq_work_on() in !SMP rcu: Create call_rcu_tasks() kthread at boot time rcu: Fix up pending cbs check in rcu_prepare_for_idle memory-barriers: Rework multicopy-atomicity section memory-barriers: Replace uses of "transitive" ...
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Diagram.html9
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html707
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg486
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg655
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg700
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg1126
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg1309
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg656
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg656
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg632
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg5135
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg775
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg1095
-rw-r--r--Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg229
-rw-r--r--Documentation/RCU/stallwarn.txt200
-rw-r--r--Documentation/admin-guide/kernel-parameters.txt3
-rw-r--r--Documentation/memory-barriers.txt197
-rw-r--r--include/linux/irq_work.h3
-rw-r--r--kernel/irq_work.c9
-rw-r--r--kernel/rcu/rcu.h21
-rw-r--r--kernel/rcu/rcu_segcblist.c1
-rw-r--r--kernel/rcu/rcutorture.c24
-rw-r--r--kernel/rcu/tree.c159
-rw-r--r--kernel/rcu/tree.h5
-rw-r--r--kernel/rcu/tree_plugin.h14
-rw-r--r--kernel/rcu/update.c25
-rw-r--r--kernel/sched/core.c5
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/config_override.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/configcheck.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/configinit.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/kvm-build.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/kvm.sh4
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/parse-build.sh2
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/parse-torture.sh2
35 files changed, 14598 insertions, 256 deletions
diff --git a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Diagram.html b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Diagram.html
new file mode 100644
index 000000000000..e5b42a798ff3
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Diagram.html
@@ -0,0 +1,9 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head><title>A Diagram of TREE_RCU's Grace-Period Memory Ordering</title>
5 <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
6
7<p><img src="TreeRCU-gp.svg" alt="TreeRCU-gp.svg">
8
9</body></html>
diff --git a/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
new file mode 100644
index 000000000000..8651b0b4fd79
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
@@ -0,0 +1,707 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head><title>A Tour Through TREE_RCU's Grace-Period Memory Ordering</title>
5 <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
6
7 <p>August 8, 2017</p>
8 <p>This article was contributed by Paul E.&nbsp;McKenney</p>
9
10<h3>Introduction</h3>
11
12<p>This document gives a rough visual overview of how Tree RCU's
13grace-period memory ordering guarantee is provided.
14
15<ol>
16<li> <a href="#What Is Tree RCU's Grace Period Memory Ordering Guarantee?">
17 What Is Tree RCU's Grace Period Memory Ordering Guarantee?</a>
18<li> <a href="#Tree RCU Grace Period Memory Ordering Building Blocks">
19 Tree RCU Grace Period Memory Ordering Building Blocks</a>
20<li> <a href="#Tree RCU Grace Period Memory Ordering Components">
21 Tree RCU Grace Period Memory Ordering Components</a>
22<li> <a href="#Putting It All Together">Putting It All Together</a>
23</ol>
24
25<h3><a name="What Is Tree RCU's Grace Period Memory Ordering Guarantee?">
26What Is Tree RCU's Grace Period Memory Ordering Guarantee?</a></h3>
27
28<p>RCU grace periods provide extremely strong memory-ordering guarantees
29for non-idle non-offline code.
30Any code that happens after the end of a given RCU grace period is guaranteed
31to see the effects of all accesses prior to the beginning of that grace
32period that are within RCU read-side critical sections.
33Similarly, any code that happens before the beginning of a given RCU grace
34period is guaranteed to see the effects of all accesses following the end
35of that grace period that are within RCU read-side critical sections.
36
37<p>This guarantee is particularly pervasive for <tt>synchronize_sched()</tt>,
38for which RCU-sched read-side critical sections include any region
39of code for which preemption is disabled.
40Given that each individual machine instruction can be thought of as
41an extremely small region of preemption-disabled code, one can think of
42<tt>synchronize_sched()</tt> as <tt>smp_mb()</tt> on steroids.
43
44<p>RCU updaters use this guarantee by splitting their updates into
45two phases, one of which is executed before the grace period and
46the other of which is executed after the grace period.
47In the most common use case, phase one removes an element from
48a linked RCU-protected data structure, and phase two frees that element.
49For this to work, any readers that have witnessed state prior to the
50phase-one update (in the common case, removal) must not witness state
51following the phase-two update (in the common case, freeing).
52
53<p>The RCU implementation provides this guarantee using a network
54of lock-based critical sections, memory barriers, and per-CPU
55processing, as is described in the following sections.
56
57<h3><a name="Tree RCU Grace Period Memory Ordering Building Blocks">
58Tree RCU Grace Period Memory Ordering Building Blocks</a></h3>
59
60<p>The workhorse for RCU's grace-period memory ordering is the
61critical section for the <tt>rcu_node</tt> structure's
62<tt>-&gt;lock</tt>.
63These critical sections use helper functions for lock acquisition, including
64<tt>raw_spin_lock_rcu_node()</tt>,
65<tt>raw_spin_lock_irq_rcu_node()</tt>, and
66<tt>raw_spin_lock_irqsave_rcu_node()</tt>.
67Their lock-release counterparts are
68<tt>raw_spin_unlock_rcu_node()</tt>,
69<tt>raw_spin_unlock_irq_rcu_node()</tt>, and
70<tt>raw_spin_unlock_irqrestore_rcu_node()</tt>,
71respectively.
72For completeness, a
73<tt>raw_spin_trylock_rcu_node()</tt>
74is also provided.
75The key point is that the lock-acquisition functions, including
76<tt>raw_spin_trylock_rcu_node()</tt>, all invoke
77<tt>smp_mb__after_unlock_lock()</tt> immediately after successful
78acquisition of the lock.
79
80<p>Therefore, for any given <tt>rcu_node</tt> struction, any access
81happening before one of the above lock-release functions will be seen
82by all CPUs as happening before any access happening after a later
83one of the above lock-acquisition functions.
84Furthermore, any access happening before one of the
85above lock-release function on any given CPU will be seen by all
86CPUs as happening before any access happening after a later one
87of the above lock-acquisition functions executing on that same CPU,
88even if the lock-release and lock-acquisition functions are operating
89on different <tt>rcu_node</tt> structures.
90Tree RCU uses these two ordering guarantees to form an ordering
91network among all CPUs that were in any way involved in the grace
92period, including any CPUs that came online or went offline during
93the grace period in question.
94
95<p>The following litmus test exhibits the ordering effects of these
96lock-acquisition and lock-release functions:
97
98<pre>
99 1 int x, y, z;
100 2
101 3 void task0(void)
102 4 {
103 5 raw_spin_lock_rcu_node(rnp);
104 6 WRITE_ONCE(x, 1);
105 7 r1 = READ_ONCE(y);
106 8 raw_spin_unlock_rcu_node(rnp);
107 9 }
10810
10911 void task1(void)
11012 {
11113 raw_spin_lock_rcu_node(rnp);
11214 WRITE_ONCE(y, 1);
11315 r2 = READ_ONCE(z);
11416 raw_spin_unlock_rcu_node(rnp);
11517 }
11618
11719 void task2(void)
11820 {
11921 WRITE_ONCE(z, 1);
12022 smp_mb();
12123 r3 = READ_ONCE(x);
12224 }
12325
12426 WARN_ON(r1 == 0 &amp;&amp; r2 == 0 &amp;&amp; r3 == 0);
125</pre>
126
127<p>The <tt>WARN_ON()</tt> is evaluated at &ldquo;the end of time&rdquo;,
128after all changes have propagated throughout the system.
129Without the <tt>smp_mb__after_unlock_lock()</tt> provided by the
130acquisition functions, this <tt>WARN_ON()</tt> could trigger, for example
131on PowerPC.
132The <tt>smp_mb__after_unlock_lock()</tt> invocations prevent this
133<tt>WARN_ON()</tt> from triggering.
134
135<p>This approach must be extended to include idle CPUs, which need
136RCU's grace-period memory ordering guarantee to extend to any
137RCU read-side critical sections preceding and following the current
138idle sojourn.
139This case is handled by calls to the strongly ordered
140<tt>atomic_add_return()</tt> read-modify-write atomic operation that
141is invoked within <tt>rcu_dynticks_eqs_enter()</tt> at idle-entry
142time and within <tt>rcu_dynticks_eqs_exit()</tt> at idle-exit time.
143The grace-period kthread invokes <tt>rcu_dynticks_snap()</tt> and
144<tt>rcu_dynticks_in_eqs_since()</tt> (both of which invoke
145an <tt>atomic_add_return()</tt> of zero) to detect idle CPUs.
146
147<table>
148<tr><th>&nbsp;</th></tr>
149<tr><th align="left">Quick Quiz:</th></tr>
150<tr><td>
151 But what about CPUs that remain offline for the entire
152 grace period?
153</td></tr>
154<tr><th align="left">Answer:</th></tr>
155<tr><td bgcolor="#ffffff"><font color="ffffff">
156 Such CPUs will be offline at the beginning of the grace period,
157 so the grace period won't expect quiescent states from them.
158 Races between grace-period start and CPU-hotplug operations
159 are mediated by the CPU's leaf <tt>rcu_node</tt> structure's
160 <tt>-&gt;lock</tt> as described above.
161</font></td></tr>
162<tr><td>&nbsp;</td></tr>
163</table>
164
165<p>The approach must be extended to handle one final case, that
166of waking a task blocked in <tt>synchronize_rcu()</tt>.
167This task might be affinitied to a CPU that is not yet aware that
168the grace period has ended, and thus might not yet be subject to
169the grace period's memory ordering.
170Therefore, there is an <tt>smp_mb()</tt> after the return from
171<tt>wait_for_completion()</tt> in the <tt>synchronize_rcu()</tt>
172code path.
173
174<table>
175<tr><th>&nbsp;</th></tr>
176<tr><th align="left">Quick Quiz:</th></tr>
177<tr><td>
178 What? Where???
179 I don't see any <tt>smp_mb()</tt> after the return from
180 <tt>wait_for_completion()</tt>!!!
181</td></tr>
182<tr><th align="left">Answer:</th></tr>
183<tr><td bgcolor="#ffffff"><font color="ffffff">
184 That would be because I spotted the need for that
185 <tt>smp_mb()</tt> during the creation of this documentation,
186 and it is therefore unlikely to hit mainline before v4.14.
187 Kudos to Lance Roy, Will Deacon, Peter Zijlstra, and
188 Jonathan Cameron for asking questions that sensitized me
189 to the rather elaborate sequence of events that demonstrate
190 the need for this memory barrier.
191</font></td></tr>
192<tr><td>&nbsp;</td></tr>
193</table>
194
195<p>Tree RCU's grace--period memory-ordering guarantees rely most
196heavily on the <tt>rcu_node</tt> structure's <tt>-&gt;lock</tt>
197field, so much so that it is necessary to abbreviate this pattern
198in the diagrams in the next section.
199For example, consider the <tt>rcu_prepare_for_idle()</tt> function
200shown below, which is one of several functions that enforce ordering
201of newly arrived RCU callbacks against future grace periods:
202
203<pre>
204 1 static void rcu_prepare_for_idle(void)
205 2 {
206 3 bool needwake;
207 4 struct rcu_data *rdp;
208 5 struct rcu_dynticks *rdtp = this_cpu_ptr(&amp;rcu_dynticks);
209 6 struct rcu_node *rnp;
210 7 struct rcu_state *rsp;
211 8 int tne;
212 9
21310 if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) ||
21411 rcu_is_nocb_cpu(smp_processor_id()))
21512 return;
21613 tne = READ_ONCE(tick_nohz_active);
21714 if (tne != rdtp-&gt;tick_nohz_enabled_snap) {
21815 if (rcu_cpu_has_callbacks(NULL))
21916 invoke_rcu_core();
22017 rdtp-&gt;tick_nohz_enabled_snap = tne;
22118 return;
22219 }
22320 if (!tne)
22421 return;
22522 if (rdtp-&gt;all_lazy &amp;&amp;
22623 rdtp-&gt;nonlazy_posted != rdtp-&gt;nonlazy_posted_snap) {
22724 rdtp-&gt;all_lazy = false;
22825 rdtp-&gt;nonlazy_posted_snap = rdtp-&gt;nonlazy_posted;
22926 invoke_rcu_core();
23027 return;
23128 }
23229 if (rdtp-&gt;last_accelerate == jiffies)
23330 return;
23431 rdtp-&gt;last_accelerate = jiffies;
23532 for_each_rcu_flavor(rsp) {
23633 rdp = this_cpu_ptr(rsp-&gt;rda);
23734 if (rcu_segcblist_pend_cbs(&amp;rdp-&gt;cblist))
23835 continue;
23936 rnp = rdp-&gt;mynode;
24037 raw_spin_lock_rcu_node(rnp);
24138 needwake = rcu_accelerate_cbs(rsp, rnp, rdp);
24239 raw_spin_unlock_rcu_node(rnp);
24340 if (needwake)
24441 rcu_gp_kthread_wake(rsp);
24542 }
24643 }
247</pre>
248
249<p>But the only part of <tt>rcu_prepare_for_idle()</tt> that really
250matters for this discussion are lines&nbsp;37&ndash;39.
251We will therefore abbreviate this function as follows:
252
253</p><p><img src="rcu_node-lock.svg" alt="rcu_node-lock.svg">
254
255<p>The box represents the <tt>rcu_node</tt> structure's <tt>-&gt;lock</tt>
256critical section, with the double line on top representing the additional
257<tt>smp_mb__after_unlock_lock()</tt>.
258
259<h3><a name="Tree RCU Grace Period Memory Ordering Components">
260Tree RCU Grace Period Memory Ordering Components</a></h3>
261
262<p>Tree RCU's grace-period memory-ordering guarantee is provided by
263a number of RCU components:
264
265<ol>
266<li> <a href="#Callback Registry">Callback Registry</a>
267<li> <a href="#Grace-Period Initialization">Grace-Period Initialization</a>
268<li> <a href="#Self-Reported Quiescent States">
269 Self-Reported Quiescent States</a>
270<li> <a href="#Dynamic Tick Interface">Dynamic Tick Interface</a>
271<li> <a href="#CPU-Hotplug Interface">CPU-Hotplug Interface</a>
272<li> <a href="Forcing Quiescent States">Forcing Quiescent States</a>
273<li> <a href="Grace-Period Cleanup">Grace-Period Cleanup</a>
274<li> <a href="Callback Invocation">Callback Invocation</a>
275</ol>
276
277<p>Each of the following section looks at the corresponding component
278in detail.
279
280<h4><a name="Callback Registry">Callback Registry</a></h4>
281
282<p>If RCU's grace-period guarantee is to mean anything at all, any
283access that happens before a given invocation of <tt>call_rcu()</tt>
284must also happen before the corresponding grace period.
285The implementation of this portion of RCU's grace period guarantee
286is shown in the following figure:
287
288</p><p><img src="TreeRCU-callback-registry.svg" alt="TreeRCU-callback-registry.svg">
289
290<p>Because <tt>call_rcu()</tt> normally acts only on CPU-local state,
291it provides no ordering guarantees, either for itself or for
292phase one of the update (which again will usually be removal of
293an element from an RCU-protected data structure).
294It simply enqueues the <tt>rcu_head</tt> structure on a per-CPU list,
295which cannot become associated with a grace period until a later
296call to <tt>rcu_accelerate_cbs()</tt>, as shown in the diagram above.
297
298<p>One set of code paths shown on the left invokes
299<tt>rcu_accelerate_cbs()</tt> via
300<tt>note_gp_changes()</tt>, either directly from <tt>call_rcu()</tt> (if
301the current CPU is inundated with queued <tt>rcu_head</tt> structures)
302or more likely from an <tt>RCU_SOFTIRQ</tt> handler.
303Another code path in the middle is taken only in kernels built with
304<tt>CONFIG_RCU_FAST_NO_HZ=y</tt>, which invokes
305<tt>rcu_accelerate_cbs()</tt> via <tt>rcu_prepare_for_idle()</tt>.
306The final code path on the right is taken only in kernels built with
307<tt>CONFIG_HOTPLUG_CPU=y</tt>, which invokes
308<tt>rcu_accelerate_cbs()</tt> via
309<tt>rcu_advance_cbs()</tt>, <tt>rcu_migrate_callbacks</tt>,
310<tt>rcutree_migrate_callbacks()</tt>, and <tt>takedown_cpu()</tt>,
311which in turn is invoked on a surviving CPU after the outgoing
312CPU has been completely offlined.
313
314<p>There are a few other code paths within grace-period processing
315that opportunistically invoke <tt>rcu_accelerate_cbs()</tt>.
316However, either way, all of the CPU's recently queued <tt>rcu_head</tt>
317structures are associated with a future grace-period number under
318the protection of the CPU's lead <tt>rcu_node</tt> structure's
319<tt>-&gt;lock</tt>.
320In all cases, there is full ordering against any prior critical section
321for that same <tt>rcu_node</tt> structure's <tt>-&gt;lock</tt>, and
322also full ordering against any of the current task's or CPU's prior critical
323sections for any <tt>rcu_node</tt> structure's <tt>-&gt;lock</tt>.
324
325<p>The next section will show how this ordering ensures that any
326accesses prior to the <tt>call_rcu()</tt> (particularly including phase
327one of the update)
328happen before the start of the corresponding grace period.
329
330<table>
331<tr><th>&nbsp;</th></tr>
332<tr><th align="left">Quick Quiz:</th></tr>
333<tr><td>
334 But what about <tt>synchronize_rcu()</tt>?
335</td></tr>
336<tr><th align="left">Answer:</th></tr>
337<tr><td bgcolor="#ffffff"><font color="ffffff">
338 The <tt>synchronize_rcu()</tt> passes <tt>call_rcu()</tt>
339 to <tt>wait_rcu_gp()</tt>, which invokes it.
340 So either way, it eventually comes down to <tt>call_rcu()</tt>.
341</font></td></tr>
342<tr><td>&nbsp;</td></tr>
343</table>
344
345<h4><a name="Grace-Period Initialization">Grace-Period Initialization</a></h4>
346
347<p>Grace-period initialization is carried out by
348the grace-period kernel thread, which makes several passes over the
349<tt>rcu_node</tt> tree within the <tt>rcu_gp_init()</tt> function.
350This means that showing the full flow of ordering through the
351grace-period computation will require duplicating this tree.
352If you find this confusing, please note that the state of the
353<tt>rcu_node</tt> changes over time, just like Heraclitus's river.
354However, to keep the <tt>rcu_node</tt> river tractable, the
355grace-period kernel thread's traversals are presented in multiple
356parts, starting in this section with the various phases of
357grace-period initialization.
358
359<p>The first ordering-related grace-period initialization action is to
360increment the <tt>rcu_state</tt> structure's <tt>-&gt;gpnum</tt>
361grace-period-number counter, as shown below:
362
363</p><p><img src="TreeRCU-gp-init-1.svg" alt="TreeRCU-gp-init-1.svg" width="75%">
364
365<p>The actual increment is carried out using <tt>smp_store_release()</tt>,
366which helps reject false-positive RCU CPU stall detection.
367Note that only the root <tt>rcu_node</tt> structure is touched.
368
369<p>The first pass through the <tt>rcu_node</tt> tree updates bitmasks
370based on CPUs having come online or gone offline since the start of
371the previous grace period.
372In the common case where the number of online CPUs for this <tt>rcu_node</tt>
373structure has not transitioned to or from zero,
374this pass will scan only the leaf <tt>rcu_node</tt> structures.
375However, if the number of online CPUs for a given leaf <tt>rcu_node</tt>
376structure has transitioned from zero,
377<tt>rcu_init_new_rnp()</tt> will be invoked for the first incoming CPU.
378Similarly, if the number of online CPUs for a given leaf <tt>rcu_node</tt>
379structure has transitioned to zero,
380<tt>rcu_cleanup_dead_rnp()</tt> will be invoked for the last outgoing CPU.
381The diagram below shows the path of ordering if the leftmost
382<tt>rcu_node</tt> structure onlines its first CPU and if the next
383<tt>rcu_node</tt> structure has no online CPUs
384(or, alternatively if the leftmost <tt>rcu_node</tt> structure offlines
385its last CPU and if the next <tt>rcu_node</tt> structure has no online CPUs).
386
387</p><p><img src="TreeRCU-gp-init-2.svg" alt="TreeRCU-gp-init-1.svg" width="75%">
388
389<p>The final <tt>rcu_gp_init()</tt> pass through the <tt>rcu_node</tt>
390tree traverses breadth-first, setting each <tt>rcu_node</tt> structure's
391<tt>-&gt;gpnum</tt> field to the newly incremented value from the
392<tt>rcu_state</tt> structure, as shown in the following diagram.
393
394</p><p><img src="TreeRCU-gp-init-3.svg" alt="TreeRCU-gp-init-1.svg" width="75%">
395
396<p>This change will also cause each CPU's next call to
397<tt>__note_gp_changes()</tt>
398to notice that a new grace period has started, as described in the next
399section.
400But because the grace-period kthread started the grace period at the
401root (with the increment of the <tt>rcu_state</tt> structure's
402<tt>-&gt;gpnum</tt> field) before setting each leaf <tt>rcu_node</tt>
403structure's <tt>-&gt;gpnum</tt> field, each CPU's observation of
404the start of the grace period will happen after the actual start
405of the grace period.
406
407<table>
408<tr><th>&nbsp;</th></tr>
409<tr><th align="left">Quick Quiz:</th></tr>
410<tr><td>
411 But what about the CPU that started the grace period?
412 Why wouldn't it see the start of the grace period right when
413 it started that grace period?
414</td></tr>
415<tr><th align="left">Answer:</th></tr>
416<tr><td bgcolor="#ffffff"><font color="ffffff">
417 In some deep philosophical and overly anthromorphized
418 sense, yes, the CPU starting the grace period is immediately
419 aware of having done so.
420 However, if we instead assume that RCU is not self-aware,
421 then even the CPU starting the grace period does not really
422 become aware of the start of this grace period until its
423 first call to <tt>__note_gp_changes()</tt>.
424 On the other hand, this CPU potentially gets early notification
425 because it invokes <tt>__note_gp_changes()</tt> during its
426 last <tt>rcu_gp_init()</tt> pass through its leaf
427 <tt>rcu_node</tt> structure.
428</font></td></tr>
429<tr><td>&nbsp;</td></tr>
430</table>
431
432<h4><a name="Self-Reported Quiescent States">
433Self-Reported Quiescent States</a></h4>
434
435<p>When all entities that might block the grace period have reported
436quiescent states (or as described in a later section, had quiescent
437states reported on their behalf), the grace period can end.
438Online non-idle CPUs report their own quiescent states, as shown
439in the following diagram:
440
441</p><p><img src="TreeRCU-qs.svg" alt="TreeRCU-qs.svg" width="75%">
442
443<p>This is for the last CPU to report a quiescent state, which signals
444the end of the grace period.
445Earlier quiescent states would push up the <tt>rcu_node</tt> tree
446only until they encountered an <tt>rcu_node</tt> structure that
447is waiting for additional quiescent states.
448However, ordering is nevertheless preserved because some later quiescent
449state will acquire that <tt>rcu_node</tt> structure's <tt>-&gt;lock</tt>.
450
451<p>Any number of events can lead up to a CPU invoking
452<tt>note_gp_changes</tt> (or alternatively, directly invoking
453<tt>__note_gp_changes()</tt>), at which point that CPU will notice
454the start of a new grace period while holding its leaf
455<tt>rcu_node</tt> lock.
456Therefore, all execution shown in this diagram happens after the
457start of the grace period.
458In addition, this CPU will consider any RCU read-side critical
459section that started before the invocation of <tt>__note_gp_changes()</tt>
460to have started before the grace period, and thus a critical
461section that the grace period must wait on.
462
463<table>
464<tr><th>&nbsp;</th></tr>
465<tr><th align="left">Quick Quiz:</th></tr>
466<tr><td>
467 But a RCU read-side critical section might have started
468 after the beginning of the grace period
469 (the <tt>-&gt;gpnum++</tt> from earlier), so why should
470 the grace period wait on such a critical section?
471</td></tr>
472<tr><th align="left">Answer:</th></tr>
473<tr><td bgcolor="#ffffff"><font color="ffffff">
474 It is indeed not necessary for the grace period to wait on such
475 a critical section.
476 However, it is permissible to wait on it.
477 And it is furthermore important to wait on it, as this
478 lazy approach is far more scalable than a &ldquo;big bang&rdquo;
479 all-at-once grace-period start could possibly be.
480</font></td></tr>
481<tr><td>&nbsp;</td></tr>
482</table>
483
484<p>If the CPU does a context switch, a quiescent state will be
485noted by <tt>rcu_node_context_switch()</tt> on the left.
486On the other hand, if the CPU takes a scheduler-clock interrupt
487while executing in usermode, a quiescent state will be noted by
488<tt>rcu_check_callbacks()</tt> on the right.
489Either way, the passage through a quiescent state will be noted
490in a per-CPU variable.
491
492<p>The next time an <tt>RCU_SOFTIRQ</tt> handler executes on
493this CPU (for example, after the next scheduler-clock
494interrupt), <tt>__rcu_process_callbacks()</tt> will invoke
495<tt>rcu_check_quiescent_state()</tt>, which will notice the
496recorded quiescent state, and invoke
497<tt>rcu_report_qs_rdp()</tt>.
498If <tt>rcu_report_qs_rdp()</tt> verifies that the quiescent state
499really does apply to the current grace period, it invokes
500<tt>rcu_report_rnp()</tt> which traverses up the <tt>rcu_node</tt>
501tree as shown at the bottom of the diagram, clearing bits from
502each <tt>rcu_node</tt> structure's <tt>-&gt;qsmask</tt> field,
503and propagating up the tree when the result is zero.
504
505<p>Note that traversal passes upwards out of a given <tt>rcu_node</tt>
506structure only if the current CPU is reporting the last quiescent
507state for the subtree headed by that <tt>rcu_node</tt> structure.
508A key point is that if a CPU's traversal stops at a given <tt>rcu_node</tt>
509structure, then there will be a later traversal by another CPU
510(or perhaps the same one) that proceeds upwards
511from that point, and the <tt>rcu_node</tt> <tt>-&gt;lock</tt>
512guarantees that the first CPU's quiescent state happens before the
513remainder of the second CPU's traversal.
514Applying this line of thought repeatedly shows that all CPUs'
515quiescent states happen before the last CPU traverses through
516the root <tt>rcu_node</tt> structure, the &ldquo;last CPU&rdquo;
517being the one that clears the last bit in the root <tt>rcu_node</tt>
518structure's <tt>-&gt;qsmask</tt> field.
519
520<h4><a name="Dynamic Tick Interface">Dynamic Tick Interface</a></h4>
521
522<p>Due to energy-efficiency considerations, RCU is forbidden from
523disturbing idle CPUs.
524CPUs are therefore required to notify RCU when entering or leaving idle
525state, which they do via fully ordered value-returning atomic operations
526on a per-CPU variable.
527The ordering effects are as shown below:
528
529</p><p><img src="TreeRCU-dyntick.svg" alt="TreeRCU-dyntick.svg" width="50%">
530
531<p>The RCU grace-period kernel thread samples the per-CPU idleness
532variable while holding the corresponding CPU's leaf <tt>rcu_node</tt>
533structure's <tt>-&gt;lock</tt>.
534This means that any RCU read-side critical sections that precede the
535idle period (the oval near the top of the diagram above) will happen
536before the end of the current grace period.
537Similarly, the beginning of the current grace period will happen before
538any RCU read-side critical sections that follow the
539idle period (the oval near the bottom of the diagram above).
540
541<p>Plumbing this into the full grace-period execution is described
542<a href="#Forcing Quiescent States">below</a>.
543
544<h4><a name="CPU-Hotplug Interface">CPU-Hotplug Interface</a></h4>
545
546<p>RCU is also forbidden from disturbing offline CPUs, which might well
547be powered off and removed from the system completely.
548CPUs are therefore required to notify RCU of their comings and goings
549as part of the corresponding CPU hotplug operations.
550The ordering effects are shown below:
551
552</p><p><img src="TreeRCU-hotplug.svg" alt="TreeRCU-hotplug.svg" width="50%">
553
554<p>Because CPU hotplug operations are much less frequent than idle transitions,
555they are heavier weight, and thus acquire the CPU's leaf <tt>rcu_node</tt>
556structure's <tt>-&gt;lock</tt> and update this structure's
557<tt>-&gt;qsmaskinitnext</tt>.
558The RCU grace-period kernel thread samples this mask to detect CPUs
559having gone offline since the beginning of this grace period.
560
561<p>Plumbing this into the full grace-period execution is described
562<a href="#Forcing Quiescent States">below</a>.
563
564<h4><a name="Forcing Quiescent States">Forcing Quiescent States</a></h4>
565
566<p>As noted above, idle and offline CPUs cannot report their own
567quiescent states, and therefore the grace-period kernel thread
568must do the reporting on their behalf.
569This process is called &ldquo;forcing quiescent states&rdquo;, it is
570repeated every few jiffies, and its ordering effects are shown below:
571
572</p><p><img src="TreeRCU-gp-fqs.svg" alt="TreeRCU-gp-fqs.svg" width="100%">
573
574<p>Each pass of quiescent state forcing is guaranteed to traverse the
575leaf <tt>rcu_node</tt> structures, and if there are no new quiescent
576states due to recently idled and/or offlined CPUs, then only the
577leaves are traversed.
578However, if there is a newly offlined CPU as illustrated on the left
579or a newly idled CPU as illustrated on the right, the corresponding
580quiescent state will be driven up towards the root.
581As with self-reported quiescent states, the upwards driving stops
582once it reaches an <tt>rcu_node</tt> structure that has quiescent
583states outstanding from other CPUs.
584
585<table>
586<tr><th>&nbsp;</th></tr>
587<tr><th align="left">Quick Quiz:</th></tr>
588<tr><td>
589 The leftmost drive to root stopped before it reached
590 the root <tt>rcu_node</tt> structure, which means that
591 there are still CPUs subordinate to that structure on
592 which the current grace period is waiting.
593 Given that, how is it possible that the rightmost drive
594 to root ended the grace period?
595</td></tr>
596<tr><th align="left">Answer:</th></tr>
597<tr><td bgcolor="#ffffff"><font color="ffffff">
598 Good analysis!
599 It is in fact impossible in the absence of bugs in RCU.
600 But this diagram is complex enough as it is, so simplicity
601 overrode accuracy.
602 You can think of it as poetic license, or you can think of
603 it as misdirection that is resolved in the
604 <a href="#Putting It All Together">stitched-together diagram</a>.
605</font></td></tr>
606<tr><td>&nbsp;</td></tr>
607</table>
608
609<h4><a name="Grace-Period Cleanup">Grace-Period Cleanup</a></h4>
610
611<p>Grace-period cleanup first scans the <tt>rcu_node</tt> tree
612breadth-first setting all the <tt>-&gt;completed</tt> fields equal
613to the number of the newly completed grace period, then it sets
614the <tt>rcu_state</tt> structure's <tt>-&gt;completed</tt> field,
615again to the number of the newly completed grace period.
616The ordering effects are shown below:
617
618</p><p><img src="TreeRCU-gp-cleanup.svg" alt="TreeRCU-gp-cleanup.svg" width="75%">
619
620<p>As indicated by the oval at the bottom of the diagram, once
621grace-period cleanup is complete, the next grace period can begin.
622
623<table>
624<tr><th>&nbsp;</th></tr>
625<tr><th align="left">Quick Quiz:</th></tr>
626<tr><td>
627 But when precisely does the grace period end?
628</td></tr>
629<tr><th align="left">Answer:</th></tr>
630<tr><td bgcolor="#ffffff"><font color="ffffff">
631 There is no useful single point at which the grace period
632 can be said to end.
633 The earliest reasonable candidate is as soon as the last
634 CPU has reported its quiescent state, but it may be some
635 milliseconds before RCU becomes aware of this.
636 The latest reasonable candidate is once the <tt>rcu_state</tt>
637 structure's <tt>-&gt;completed</tt> field has been updated,
638 but it is quite possible that some CPUs have already completed
639 phase two of their updates by that time.
640 In short, if you are going to work with RCU, you need to
641 learn to embrace uncertainty.
642</font></td></tr>
643<tr><td>&nbsp;</td></tr>
644</table>
645
646
647<h4><a name="Callback Invocation">Callback Invocation</a></h4>
648
649<p>Once a given CPU's leaf <tt>rcu_node</tt> structure's
650<tt>-&gt;completed</tt> field has been updated, that CPU can begin
651invoking its RCU callbacks that were waiting for this grace period
652to end.
653These callbacks are identified by <tt>rcu_advance_cbs()</tt>,
654which is usually invoked by <tt>__note_gp_changes()</tt>.
655As shown in the diagram below, this invocation can be triggered by
656the scheduling-clock interrupt (<tt>rcu_check_callbacks()</tt> on
657the left) or by idle entry (<tt>rcu_cleanup_after_idle()</tt> on
658the right, but only for kernels build with
659<tt>CONFIG_RCU_FAST_NO_HZ=y</tt>).
660Either way, <tt>RCU_SOFTIRQ</tt> is raised, which results in
661<tt>rcu_do_batch()</tt> invoking the callbacks, which in turn
662allows those callbacks to carry out (either directly or indirectly
663via wakeup) the needed phase-two processing for each update.
664
665</p><p><img src="TreeRCU-callback-invocation.svg" alt="TreeRCU-callback-invocation.svg" width="60%">
666
667<p>Please note that callback invocation can also be prompted by any
668number of corner-case code paths, for example, when a CPU notes that
669it has excessive numbers of callbacks queued.
670In all cases, the CPU acquires its leaf <tt>rcu_node</tt> structure's
671<tt>-&gt;lock</tt> before invoking callbacks, which preserves the
672required ordering against the newly completed grace period.
673
674<p>However, if the callback function communicates to other CPUs,
675for example, doing a wakeup, then it is that function's responsibility
676to maintain ordering.
677For example, if the callback function wakes up a task that runs on
678some other CPU, proper ordering must in place in both the callback
679function and the task being awakened.
680To see why this is important, consider the top half of the
681<a href="#Grace-Period Cleanup">grace-period cleanup</a> diagram.
682The callback might be running on a CPU corresponding to the leftmost
683leaf <tt>rcu_node</tt> structure, and awaken a task that is to run on
684a CPU corresponding to the rightmost leaf <tt>rcu_node</tt> structure,
685and the grace-period kernel thread might not yet have reached the
686rightmost leaf.
687In this case, the grace period's memory ordering might not yet have
688reached that CPU, so again the callback function and the awakened
689task must supply proper ordering.
690
691<h3><a name="Putting It All Together">Putting It All Together</a></h3>
692
693<p>A stitched-together diagram is
694<a href="Tree-RCU-Diagram.html">here</a>.
695
696<h3><a name="Legal Statement">
697Legal Statement</a></h3>
698
699<p>This work represents the view of the author and does not necessarily
700represent the view of IBM.
701
702</p><p>Linux is a registered trademark of Linus Torvalds.
703
704</p><p>Other company, product, and service names may be trademarks or
705service marks of others.
706
707</body></html>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg
new file mode 100644
index 000000000000..832408313d93
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg
@@ -0,0 +1,486 @@
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:35:03 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="592.12805"
17 height="469.83038"
18 viewBox="-44 -44 7874.1949 6244.9802"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-callback-invocation.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 </defs>
178 <sodipodi:namedview
179 pagecolor="#ffffff"
180 bordercolor="#666666"
181 borderopacity="1"
182 objecttolerance="10"
183 gridtolerance="10"
184 guidetolerance="10"
185 inkscape:pageopacity="0"
186 inkscape:pageshadow="2"
187 inkscape:window-width="1087"
188 inkscape:window-height="1144"
189 id="namedview208"
190 showgrid="true"
191 inkscape:zoom="1.2009216"
192 inkscape:cx="289.88715"
193 inkscape:cy="219.06265"
194 inkscape:window-x="713"
195 inkscape:window-y="28"
196 inkscape:window-maximized="0"
197 inkscape:current-layer="g3058"
198 fit-margin-top="5"
199 fit-margin-right="5"
200 fit-margin-left="5"
201 fit-margin-bottom="5">
202 <inkscape:grid
203 type="xygrid"
204 id="grid3079"
205 empspacing="5"
206 visible="true"
207 enabled="true"
208 snapvisiblegridlinesonly="true"
209 originx="-116.00011px"
210 originy="-87.2081px" />
211 </sodipodi:namedview>
212 <g
213 style="fill:none;stroke-width:0.025in"
214 id="g4"
215 transform="translate(-2296.0293,-2364.1166)">
216 <path
217 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
218 d="m 6161.6776,2411.7612 0,4920.3076"
219 id="path3134-9-0-3"
220 inkscape:connector-curvature="0"
221 sodipodi:nodetypes="cc" />
222 <path
223 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
224 d="m 6161.6776,4672.443 -2393.6631,0.5116 0,1196.8316 2393.6631,-0.5116"
225 id="path3134-9-0"
226 inkscape:connector-curvature="0"
227 sodipodi:nodetypes="cccc" />
228 <path
229 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
230 d="m 6161.6776,4672.443 2393.6631,0.5116 0,1196.8316 -2393.6631,-0.5116"
231 id="path3134-9-0-7"
232 inkscape:connector-curvature="0"
233 sodipodi:nodetypes="cccc" />
234 <!-- Line: box -->
235 <!-- Line: box -->
236 <!-- Line: box -->
237 <!-- Line -->
238 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
239 <!-- Line -->
240 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
241 <!-- Line -->
242 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
243 <!-- Line -->
244 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
245 <!-- Line: box -->
246 <!-- Line: box -->
247 <!-- Line -->
248 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
249 <!-- Line -->
250 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
251 <!-- Line -->
252 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
253 <!-- Line -->
254 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
255 <!-- Line -->
256 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
257 <!-- Line -->
258 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
259 <!-- Line -->
260 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
261 <!-- Line -->
262 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
263 <!-- Line -->
264 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
265 <!-- Circle -->
266 <!-- Circle -->
267 <!-- Circle -->
268 <!-- Circle -->
269 <!-- Circle -->
270 <!-- Circle -->
271 <!-- Circle -->
272 <!-- Circle -->
273 <!-- Circle -->
274 <!-- Line: box -->
275 <!-- Line: box -->
276 <!-- Line: box -->
277 <!-- Line: box -->
278 <!-- Line: box -->
279 <!-- Line: box -->
280 <!-- Line: box -->
281 <!-- Line: box -->
282 <!-- Line: box -->
283 <!-- Line: box -->
284 <!-- Line -->
285 <!-- Line -->
286 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150-->
287 <!-- Line: box -->
288 <!-- Line -->
289 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410-->
290 <!-- Line: box -->
291 <!-- Line -->
292 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910-->
293 <!-- Line: box -->
294 <!-- Line -->
295 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650-->
296 <!-- Line -->
297 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150-->
298 <!-- Text -->
299 <!-- Text -->
300 <!-- Text -->
301 <!-- Text -->
302 <!-- Text -->
303 <!-- Text -->
304 <!-- Text -->
305 <!-- Text -->
306 <!-- Text -->
307 <!-- Text -->
308 <!-- Text -->
309 <!-- Text -->
310 <!-- Text -->
311 <!-- Text -->
312 <!-- Text -->
313 <!-- Text -->
314 <!-- Text -->
315 <!-- Text -->
316 <!-- Text -->
317 <!-- Text -->
318 <!-- Text -->
319 <!-- Text -->
320 <!-- Text -->
321 <!-- Text -->
322 <!-- Text -->
323 <!-- Text -->
324 <!-- Line -->
325 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
326 <!-- Line: box -->
327 <!-- Line: box -->
328 <!-- Line: box -->
329 <!-- Line: box -->
330 <!-- Text -->
331 <!-- Text -->
332 <!-- Text -->
333 <!-- Text -->
334 <!-- Text -->
335 <rect
336 x="2333.5203"
337 y="5109.5566"
338 width="2844.0974"
339 height="360.77411"
340 rx="0"
341 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.0005789, 60.00115781;stroke-dashoffset:0"
342 id="rect118-3"
343 ry="0" />
344 <text
345 xml:space="preserve"
346 x="2562.135"
347 y="5357.9937"
348 font-style="normal"
349 font-weight="bold"
350 font-size="192"
351 id="text202-7-5"
352 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_check_callbacks()</text>
353 <rect
354 x="7069.6187"
355 y="5087.4678"
356 width="2975.115"
357 height="382.86298"
358 rx="0"
359 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057902, 60.00115804;stroke-dashoffset:0"
360 id="rect118-36"
361 ry="0" />
362 <text
363 xml:space="preserve"
364 x="7165.2524"
365 y="5333.4927"
366 font-style="normal"
367 font-weight="bold"
368 font-size="192"
369 id="text202-7-9-6"
370 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_cleanup_after_idle()</text>
371 <g
372 id="g3058"
373 transform="translate(-53.192514,-2819.2063)">
374 <text
375 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier"
376 id="text202"
377 font-size="192"
378 font-weight="bold"
379 font-style="normal"
380 y="6532.0293"
381 x="5073.3374"
382 xml:space="preserve">rcu_advance_cbs()</text>
383 <rect
384 id="rect112"
385 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
386 rx="0"
387 height="1370.8721"
388 width="2809.1992"
389 y="5650.2598"
390 x="4800.2563" />
391 <rect
392 id="rect112-3"
393 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
394 rx="0"
395 height="1294.8468"
396 width="2809.1992"
397 y="5726.2852"
398 x="4800.2563" />
399 <text
400 sodipodi:linespacing="125%"
401 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
402 id="text202-7-5-1-2-3-7"
403 font-size="192"
404 font-weight="bold"
405 font-style="normal"
406 y="6961.395"
407 x="7220.106"
408 xml:space="preserve"><tspan
409 id="tspan3104-6-5"
410 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
411 <text
412 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
413 id="text202-3"
414 font-size="192"
415 font-weight="bold"
416 font-style="normal"
417 y="6321.9248"
418 x="5073.3374"
419 xml:space="preserve">__note_gp_changes()</text>
420 </g>
421 <g
422 id="g3049"
423 transform="translate(26.596257,6090.5512)">
424 <path
425 transform="matrix(13.298129,0,0,13.298129,1872.6808,-2726.4833)"
426 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
427 sodipodi:ry="39.550262"
428 sodipodi:rx="65.917107"
429 sodipodi:cy="345.54001"
430 sodipodi:cx="319.379"
431 id="path3084-3"
432 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
433 sodipodi:type="arc" />
434 <text
435 sodipodi:linespacing="125%"
436 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
437 id="text202-7-5-1-2-6"
438 font-size="192"
439 font-weight="bold"
440 font-style="normal"
441 y="1785.2073"
442 x="5717.4517"
443 xml:space="preserve"><tspan
444 id="tspan3104-7"
445 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Phase Two</tspan></text>
446 <text
447 sodipodi:linespacing="125%"
448 id="text3110-5"
449 y="2005.6624"
450 x="6119.668"
451 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
452 xml:space="preserve"><tspan
453 y="2005.6624"
454 x="6119.668"
455 id="tspan3112-3"
456 sodipodi:role="line">of Update</tspan></text>
457 </g>
458 <rect
459 x="5097.8271"
460 y="6268.2183"
461 width="1994.7195"
462 height="664.90662"
463 rx="0"
464 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057858, 60.00115716;stroke-dashoffset:0"
465 id="rect118-36-3"
466 ry="0" />
467 <text
468 xml:space="preserve"
469 x="5363.7886"
470 y="6534.1812"
471 font-style="normal"
472 font-weight="bold"
473 font-size="192"
474 id="text202-7-9-6-6"
475 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">RCU_SOFTIRQ</text>
476 <text
477 xml:space="preserve"
478 x="5363.7886"
479 y="6800.1436"
480 font-style="normal"
481 font-weight="bold"
482 font-size="192"
483 id="text202-7-9-6-6-7"
484 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_do_batch()</text>
485 </g>
486</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg
new file mode 100644
index 000000000000..7ac6f9269806
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg
@@ -0,0 +1,655 @@
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:35:03 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="816.04761"
17 height="636.55627"
18 viewBox="-44 -44 10851.906 8461.0989"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-callback-registry.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 </defs>
178 <sodipodi:namedview
179 pagecolor="#ffffff"
180 bordercolor="#666666"
181 borderopacity="1"
182 objecttolerance="10"
183 gridtolerance="10"
184 guidetolerance="10"
185 inkscape:pageopacity="0"
186 inkscape:pageshadow="2"
187 inkscape:window-width="1087"
188 inkscape:window-height="1144"
189 id="namedview208"
190 showgrid="true"
191 inkscape:zoom="1.2009216"
192 inkscape:cx="408.02381"
193 inkscape:cy="254.38856"
194 inkscape:window-x="713"
195 inkscape:window-y="28"
196 inkscape:window-maximized="0"
197 inkscape:current-layer="g4"
198 fit-margin-top="5"
199 fit-margin-right="5"
200 fit-margin-left="5"
201 fit-margin-bottom="5">
202 <inkscape:grid
203 type="xygrid"
204 id="grid3079"
205 empspacing="5"
206 visible="true"
207 enabled="true"
208 snapvisiblegridlinesonly="true"
209 originx="5.2596966e-08px"
210 originy="-4.5963961e-06px" />
211 </sodipodi:namedview>
212 <g
213 style="fill:none;stroke-width:0.025in"
214 id="g4"
215 transform="translate(-753.44492,-1306.6788)">
216 <path
217 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
218 d="m 6161.6776,2411.7612 0,6117.1391"
219 id="path3134-9-0-3"
220 inkscape:connector-curvature="0"
221 sodipodi:nodetypes="cc" />
222 <path
223 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
224 d="m 6161.6776,3342.6302 -3856.4573,0 10.6979,5757.1962 2918.1436,-2e-4"
225 id="path3134-9-0"
226 inkscape:connector-curvature="0"
227 sodipodi:nodetypes="cccc" />
228 <path
229 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
230 d="m 6161.6776,3342.6302 3856.4574,0 -12.188,5757.1963 -2918.1436,-3e-4"
231 id="path3134-9-0-7"
232 inkscape:connector-curvature="0"
233 sodipodi:nodetypes="cccc" />
234 <!-- Line: box -->
235 <!-- Line: box -->
236 <!-- Line: box -->
237 <!-- Line -->
238 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
239 <!-- Line -->
240 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
241 <!-- Line -->
242 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
243 <!-- Line -->
244 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
245 <!-- Line: box -->
246 <!-- Line: box -->
247 <!-- Line -->
248 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
249 <!-- Line -->
250 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
251 <!-- Line -->
252 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
253 <!-- Line -->
254 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
255 <!-- Line -->
256 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
257 <!-- Line -->
258 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
259 <!-- Line -->
260 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
261 <!-- Line -->
262 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
263 <!-- Line -->
264 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
265 <!-- Circle -->
266 <!-- Circle -->
267 <!-- Circle -->
268 <!-- Circle -->
269 <!-- Circle -->
270 <!-- Circle -->
271 <!-- Circle -->
272 <!-- Circle -->
273 <!-- Circle -->
274 <!-- Line: box -->
275 <!-- Line: box -->
276 <!-- Line: box -->
277 <!-- Line: box -->
278 <!-- Line: box -->
279 <!-- Line: box -->
280 <!-- Line: box -->
281 <!-- Line: box -->
282 <!-- Line: box -->
283 <!-- Line: box -->
284 <!-- Line -->
285 <!-- Line -->
286 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150-->
287 <!-- Line: box -->
288 <!-- Line -->
289 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410-->
290 <!-- Line: box -->
291 <!-- Line -->
292 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910-->
293 <!-- Line: box -->
294 <!-- Line -->
295 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650-->
296 <!-- Line -->
297 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150-->
298 <!-- Text -->
299 <!-- Text -->
300 <!-- Text -->
301 <!-- Text -->
302 <!-- Text -->
303 <!-- Text -->
304 <!-- Text -->
305 <!-- Text -->
306 <!-- Text -->
307 <!-- Text -->
308 <!-- Text -->
309 <!-- Text -->
310 <!-- Text -->
311 <!-- Text -->
312 <!-- Text -->
313 <!-- Text -->
314 <!-- Text -->
315 <!-- Text -->
316 <!-- Text -->
317 <!-- Text -->
318 <!-- Text -->
319 <!-- Text -->
320 <!-- Text -->
321 <!-- Text -->
322 <!-- Text -->
323 <!-- Text -->
324 <!-- Line -->
325 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
326 <!-- Line: box -->
327 <!-- Line: box -->
328 <!-- Line: box -->
329 <!-- Line: box -->
330 <!-- Text -->
331 <!-- Text -->
332 <!-- Text -->
333 <!-- Text -->
334 <!-- Text -->
335 <rect
336 x="4544.7305"
337 y="4603.417"
338 width="3240.0088"
339 height="2650.6289"
340 rx="0"
341 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
342 id="rect118"
343 ry="0" />
344 <text
345 xml:space="preserve"
346 x="5073.3374"
347 y="6372.4521"
348 font-style="normal"
349 font-weight="bold"
350 font-size="192"
351 id="text202"
352 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rcu_accelerate_cbs()</text>
353 <g
354 id="g3107"
355 transform="translate(2715.7065,4700.8888)">
356 <rect
357 id="rect112"
358 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
359 rx="0"
360 height="1370.8721"
361 width="2809.1992"
362 y="949.37109"
363 x="2084.55" />
364 <rect
365 id="rect112-3"
366 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
367 rx="0"
368 height="1294.8468"
369 width="2809.1992"
370 y="1025.3964"
371 x="2084.55" />
372 </g>
373 <text
374 xml:space="preserve"
375 x="4773.3452"
376 y="4825.2578"
377 font-style="normal"
378 font-weight="bold"
379 font-size="192"
380 id="text202-7"
381 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_prepare_for_idle()</text>
382 <rect
383 x="790.93585"
384 y="4630.8252"
385 width="3240.0088"
386 height="2650.6289"
387 rx="0"
388 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.0005789, 60.00115781;stroke-dashoffset:0"
389 id="rect118-3"
390 ry="0" />
391 <text
392 xml:space="preserve"
393 x="1319.5447"
394 y="6639.2261"
395 font-style="normal"
396 font-weight="bold"
397 font-size="192"
398 id="text202-6"
399 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_accelerate_cbs()</text>
400 <g
401 style="fill:none;stroke-width:0.025in"
402 id="g3107-7"
403 transform="translate(-1038.0776,4728.2971)">
404 <rect
405 id="rect112-5"
406 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
407 rx="0"
408 height="1370.8721"
409 width="2809.1992"
410 y="949.37109"
411 x="2084.55" />
412 <rect
413 id="rect112-3-3"
414 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
415 rx="0"
416 height="1294.8468"
417 width="2809.1992"
418 y="1025.3964"
419 x="2084.55" />
420 </g>
421 <text
422 xml:space="preserve"
423 x="1019.5512"
424 y="4852.666"
425 font-style="normal"
426 font-weight="bold"
427 font-size="192"
428 id="text202-7-5"
429 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">note_gp_changes()</text>
430 <text
431 xml:space="preserve"
432 x="1319.5447"
433 y="6376.6328"
434 font-style="normal"
435 font-weight="bold"
436 font-size="192"
437 id="text202-6-6"
438 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_advance_cbs()</text>
439 <text
440 xml:space="preserve"
441 x="1340.6649"
442 y="6111.4473"
443 font-style="normal"
444 font-weight="bold"
445 font-size="192"
446 id="text202-6-6-2"
447 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">__note_gp_changes()</text>
448 <rect
449 x="5422.6279"
450 y="3041.8311"
451 width="1480.4871"
452 height="379.24637"
453 rx="0"
454 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.0005789, 60.00115794;stroke-dashoffset:0"
455 id="rect118-3-9"
456 ry="0" />
457 <text
458 xml:space="preserve"
459 x="5607.2734"
460 y="3283.3892"
461 font-style="normal"
462 font-weight="bold"
463 font-size="192"
464 id="text202-7-5-1"
465 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">call_rcu()</text>
466 <path
467 sodipodi:type="arc"
468 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
469 id="path3084"
470 sodipodi:cx="319.379"
471 sodipodi:cy="345.54001"
472 sodipodi:rx="65.917107"
473 sodipodi:ry="39.550262"
474 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
475 transform="matrix(13.298129,0,0,13.298129,1915.7286,4523.6528)" />
476 <text
477 xml:space="preserve"
478 x="5853.9238"
479 y="8902.3623"
480 font-style="normal"
481 font-weight="bold"
482 font-size="192"
483 id="text202-7-5-1-2"
484 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
485 sodipodi:linespacing="125%"><tspan
486 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
487 id="tspan3104">Wake up</tspan></text>
488 <text
489 xml:space="preserve"
490 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
491 x="6165.7158"
492 y="9122.8174"
493 id="text3110"
494 sodipodi:linespacing="125%"><tspan
495 sodipodi:role="line"
496 id="tspan3112"
497 x="6165.7158"
498 y="9122.8174">grace-period</tspan></text>
499 <text
500 xml:space="preserve"
501 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
502 x="6162.8716"
503 y="9364.3564"
504 id="text3114"
505 sodipodi:linespacing="125%"><tspan
506 sodipodi:role="line"
507 id="tspan3116"
508 x="6162.8716"
509 y="9364.3564">kernel thread</tspan></text>
510 <rect
511 x="8239.8516"
512 y="4608.7363"
513 width="3240.0088"
514 height="2650.6289"
515 rx="0"
516 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057902, 60.00115804;stroke-dashoffset:0"
517 id="rect118-36"
518 ry="0" />
519 <text
520 xml:space="preserve"
521 x="8768.4678"
522 y="6484.1562"
523 font-style="normal"
524 font-weight="bold"
525 font-size="192"
526 id="text202-75"
527 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_accelerate_cbs()</text>
528 <g
529 style="fill:none;stroke-width:0.025in"
530 id="g3107-3"
531 transform="translate(6410.833,4706.2127)">
532 <rect
533 id="rect112-56"
534 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
535 rx="0"
536 height="1370.8721"
537 width="2809.1992"
538 y="949.37109"
539 x="2084.55" />
540 <rect
541 id="rect112-3-2"
542 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
543 rx="0"
544 height="1294.8468"
545 width="2809.1992"
546 y="1025.3964"
547 x="2084.55" />
548 </g>
549 <text
550 xml:space="preserve"
551 x="8329.5352"
552 y="4830.5771"
553 font-style="normal"
554 font-weight="bold"
555 font-size="192"
556 id="text202-7-9"
557 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">takedown_cpu()</text>
558 <text
559 xml:space="preserve"
560 x="8335.4873"
561 y="5094.127"
562 font-style="normal"
563 font-weight="bold"
564 font-size="192"
565 id="text202-7-9-6"
566 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcutree_migrate_callbacks()</text>
567 <text
568 xml:space="preserve"
569 x="8335.4873"
570 y="5357.1006"
571 font-style="normal"
572 font-weight="bold"
573 font-size="192"
574 id="text202-7-9-6-0"
575 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_migrate_callbacks()</text>
576 <text
577 xml:space="preserve"
578 x="8768.4678"
579 y="6224.9038"
580 font-style="normal"
581 font-weight="bold"
582 font-size="192"
583 id="text202-6-6-6"
584 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_advance_cbs()</text>
585 <text
586 xml:space="preserve"
587 x="3467.9963"
588 y="6987.9912"
589 font-style="normal"
590 font-weight="bold"
591 font-size="192"
592 id="text202-7-5-1-2-3"
593 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
594 sodipodi:linespacing="125%"><tspan
595 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
596 id="tspan3104-6">Leaf</tspan></text>
597 <text
598 xml:space="preserve"
599 x="7220.106"
600 y="6961.395"
601 font-style="normal"
602 font-weight="bold"
603 font-size="192"
604 id="text202-7-5-1-2-3-7"
605 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
606 sodipodi:linespacing="125%"><tspan
607 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
608 id="tspan3104-6-5">Leaf</tspan></text>
609 <text
610 xml:space="preserve"
611 x="10905.331"
612 y="6961.395"
613 font-style="normal"
614 font-weight="bold"
615 font-size="192"
616 id="text202-7-5-1-2-3-7-3"
617 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
618 sodipodi:linespacing="125%"><tspan
619 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
620 id="tspan3104-6-5-5">Leaf</tspan></text>
621 <path
622 sodipodi:type="arc"
623 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
624 id="path3084-3"
625 sodipodi:cx="319.379"
626 sodipodi:cy="345.54001"
627 sodipodi:rx="65.917107"
628 sodipodi:ry="39.550262"
629 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
630 transform="matrix(13.298129,0,0,13.298129,1872.6808,-2726.4833)" />
631 <text
632 xml:space="preserve"
633 x="5717.4517"
634 y="1785.2073"
635 font-style="normal"
636 font-weight="bold"
637 font-size="192"
638 id="text202-7-5-1-2-6"
639 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
640 sodipodi:linespacing="125%"><tspan
641 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
642 id="tspan3104-7">Phase One</tspan></text>
643 <text
644 xml:space="preserve"
645 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
646 x="6119.668"
647 y="2005.6624"
648 id="text3110-5"
649 sodipodi:linespacing="125%"><tspan
650 sodipodi:role="line"
651 id="tspan3112-3"
652 x="6119.668"
653 y="2005.6624">of Update</tspan></text>
654 </g>
655</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg
new file mode 100644
index 000000000000..423df00c4df9
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg
@@ -0,0 +1,700 @@
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:35:03 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="670.61804"
17 height="557.16394"
18 viewBox="-44 -44 8917.9652 7405.8166"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-dyntick.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow1Send"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow1Send-36"
253 style="overflow:visible">
254 <path
255 id="path3940-0"
256 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
257 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
258 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow1Send"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="Arrow1Send-6"
267 style="overflow:visible">
268 <path
269 id="path3940-26"
270 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
271 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
272 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow1Send"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="Arrow1Send-8"
281 style="overflow:visible">
282 <path
283 id="path3940-7"
284 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
285 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
286 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 <marker
290 inkscape:stockid="Arrow1Send"
291 orient="auto"
292 refY="0"
293 refX="0"
294 id="Arrow1Send-367"
295 style="overflow:visible">
296 <path
297 id="path3940-5"
298 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
299 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
300 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
301 inkscape:connector-curvature="0" />
302 </marker>
303 <marker
304 inkscape:stockid="Arrow2Lend"
305 orient="auto"
306 refY="0"
307 refX="0"
308 id="Arrow2Lend-56"
309 style="overflow:visible">
310 <path
311 id="path3946-2"
312 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
315 inkscape:connector-curvature="0" />
316 </marker>
317 <marker
318 inkscape:stockid="Arrow2Lend"
319 orient="auto"
320 refY="0"
321 refX="0"
322 id="marker3081"
323 style="overflow:visible">
324 <path
325 id="path3083"
326 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
329 inkscape:connector-curvature="0" />
330 </marker>
331 <marker
332 inkscape:stockid="Arrow2Lend"
333 orient="auto"
334 refY="0"
335 refX="0"
336 id="marker3085"
337 style="overflow:visible">
338 <path
339 id="path3087"
340 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
341 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
342 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
343 inkscape:connector-curvature="0" />
344 </marker>
345 <marker
346 inkscape:stockid="Arrow2Lend"
347 orient="auto"
348 refY="0"
349 refX="0"
350 id="marker3089"
351 style="overflow:visible">
352 <path
353 id="path3091"
354 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
355 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
356 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
357 inkscape:connector-curvature="0" />
358 </marker>
359 <marker
360 inkscape:stockid="Arrow2Lend"
361 orient="auto"
362 refY="0"
363 refX="0"
364 id="marker3093"
365 style="overflow:visible">
366 <path
367 id="path3095"
368 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
369 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
370 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
371 inkscape:connector-curvature="0" />
372 </marker>
373 <marker
374 inkscape:stockid="Arrow2Lend"
375 orient="auto"
376 refY="0"
377 refX="0"
378 id="marker3097"
379 style="overflow:visible">
380 <path
381 id="path3099"
382 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
383 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
384 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
385 inkscape:connector-curvature="0" />
386 </marker>
387 <marker
388 inkscape:stockid="Arrow1Send"
389 orient="auto"
390 refY="0"
391 refX="0"
392 id="Arrow1Send-9"
393 style="overflow:visible">
394 <path
395 id="path3940-1"
396 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
397 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
398 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
399 inkscape:connector-curvature="0" />
400 </marker>
401 <marker
402 inkscape:stockid="Arrow1Send"
403 orient="auto"
404 refY="0"
405 refX="0"
406 id="Arrow1Send-3675"
407 style="overflow:visible">
408 <path
409 id="path3940-3"
410 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
411 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
412 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
413 inkscape:connector-curvature="0" />
414 </marker>
415 </defs>
416 <sodipodi:namedview
417 pagecolor="#ffffff"
418 bordercolor="#666666"
419 borderopacity="1"
420 objecttolerance="10"
421 gridtolerance="10"
422 guidetolerance="10"
423 inkscape:pageopacity="0"
424 inkscape:pageshadow="2"
425 inkscape:window-width="1087"
426 inkscape:window-height="1148"
427 id="namedview208"
428 showgrid="true"
429 inkscape:zoom="1.4142136"
430 inkscape:cx="381.32663"
431 inkscape:cy="239.67141"
432 inkscape:window-x="833"
433 inkscape:window-y="24"
434 inkscape:window-maximized="0"
435 inkscape:current-layer="svg2"
436 fit-margin-top="5"
437 fit-margin-right="5"
438 fit-margin-left="5"
439 fit-margin-bottom="5"
440 inkscape:snap-global="false">
441 <inkscape:grid
442 type="xygrid"
443 id="grid3154"
444 empspacing="5"
445 visible="true"
446 enabled="true"
447 snapvisiblegridlinesonly="true"
448 originx="-235.14935px"
449 originy="-709.25071px" />
450 </sodipodi:namedview>
451 <path
452 sodipodi:nodetypes="cc"
453 inkscape:connector-curvature="0"
454 id="path3134-9-0-3-1-3-5"
455 d="m 3754.1051,47.378296 -2.828,7173.860804"
456 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
457 <path
458 sodipodi:nodetypes="ccc"
459 inkscape:connector-curvature="0"
460 id="path3134-9-0-3-1-3"
461 d="m 6681.1176,1435.1734 -2.828,1578.9586 -2861.3912,7.7159"
462 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
463 <path
464 sodipodi:nodetypes="ccc"
465 inkscape:connector-curvature="0"
466 id="path3134-9-0-3-1"
467 d="m 3748.8929,3772.1176 2904.1747,-0.8434 26.8008,1842.1825"
468 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
469 <g
470 id="g3115"
471 transform="translate(-2341.8794,10827.399)">
472 <rect
473 ry="0"
474 id="rect118-3"
475 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057923, 60.00115859;stroke-dashoffset:0"
476 rx="0"
477 height="2349.7295"
478 width="5308.7119"
479 y="-8909.5498"
480 x="2379.3704" />
481 <g
482 transform="translate(2576.8841,-9085.2783)"
483 id="g3107-7"
484 style="fill:none;stroke-width:0.025in">
485 <rect
486 x="2084.55"
487 y="949.37109"
488 width="2809.1992"
489 height="1370.8721"
490 rx="0"
491 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
492 id="rect112-5" />
493 <rect
494 x="2084.55"
495 y="1025.3964"
496 width="2809.1992"
497 height="1294.8468"
498 rx="0"
499 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
500 id="rect112-3-3" />
501 </g>
502 <text
503 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
504 id="text202-6-6-2"
505 font-size="192"
506 font-weight="bold"
507 font-style="normal"
508 y="-7356.375"
509 x="4769.4536"
510 xml:space="preserve">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
511 <text
512 sodipodi:linespacing="125%"
513 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
514 id="text202-7-5-1-2-3"
515 font-size="192"
516 font-weight="bold"
517 font-style="normal"
518 y="-6825.5815"
519 x="7082.9585"
520 xml:space="preserve"><tspan
521 id="tspan3104-6"
522 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
523 <text
524 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
525 id="text202-7-2-7-7"
526 font-size="192"
527 font-weight="bold"
528 font-style="normal"
529 y="-8652.5312"
530 x="2466.7822"
531 xml:space="preserve">dyntick_save_progress_counter()</text>
532 <text
533 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
534 id="text202-7-2-7-2-0"
535 font-size="192"
536 font-weight="bold"
537 font-style="normal"
538 y="-8368.1475"
539 x="2463.3262"
540 xml:space="preserve">rcu_implicit_dynticks_qs()</text>
541 </g>
542 <g
543 id="g4504"
544 transform="translate(2063.5184,-16111.739)">
545 <path
546 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
547 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
548 sodipodi:ry="39.550262"
549 sodipodi:rx="65.917107"
550 sodipodi:cy="345.54001"
551 sodipodi:cx="319.379"
552 id="path3084"
553 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
554 sodipodi:type="arc" />
555 <text
556 sodipodi:linespacing="125%"
557 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
558 id="text202-7-5-1-2"
559 font-size="192"
560 font-weight="bold"
561 font-style="normal"
562 y="16835.086"
563 x="4409.043"
564 xml:space="preserve"><tspan
565 id="tspan3104"
566 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
567 <text
568 sodipodi:linespacing="125%"
569 id="text3110"
570 y="17055.541"
571 x="4579.373"
572 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
573 xml:space="preserve"><tspan
574 y="17055.541"
575 x="4579.373"
576 id="tspan3112"
577 sodipodi:role="line">read-side</tspan></text>
578 <text
579 sodipodi:linespacing="125%"
580 id="text3114"
581 y="17297.08"
582 x="4584.8276"
583 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
584 xml:space="preserve"><tspan
585 y="17297.08"
586 x="4584.8276"
587 id="tspan3116"
588 sodipodi:role="line">critical section</tspan></text>
589 </g>
590 <g
591 id="g3148-9-9"
592 transform="translate(2035.3087,6370.5796)">
593 <rect
594 x="3592.3828"
595 y="-4715.7246"
596 width="3164.783"
597 height="769.99048"
598 rx="0"
599 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
600 id="rect118-3-5-1-3"
601 ry="0" />
602 <text
603 xml:space="preserve"
604 x="3745.7725"
605 y="-4418.6582"
606 font-style="normal"
607 font-weight="bold"
608 font-size="192"
609 id="text202-7-5-3-27-6"
610 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_enter()</text>
611 <text
612 xml:space="preserve"
613 x="3745.7725"
614 y="-4165.7954"
615 font-style="normal"
616 font-weight="bold"
617 font-size="192"
618 id="text202-7-5-3-27-0-0"
619 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
620 </g>
621 <g
622 id="g3148-9-9-2"
623 transform="translate(2035.3089,9031.6839)">
624 <rect
625 x="3592.3828"
626 y="-4715.7246"
627 width="3164.783"
628 height="769.99048"
629 rx="0"
630 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
631 id="rect118-3-5-1-3-6"
632 ry="0" />
633 <text
634 xml:space="preserve"
635 x="3745.7725"
636 y="-4418.6582"
637 font-style="normal"
638 font-weight="bold"
639 font-size="192"
640 id="text202-7-5-3-27-6-1"
641 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_exit()</text>
642 <text
643 xml:space="preserve"
644 x="3745.7725"
645 y="-4165.7954"
646 font-style="normal"
647 font-weight="bold"
648 font-size="192"
649 id="text202-7-5-3-27-0-0-8"
650 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
651 </g>
652 <g
653 id="g4504-7"
654 transform="translate(2082.3248,-10883.562)">
655 <path
656 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
657 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
658 sodipodi:ry="39.550262"
659 sodipodi:rx="65.917107"
660 sodipodi:cy="345.54001"
661 sodipodi:cx="319.379"
662 id="path3084-9"
663 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
664 sodipodi:type="arc" />
665 <text
666 sodipodi:linespacing="125%"
667 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
668 id="text202-7-5-1-2-2"
669 font-size="192"
670 font-weight="bold"
671 font-style="normal"
672 y="16835.086"
673 x="4409.043"
674 xml:space="preserve"><tspan
675 id="tspan3104-0"
676 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
677 <text
678 sodipodi:linespacing="125%"
679 id="text3110-2"
680 y="17055.541"
681 x="4579.373"
682 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
683 xml:space="preserve"><tspan
684 y="17055.541"
685 x="4579.373"
686 id="tspan3112-3"
687 sodipodi:role="line">read-side</tspan></text>
688 <text
689 sodipodi:linespacing="125%"
690 id="text3114-7"
691 y="17297.08"
692 x="4584.8276"
693 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
694 xml:space="preserve"><tspan
695 y="17297.08"
696 x="4584.8276"
697 id="tspan3116-5"
698 sodipodi:role="line">critical section</tspan></text>
699 </g>
700</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg
new file mode 100644
index 000000000000..754f426b297a
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg
@@ -0,0 +1,1126 @@
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:35:03 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="1026.1281"
17 height="1246.2428"
18 viewBox="-44 -44 13645.583 16565.045"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp-cleanup.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow2Lend"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow2Lend-1"
253 style="overflow:visible">
254 <path
255 id="path3946-2"
256 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
257 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
258 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow2Lend"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="marker3130"
267 style="overflow:visible">
268 <path
269 id="path3132"
270 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
271 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
272 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow2Lend"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="marker3134"
281 style="overflow:visible">
282 <path
283 id="path3136"
284 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
285 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
286 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 <marker
290 inkscape:stockid="Arrow2Lend"
291 orient="auto"
292 refY="0"
293 refX="0"
294 id="marker3138"
295 style="overflow:visible">
296 <path
297 id="path3140"
298 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
299 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
300 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
301 inkscape:connector-curvature="0" />
302 </marker>
303 <marker
304 inkscape:stockid="Arrow2Lend"
305 orient="auto"
306 refY="0"
307 refX="0"
308 id="marker3142"
309 style="overflow:visible">
310 <path
311 id="path3144"
312 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
315 inkscape:connector-curvature="0" />
316 </marker>
317 <marker
318 inkscape:stockid="Arrow2Lend"
319 orient="auto"
320 refY="0"
321 refX="0"
322 id="marker3146"
323 style="overflow:visible">
324 <path
325 id="path3148"
326 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
329 inkscape:connector-curvature="0" />
330 </marker>
331 <marker
332 inkscape:stockid="Arrow1Send"
333 orient="auto"
334 refY="0"
335 refX="0"
336 id="Arrow1Send-7"
337 style="overflow:visible">
338 <path
339 id="path3940-0"
340 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
341 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
342 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
343 inkscape:connector-curvature="0" />
344 </marker>
345 <marker
346 inkscape:stockid="Arrow1Send"
347 orient="auto"
348 refY="0"
349 refX="0"
350 id="Arrow1Send-36"
351 style="overflow:visible">
352 <path
353 id="path3940-7"
354 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
355 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
356 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
357 inkscape:connector-curvature="0" />
358 </marker>
359 <marker
360 inkscape:stockid="Arrow1Send"
361 orient="auto"
362 refY="0"
363 refX="0"
364 id="Arrow1Send-36-7"
365 style="overflow:visible">
366 <path
367 id="path3940-7-4"
368 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
369 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
370 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
371 inkscape:connector-curvature="0" />
372 </marker>
373 </defs>
374 <sodipodi:namedview
375 pagecolor="#ffffff"
376 bordercolor="#666666"
377 borderopacity="1"
378 objecttolerance="10"
379 gridtolerance="10"
380 guidetolerance="10"
381 inkscape:pageopacity="0"
382 inkscape:pageshadow="2"
383 inkscape:window-width="1087"
384 inkscape:window-height="1144"
385 id="namedview208"
386 showgrid="true"
387 inkscape:zoom="0.70710678"
388 inkscape:cx="617.89017"
389 inkscape:cy="542.52419"
390 inkscape:window-x="86"
391 inkscape:window-y="28"
392 inkscape:window-maximized="0"
393 inkscape:current-layer="g3188-3"
394 fit-margin-top="5"
395 fit-margin-right="5"
396 fit-margin-left="5"
397 fit-margin-bottom="5">
398 <inkscape:grid
399 type="xygrid"
400 id="grid3391"
401 empspacing="5"
402 visible="true"
403 enabled="true"
404 snapvisiblegridlinesonly="true"
405 originx="-1.7575793e-05px"
406 originy="70.717956px" />
407 </sodipodi:namedview>
408 <path
409 sodipodi:nodetypes="cccccccccccccccccccccccc"
410 inkscape:connector-curvature="0"
411 id="path3134-9-0-3"
412 d="m 6899.303,45.238347 -2.8276,2480.757053 -2316.0141,-1.687 -2.8276,2179.855 2321.1758,-0.844 -2.7042,-1843.237 2404.5142,-0.211 16.1022,1993.267 -7783.8345,-4.728 -16.7936,2120.3945 2033.1033,-23.5344 2.0128,-1866.5611 2051.9097,14.079 2.0128,1838.2983 1280.8475,-4.728 14.608,-1830.1043 1312.2492,12.923 14.608,1818.337 2000.0061,20.4217 -12.279,-1841.4117 1304.168,1.616 -12.279,2032.7057 -4638.6513,1.6154 19.5828,569.0378"
413 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
414 <g
415 style="fill:none;stroke-width:0.025in"
416 transform="translate(2450.4073,-11647.612)"
417 id="g3188">
418 <text
419 xml:space="preserve"
420 x="3199.1516"
421 y="13255.592"
422 font-style="normal"
423 font-weight="bold"
424 font-size="192"
425 id="text202"
426 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
427 <g
428 id="g3107"
429 transform="translate(947.90548,11584.029)">
430 <rect
431 id="rect112"
432 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
433 rx="0"
434 height="1370.8721"
435 width="2809.1992"
436 y="949.37109"
437 x="2084.55" />
438 <rect
439 id="rect112-3"
440 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
441 rx="0"
442 height="1294.8468"
443 width="2809.1992"
444 y="1025.3964"
445 x="2084.55" />
446 </g>
447 <text
448 xml:space="preserve"
449 x="5452.3052"
450 y="13844.535"
451 font-style="normal"
452 font-weight="bold"
453 font-size="192"
454 id="text202-7-5-1-2-3-7"
455 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
456 sodipodi:linespacing="125%"><tspan
457 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
458 id="tspan3104-6-5">Root</tspan></text>
459 </g>
460 <rect
461 ry="0"
462 id="rect118"
463 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
464 rx="0"
465 height="14649.609"
466 width="13482.601"
467 y="403.13776"
468 x="37.490932" />
469 <text
470 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
471 id="text202-7"
472 font-size="192"
473 font-weight="bold"
474 font-style="normal"
475 y="662.59283"
476 x="153.2673"
477 xml:space="preserve">rcu_gp_cleanup()</text>
478 <g
479 style="fill:none;stroke-width:0.025in"
480 transform="translate(2329.9437,-11611.245)"
481 id="g3147">
482 <g
483 style="fill:none;stroke-width:0.025in"
484 id="g3107-6"
485 transform="translate(3054.6101,13760.052)">
486 <rect
487 id="rect112-7"
488 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
489 rx="0"
490 height="1370.8721"
491 width="2809.1992"
492 y="949.37109"
493 x="2084.55" />
494 <rect
495 id="rect112-3-5"
496 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
497 rx="0"
498 height="1294.8468"
499 width="2809.1992"
500 y="1025.3964"
501 x="2084.55" />
502 </g>
503 <text
504 xml:space="preserve"
505 x="5324.5371"
506 y="15414.598"
507 font-style="normal"
508 font-weight="bold"
509 font-size="192"
510 id="text202-753"
511 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
512 </g>
513 <g
514 style="fill:none;stroke-width:0.025in"
515 transform="translate(3181.0244,-11647.612)"
516 id="g3153">
517 <g
518 style="fill:none;stroke-width:0.025in"
519 id="g3107-6-9"
520 transform="translate(5213.0126,16008.808)">
521 <rect
522 id="rect112-7-1"
523 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
524 rx="0"
525 height="1370.8721"
526 width="2809.1992"
527 y="949.37109"
528 x="2084.55" />
529 <rect
530 id="rect112-3-5-2"
531 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
532 rx="0"
533 height="1294.8468"
534 width="2809.1992"
535 y="1025.3964"
536 x="2084.55" />
537 </g>
538 <text
539 xml:space="preserve"
540 x="9717.4141"
541 y="18269.314"
542 font-style="normal"
543 font-weight="bold"
544 font-size="192"
545 id="text202-7-5-1-2-3-7-35-7"
546 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
547 sodipodi:linespacing="125%"><tspan
548 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
549 id="tspan3104-6-5-6-0">Leaf</tspan></text>
550 <text
551 xml:space="preserve"
552 x="7479.5796"
553 y="17699.943"
554 font-style="normal"
555 font-weight="bold"
556 font-size="192"
557 id="text202-9"
558 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
559 <path
560 sodipodi:nodetypes="cc"
561 inkscape:connector-curvature="0"
562 id="path3134-9-0-3-9"
563 d="m 3710.957,19425.516 -20.9546,8604.655"
564 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
565 <g
566 style="fill:none;stroke-width:0.025in"
567 transform="translate(-737.93887,7732.6672)"
568 id="g3188-3">
569 <text
570 xml:space="preserve"
571 x="3225.7478"
572 y="13175.802"
573 font-style="normal"
574 font-weight="bold"
575 font-size="192"
576 id="text202-60"
577 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;completed =</text>
578 <g
579 id="g3107-62"
580 transform="translate(947.90548,11584.029)">
581 <rect
582 id="rect112-6"
583 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
584 rx="0"
585 height="1370.8721"
586 width="2809.1992"
587 y="949.37109"
588 x="2084.55" />
589 <rect
590 id="rect112-3-1"
591 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
592 rx="0"
593 height="1294.8468"
594 width="2809.1992"
595 y="1025.3964"
596 x="2084.55" />
597 </g>
598 <text
599 xml:space="preserve"
600 x="5452.3052"
601 y="13844.535"
602 font-style="normal"
603 font-weight="bold"
604 font-size="192"
605 id="text202-7-5-1-2-3-7-8"
606 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
607 sodipodi:linespacing="125%"><tspan
608 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
609 id="tspan3104-6-5-7">Root</tspan></text>
610 <text
611 xml:space="preserve"
612 x="3225.7478"
613 y="13390.038"
614 font-style="normal"
615 font-weight="bold"
616 font-size="192"
617 id="text202-60-3"
618 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"> rnp-&gt;completed</text>
619 <flowRoot
620 xml:space="preserve"
621 id="flowRoot3356"
622 style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
623 transform="matrix(13.298129,0,0,13.298129,-2487.0857,3868.8376)"><flowRegion
624 id="flowRegion3358"><rect
625 id="rect3360"
626 width="373.35239"
627 height="63.63961"
628 x="332.34018"
629 y="681.87292" /></flowRegion><flowPara
630 id="flowPara3362" /></flowRoot> </g>
631 <g
632 style="fill:none;stroke-width:0.025in"
633 transform="translate(-858.40227,7769.0342)"
634 id="g3147-9">
635 <g
636 style="fill:none;stroke-width:0.025in"
637 id="g3107-6-2"
638 transform="translate(3054.6101,13760.052)">
639 <rect
640 id="rect112-7-02"
641 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
642 rx="0"
643 height="1370.8721"
644 width="2809.1992"
645 y="949.37109"
646 x="2084.55" />
647 <rect
648 id="rect112-3-5-3"
649 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
650 rx="0"
651 height="1294.8468"
652 width="2809.1992"
653 y="1025.3964"
654 x="2084.55" />
655 </g>
656 </g>
657 <g
658 style="fill:none;stroke-width:0.025in"
659 id="g3107-6-9-5"
660 transform="translate(5205.6909,23741.476)">
661 <rect
662 id="rect112-7-1-9"
663 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
664 rx="0"
665 height="1370.8721"
666 width="2809.1992"
667 y="949.37109"
668 x="2084.55" />
669 <rect
670 id="rect112-3-5-2-2"
671 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
672 rx="0"
673 height="1294.8468"
674 width="2809.1992"
675 y="1025.3964"
676 x="2084.55" />
677 </g>
678 <text
679 xml:space="preserve"
680 x="9710.0928"
681 y="26001.982"
682 font-style="normal"
683 font-weight="bold"
684 font-size="192"
685 id="text202-7-5-1-2-3-7-35-7-2"
686 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
687 sodipodi:linespacing="125%"><tspan
688 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
689 id="tspan3104-6-5-6-0-8">Leaf</tspan></text>
690 <g
691 transform="translate(-4830.8839,7769.0342)"
692 id="g3147-3-7"
693 style="fill:none;stroke-width:0.025in">
694 <g
695 style="fill:none;stroke-width:0.025in"
696 id="g3107-6-6-3"
697 transform="translate(3054.6101,13760.052)">
698 <rect
699 id="rect112-7-0-6"
700 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
701 rx="0"
702 height="1370.8721"
703 width="2809.1992"
704 y="949.37109"
705 x="2084.55" />
706 <rect
707 id="rect112-3-5-6-1"
708 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
709 rx="0"
710 height="1294.8468"
711 width="2809.1992"
712 y="1025.3964"
713 x="2084.55" />
714 </g>
715 </g>
716 <g
717 transform="translate(-3340.0639,7732.6672)"
718 id="g3153-2-9"
719 style="fill:none;stroke-width:0.025in">
720 <g
721 style="fill:none;stroke-width:0.025in"
722 id="g3107-6-9-6-3"
723 transform="translate(5213.0126,16008.808)">
724 <rect
725 id="rect112-7-1-1-1"
726 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
727 rx="0"
728 height="1370.8721"
729 width="2809.1992"
730 y="949.37109"
731 x="2084.55" />
732 <rect
733 id="rect112-3-5-2-8-9"
734 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
735 rx="0"
736 height="1294.8468"
737 width="2809.1992"
738 y="1025.3964"
739 x="2084.55" />
740 </g>
741 <text
742 xml:space="preserve"
743 x="9717.4141"
744 y="18269.314"
745 font-style="normal"
746 font-weight="bold"
747 font-size="192"
748 id="text202-7-5-1-2-3-7-35-7-7-4"
749 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
750 sodipodi:linespacing="125%"><tspan
751 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
752 id="tspan3104-6-5-6-0-9-7">Leaf</tspan></text>
753 </g>
754 <g
755 transform="translate(-6672.8049,7732.6672)"
756 id="g3153-20-8"
757 style="fill:none;stroke-width:0.025in">
758 <g
759 style="fill:none;stroke-width:0.025in"
760 id="g3107-6-9-2-4"
761 transform="translate(5213.0126,16008.808)">
762 <rect
763 id="rect112-7-1-3-5"
764 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
765 rx="0"
766 height="1370.8721"
767 width="2809.1992"
768 y="949.37109"
769 x="2084.55" />
770 <rect
771 id="rect112-3-5-2-7-0"
772 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
773 rx="0"
774 height="1294.8468"
775 width="2809.1992"
776 y="1025.3964"
777 x="2084.55" />
778 </g>
779 <text
780 xml:space="preserve"
781 x="9717.4141"
782 y="18269.314"
783 font-style="normal"
784 font-weight="bold"
785 font-size="192"
786 id="text202-7-5-1-2-3-7-35-7-5-3"
787 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
788 sodipodi:linespacing="125%"><tspan
789 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
790 id="tspan3104-6-5-6-0-92-6">Leaf</tspan></text>
791 </g>
792 <g
793 transform="translate(-10005.546,7732.6672)"
794 id="g3153-28-0"
795 style="fill:none;stroke-width:0.025in">
796 <g
797 style="fill:none;stroke-width:0.025in"
798 id="g3107-6-9-9-6"
799 transform="translate(5213.0126,16008.808)">
800 <rect
801 id="rect112-7-1-7-3"
802 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
803 rx="0"
804 height="1370.8721"
805 width="2809.1992"
806 y="949.37109"
807 x="2084.55" />
808 <rect
809 id="rect112-3-5-2-3-2"
810 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
811 rx="0"
812 height="1294.8468"
813 width="2809.1992"
814 y="1025.3964"
815 x="2084.55" />
816 </g>
817 <text
818 xml:space="preserve"
819 x="9717.4141"
820 y="18269.314"
821 font-style="normal"
822 font-weight="bold"
823 font-size="192"
824 id="text202-7-5-1-2-3-7-35-7-6-0"
825 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
826 sodipodi:linespacing="125%"><tspan
827 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
828 id="tspan3104-6-5-6-0-1-6">Leaf</tspan></text>
829 </g>
830 <path
831 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
832 d="m 2285.411,21615.005 -582.9982,865.094"
833 id="path3414-5"
834 inkscape:connector-curvature="0" />
835 <path
836 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
837 d="m 5094.193,21615.267 582.998,865.094"
838 id="path3414-9-5"
839 inkscape:connector-curvature="0" />
840 <path
841 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
842 d="m 334.77783,23828.182 -582.9982,865.094"
843 id="path3414-8-4"
844 inkscape:connector-curvature="0" />
845 <path
846 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
847 d="m 7079.8249,23828.444 582.9999,865.094"
848 id="path3414-9-4-7"
849 inkscape:connector-curvature="0" />
850 <path
851 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
852 d="m 1751.2742,23828.182 0,846.288"
853 id="path3414-8-3-65"
854 inkscape:connector-curvature="0"
855 sodipodi:nodetypes="cc" />
856 <path
857 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
858 d="m 5628.2495,23854.778 0,846.288"
859 id="path3414-8-3-6-6"
860 inkscape:connector-curvature="0"
861 sodipodi:nodetypes="cc" />
862 </g>
863 <g
864 transform="translate(-1642.5377,-11611.245)"
865 id="g3147-3"
866 style="fill:none;stroke-width:0.025in">
867 <g
868 style="fill:none;stroke-width:0.025in"
869 id="g3107-6-6"
870 transform="translate(3054.6101,13760.052)">
871 <rect
872 id="rect112-7-0"
873 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
874 rx="0"
875 height="1370.8721"
876 width="2809.1992"
877 y="949.37109"
878 x="2084.55" />
879 <rect
880 id="rect112-3-5-6"
881 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
882 rx="0"
883 height="1294.8468"
884 width="2809.1992"
885 y="1025.3964"
886 x="2084.55" />
887 </g>
888 <text
889 xml:space="preserve"
890 x="5327.3057"
891 y="15428.84"
892 font-style="normal"
893 font-weight="bold"
894 font-size="192"
895 id="text202-36"
896 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
897 </g>
898 <g
899 transform="translate(-151.71746,-11647.612)"
900 id="g3153-2"
901 style="fill:none;stroke-width:0.025in">
902 <g
903 style="fill:none;stroke-width:0.025in"
904 id="g3107-6-9-6"
905 transform="translate(5213.0126,16008.808)">
906 <rect
907 id="rect112-7-1-1"
908 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
909 rx="0"
910 height="1370.8721"
911 width="2809.1992"
912 y="949.37109"
913 x="2084.55" />
914 <rect
915 id="rect112-3-5-2-8"
916 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
917 rx="0"
918 height="1294.8468"
919 width="2809.1992"
920 y="1025.3964"
921 x="2084.55" />
922 </g>
923 <text
924 xml:space="preserve"
925 x="9717.4141"
926 y="18269.314"
927 font-style="normal"
928 font-weight="bold"
929 font-size="192"
930 id="text202-7-5-1-2-3-7-35-7-7"
931 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
932 sodipodi:linespacing="125%"><tspan
933 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
934 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
935 </g>
936 <g
937 transform="translate(-3484.4587,-11647.612)"
938 id="g3153-20"
939 style="fill:none;stroke-width:0.025in">
940 <g
941 style="fill:none;stroke-width:0.025in"
942 id="g3107-6-9-2"
943 transform="translate(5213.0126,16008.808)">
944 <rect
945 id="rect112-7-1-3"
946 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
947 rx="0"
948 height="1370.8721"
949 width="2809.1992"
950 y="949.37109"
951 x="2084.55" />
952 <rect
953 id="rect112-3-5-2-7"
954 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
955 rx="0"
956 height="1294.8468"
957 width="2809.1992"
958 y="1025.3964"
959 x="2084.55" />
960 </g>
961 <text
962 xml:space="preserve"
963 x="9717.4141"
964 y="18269.314"
965 font-style="normal"
966 font-weight="bold"
967 font-size="192"
968 id="text202-7-5-1-2-3-7-35-7-5"
969 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
970 sodipodi:linespacing="125%"><tspan
971 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
972 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
973 <text
974 xml:space="preserve"
975 x="7486.4907"
976 y="17670.119"
977 font-style="normal"
978 font-weight="bold"
979 font-size="192"
980 id="text202-6"
981 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
982 </g>
983 <g
984 transform="translate(-6817.1997,-11647.612)"
985 id="g3153-28"
986 style="fill:none;stroke-width:0.025in">
987 <g
988 style="fill:none;stroke-width:0.025in"
989 id="g3107-6-9-9"
990 transform="translate(5213.0126,16008.808)">
991 <rect
992 id="rect112-7-1-7"
993 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
994 rx="0"
995 height="1370.8721"
996 width="2809.1992"
997 y="949.37109"
998 x="2084.55" />
999 <rect
1000 id="rect112-3-5-2-3"
1001 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1002 rx="0"
1003 height="1294.8468"
1004 width="2809.1992"
1005 y="1025.3964"
1006 x="2084.55" />
1007 </g>
1008 <text
1009 xml:space="preserve"
1010 x="9717.4141"
1011 y="18269.314"
1012 font-style="normal"
1013 font-weight="bold"
1014 font-size="192"
1015 id="text202-7-5-1-2-3-7-35-7-6"
1016 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1017 sodipodi:linespacing="125%"><tspan
1018 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1019 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
1020 <text
1021 xml:space="preserve"
1022 x="7474.1382"
1023 y="17688.926"
1024 font-style="normal"
1025 font-weight="bold"
1026 font-size="192"
1027 id="text202-5"
1028 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
1029 </g>
1030 <path
1031 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1032 d="m 5473.757,2234.7264 -582.9982,865.094"
1033 id="path3414"
1034 inkscape:connector-curvature="0" />
1035 <path
1036 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1037 d="m 8282.5389,2234.9884 582.9982,865.094"
1038 id="path3414-9"
1039 inkscape:connector-curvature="0" />
1040 <path
1041 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1042 d="m 3523.1239,4447.9034 -582.9982,865.094"
1043 id="path3414-8"
1044 inkscape:connector-curvature="0" />
1045 <path
1046 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1047 d="m 10268.171,4448.1654 583,865.094"
1048 id="path3414-9-4"
1049 inkscape:connector-curvature="0" />
1050 <path
1051 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1052 d="m 4939.6203,4447.9034 0,846.288"
1053 id="path3414-8-3"
1054 inkscape:connector-curvature="0"
1055 sodipodi:nodetypes="cc" />
1056 <path
1057 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1058 d="m 8816.5956,4474.4994 0,846.288"
1059 id="path3414-8-3-6"
1060 inkscape:connector-curvature="0"
1061 sodipodi:nodetypes="cc" />
1062 <text
1063 xml:space="preserve"
1064 x="7318.9653"
1065 y="6031.6353"
1066 font-style="normal"
1067 font-weight="bold"
1068 font-size="192"
1069 id="text202-2"
1070 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
1071 <g
1072 style="fill:none;stroke-width:0.025in"
1073 id="g4504-3-9"
1074 transform="translate(4866.6205,-1197.2204)">
1075 <path
1076 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1077 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1078 sodipodi:ry="39.550262"
1079 sodipodi:rx="65.917107"
1080 sodipodi:cy="345.54001"
1081 sodipodi:cx="319.379"
1082 id="path3084-6-1"
1083 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1084 sodipodi:type="arc" />
1085 <text
1086 sodipodi:linespacing="125%"
1087 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1088 id="text202-7-5-1-2-7-2"
1089 font-size="192"
1090 font-weight="bold"
1091 font-style="normal"
1092 y="16888.277"
1093 x="4344.877"
1094 xml:space="preserve"><tspan
1095 id="tspan3104-5-7"
1096 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Start of</tspan></text>
1097 <text
1098 sodipodi:linespacing="125%"
1099 id="text3110-3-0"
1100 y="17119.1"
1101 x="4578.7886"
1102 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1103 xml:space="preserve"><tspan
1104 y="17119.1"
1105 x="4578.7886"
1106 id="tspan3112-5-9"
1107 sodipodi:role="line">Next Grace</tspan></text>
1108 <text
1109 sodipodi:linespacing="125%"
1110 id="text3114-6-3"
1111 y="17350.271"
1112 x="4581.7886"
1113 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1114 xml:space="preserve"><tspan
1115 y="17350.271"
1116 x="4581.7886"
1117 id="tspan3116-2-6"
1118 sodipodi:role="line">Period</tspan></text>
1119 </g>
1120 <path
1121 sodipodi:nodetypes="cc"
1122 inkscape:connector-curvature="0"
1123 id="path3134-9-0-3-5"
1124 d="m 6875.6003,15833.906 1595.7755,0"
1125 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-36)" />
1126</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg
new file mode 100644
index 000000000000..7ddc094d7f28
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg
@@ -0,0 +1,1309 @@
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:35:03 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="1626.5847"
17 height="843.1416"
18 viewBox="-44 -44 21630.534 11207.028"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp-fqs.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow1Send"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow1Send-36"
253 style="overflow:visible">
254 <path
255 id="path3940-0"
256 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
257 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
258 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow1Send"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="Arrow1Send-6"
267 style="overflow:visible">
268 <path
269 id="path3940-26"
270 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
271 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
272 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow1Send"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="Arrow1Send-8"
281 style="overflow:visible">
282 <path
283 id="path3940-7"
284 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
285 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
286 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 <marker
290 inkscape:stockid="Arrow1Send"
291 orient="auto"
292 refY="0"
293 refX="0"
294 id="Arrow1Send-367"
295 style="overflow:visible">
296 <path
297 id="path3940-5"
298 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
299 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
300 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
301 inkscape:connector-curvature="0" />
302 </marker>
303 <marker
304 inkscape:stockid="Arrow2Lend"
305 orient="auto"
306 refY="0"
307 refX="0"
308 id="Arrow2Lend-56"
309 style="overflow:visible">
310 <path
311 id="path3946-2"
312 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
315 inkscape:connector-curvature="0" />
316 </marker>
317 <marker
318 inkscape:stockid="Arrow2Lend"
319 orient="auto"
320 refY="0"
321 refX="0"
322 id="marker3081"
323 style="overflow:visible">
324 <path
325 id="path3083"
326 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
329 inkscape:connector-curvature="0" />
330 </marker>
331 <marker
332 inkscape:stockid="Arrow2Lend"
333 orient="auto"
334 refY="0"
335 refX="0"
336 id="marker3085"
337 style="overflow:visible">
338 <path
339 id="path3087"
340 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
341 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
342 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
343 inkscape:connector-curvature="0" />
344 </marker>
345 <marker
346 inkscape:stockid="Arrow2Lend"
347 orient="auto"
348 refY="0"
349 refX="0"
350 id="marker3089"
351 style="overflow:visible">
352 <path
353 id="path3091"
354 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
355 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
356 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
357 inkscape:connector-curvature="0" />
358 </marker>
359 <marker
360 inkscape:stockid="Arrow2Lend"
361 orient="auto"
362 refY="0"
363 refX="0"
364 id="marker3093"
365 style="overflow:visible">
366 <path
367 id="path3095"
368 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
369 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
370 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
371 inkscape:connector-curvature="0" />
372 </marker>
373 <marker
374 inkscape:stockid="Arrow2Lend"
375 orient="auto"
376 refY="0"
377 refX="0"
378 id="marker3097"
379 style="overflow:visible">
380 <path
381 id="path3099"
382 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
383 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
384 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
385 inkscape:connector-curvature="0" />
386 </marker>
387 <marker
388 inkscape:stockid="Arrow1Send"
389 orient="auto"
390 refY="0"
391 refX="0"
392 id="Arrow1Send-9"
393 style="overflow:visible">
394 <path
395 id="path3940-1"
396 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
397 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
398 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
399 inkscape:connector-curvature="0" />
400 </marker>
401 <marker
402 inkscape:stockid="Arrow1Send"
403 orient="auto"
404 refY="0"
405 refX="0"
406 id="Arrow1Send-91"
407 style="overflow:visible">
408 <path
409 id="path3940-27"
410 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
411 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
412 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
413 inkscape:connector-curvature="0" />
414 </marker>
415 <marker
416 inkscape:stockid="Arrow1Send"
417 orient="auto"
418 refY="0"
419 refX="0"
420 id="marker3082"
421 style="overflow:visible">
422 <path
423 id="path3084"
424 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
425 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
426 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
427 inkscape:connector-curvature="0" />
428 </marker>
429 <marker
430 inkscape:stockid="Arrow1Send"
431 orient="auto"
432 refY="0"
433 refX="0"
434 id="Arrow1Send-09"
435 style="overflow:visible">
436 <path
437 id="path3940-3"
438 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
439 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
440 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
441 inkscape:connector-curvature="0" />
442 </marker>
443 <marker
444 inkscape:stockid="Arrow1Send"
445 orient="auto"
446 refY="0"
447 refX="0"
448 id="marker3093-6"
449 style="overflow:visible">
450 <path
451 id="path3095-0"
452 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
453 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
454 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
455 inkscape:connector-curvature="0" />
456 </marker>
457 <marker
458 inkscape:stockid="Arrow1Send"
459 orient="auto"
460 refY="0"
461 refX="0"
462 id="Arrow1Send-3675"
463 style="overflow:visible">
464 <path
465 id="path3940-35"
466 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
467 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
468 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
469 inkscape:connector-curvature="0" />
470 </marker>
471 </defs>
472 <sodipodi:namedview
473 pagecolor="#ffffff"
474 bordercolor="#666666"
475 borderopacity="1"
476 objecttolerance="10"
477 gridtolerance="10"
478 guidetolerance="10"
479 inkscape:pageopacity="0"
480 inkscape:pageshadow="2"
481 inkscape:window-width="1087"
482 inkscape:window-height="1144"
483 id="namedview208"
484 showgrid="true"
485 inkscape:zoom="0.5"
486 inkscape:cx="843.3925"
487 inkscape:cy="528.22238"
488 inkscape:window-x="860"
489 inkscape:window-y="65"
490 inkscape:window-maximized="0"
491 inkscape:current-layer="svg2"
492 fit-margin-top="5"
493 fit-margin-right="5"
494 fit-margin-left="5"
495 fit-margin-bottom="5"
496 inkscape:snap-global="false">
497 <inkscape:grid
498 type="xygrid"
499 id="grid3154"
500 empspacing="5"
501 visible="true"
502 enabled="true"
503 snapvisiblegridlinesonly="true"
504 originx="306.04964px"
505 originy="286.40704px" />
506 </sodipodi:namedview>
507 <path
508 sodipodi:nodetypes="ccc"
509 inkscape:connector-curvature="0"
510 id="path3134-9-0-3-1"
511 d="m 16000.705,7361.3625 3383.738,-0.8434 7.995,1860.9894"
512 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
513 <path
514 sodipodi:nodetypes="ccc"
515 inkscape:connector-curvature="0"
516 id="path3134-9-0-3-1-3"
517 d="m 19393.687,5043.2247 -2.828,1541.346 -3303.342,-1.6876"
518 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
519 <path
520 sodipodi:nodetypes="ccc"
521 inkscape:connector-curvature="0"
522 id="path3134-9-0-3-1-6"
523 d="m 5568.2242,7353.9621 -3929.1209,17.9634 20.2153,2632.0515"
524 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
525 <path
526 sodipodi:nodetypes="ccc"
527 inkscape:connector-curvature="0"
528 id="path3134-9-0-3-1-3-2"
529 d="m 1629.8598,3926.2473 12.2312,2669.7292 3867.5308,7.7168"
530 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
531 <path
532 sodipodi:nodetypes="cccccccccccccccccccccccccccccc"
533 inkscape:connector-curvature="0"
534 id="path3134-9-0-3"
535 d="m 10932.061,46.910528 -2.827,638.638602 -5325.0378,35.9259 -21.6339,7219.96837 2057.8863,-38.4562 -21.5106,-2087.7208 -491.6705,-0.211 -2.7042,-1993.689 1393.686,-4.728 39.6256,4057.454 2379.6691,32.779 14.608,-1848.911 1312.249,12.923 14.608,1818.337 2000.007,20.422 -12.28,-1841.412 1191.331,1.616 15.929,1289.8537 520.344,0.202 m 0,0 -15.641,-1570.1327 -2629.727,-18.604 3.166,-2124.92 -2385.245,19.007 21.973,-2444.6293 5551.053,37.8148 1.584,7165.3369 m 0,0 -5602.722,0.1016 19.583,813.521"
536 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
537 <rect
538 ry="0"
539 id="rect118"
540 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057925, 60.0011585;stroke-dashoffset:0"
541 rx="0"
542 height="8254.9336"
543 width="14128.912"
544 y="443.33136"
545 x="4032.6365" />
546 <text
547 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
548 id="text202-7"
549 font-size="192"
550 font-weight="bold"
551 font-style="normal"
552 y="720.02423"
553 x="4178.2354"
554 xml:space="preserve">rcu_gp_fqs()</text>
555 <g
556 style="fill:none;stroke-width:0.025in"
557 transform="translate(6381.5083,-10649.537)"
558 id="g3147">
559 <g
560 style="fill:none;stroke-width:0.025in"
561 id="g3107-6"
562 transform="translate(3054.6101,13760.052)">
563 <rect
564 id="rect112-7"
565 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
566 rx="0"
567 height="1370.8721"
568 width="2809.1992"
569 y="949.37109"
570 x="2084.55" />
571 <rect
572 id="rect112-3-5"
573 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
574 rx="0"
575 height="1294.8468"
576 width="2809.1992"
577 y="1025.3964"
578 x="2084.55" />
579 </g>
580 <text
581 xml:space="preserve"
582 x="5250.5327"
583 y="15512.733"
584 font-style="normal"
585 font-weight="bold"
586 font-size="192"
587 id="text202-35"
588 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
589 </g>
590 <g
591 style="fill:none;stroke-width:0.025in"
592 transform="translate(7232.589,-10685.904)"
593 id="g3153">
594 <g
595 style="fill:none;stroke-width:0.025in"
596 id="g3107-6-9"
597 transform="translate(5213.0126,16008.808)">
598 <rect
599 id="rect112-7-1"
600 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
601 rx="0"
602 height="1370.8721"
603 width="2809.1992"
604 y="949.37109"
605 x="2084.55" />
606 <rect
607 id="rect112-3-5-2"
608 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
609 rx="0"
610 height="1294.8468"
611 width="2809.1992"
612 y="1025.3964"
613 x="2084.55" />
614 </g>
615 <text
616 xml:space="preserve"
617 x="9717.4141"
618 y="18269.314"
619 font-style="normal"
620 font-weight="bold"
621 font-size="192"
622 id="text202-7-5-1-2-3-7-35-7"
623 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
624 sodipodi:linespacing="125%"><tspan
625 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
626 id="tspan3104-6-5-6-0">Leaf</tspan></text>
627 </g>
628 <g
629 transform="translate(2409.0267,-10649.537)"
630 id="g3147-3"
631 style="fill:none;stroke-width:0.025in">
632 <g
633 style="fill:none;stroke-width:0.025in"
634 id="g3107-6-6"
635 transform="translate(3054.6101,13760.052)">
636 <rect
637 id="rect112-7-0"
638 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
639 rx="0"
640 height="1370.8721"
641 width="2809.1992"
642 y="949.37109"
643 x="2084.55" />
644 <rect
645 id="rect112-3-5-6"
646 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
647 rx="0"
648 height="1294.8468"
649 width="2809.1992"
650 y="1025.3964"
651 x="2084.55" />
652 </g>
653 <text
654 xml:space="preserve"
655 x="5284.6885"
656 y="15500.379"
657 font-style="normal"
658 font-weight="bold"
659 font-size="192"
660 id="text202-6"
661 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
662 </g>
663 <g
664 transform="translate(3899.8472,-10685.904)"
665 id="g3153-2"
666 style="fill:none;stroke-width:0.025in">
667 <g
668 style="fill:none;stroke-width:0.025in"
669 id="g3107-6-9-6"
670 transform="translate(5213.0126,16008.808)">
671 <rect
672 id="rect112-7-1-1"
673 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
674 rx="0"
675 height="1370.8721"
676 width="2809.1992"
677 y="949.37109"
678 x="2084.55" />
679 <rect
680 id="rect112-3-5-2-8"
681 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
682 rx="0"
683 height="1294.8468"
684 width="2809.1992"
685 y="1025.3964"
686 x="2084.55" />
687 </g>
688 <text
689 xml:space="preserve"
690 x="9717.4141"
691 y="18269.314"
692 font-style="normal"
693 font-weight="bold"
694 font-size="192"
695 id="text202-7-5-1-2-3-7-35-7-7"
696 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
697 sodipodi:linespacing="125%"><tspan
698 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
699 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
700 </g>
701 <g
702 transform="translate(567.10542,-10685.904)"
703 id="g3153-20"
704 style="fill:none;stroke-width:0.025in">
705 <g
706 style="fill:none;stroke-width:0.025in"
707 id="g3107-6-9-2"
708 transform="translate(5213.0126,16008.808)">
709 <rect
710 id="rect112-7-1-3"
711 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
712 rx="0"
713 height="1370.8721"
714 width="2809.1992"
715 y="949.37109"
716 x="2084.55" />
717 <rect
718 id="rect112-3-5-2-7"
719 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
720 rx="0"
721 height="1294.8468"
722 width="2809.1992"
723 y="1025.3964"
724 x="2084.55" />
725 </g>
726 <text
727 xml:space="preserve"
728 x="9717.4141"
729 y="18269.314"
730 font-style="normal"
731 font-weight="bold"
732 font-size="192"
733 id="text202-7-5-1-2-3-7-35-7-5"
734 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
735 sodipodi:linespacing="125%"><tspan
736 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
737 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
738 </g>
739 <g
740 transform="translate(-2765.6353,-10685.904)"
741 id="g3153-28"
742 style="fill:none;stroke-width:0.025in">
743 <g
744 style="fill:none;stroke-width:0.025in"
745 id="g3107-6-9-9"
746 transform="translate(5213.0126,16008.808)">
747 <rect
748 id="rect112-7-1-7"
749 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
750 rx="0"
751 height="1370.8721"
752 width="2809.1992"
753 y="949.37109"
754 x="2084.55" />
755 <rect
756 id="rect112-3-5-2-3"
757 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
758 rx="0"
759 height="1294.8468"
760 width="2809.1992"
761 y="1025.3964"
762 x="2084.55" />
763 </g>
764 <text
765 xml:space="preserve"
766 x="9717.4141"
767 y="18269.314"
768 font-style="normal"
769 font-weight="bold"
770 font-size="192"
771 id="text202-7-5-1-2-3-7-35-7-6"
772 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
773 sodipodi:linespacing="125%"><tspan
774 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
775 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
776 <text
777 xml:space="preserve"
778 x="7428.2939"
779 y="17707.271"
780 font-style="normal"
781 font-weight="bold"
782 font-size="192"
783 id="text202-75"
784 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
785 </g>
786 <path
787 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
788 d="m 9525.3217,3196.4324 -582.9982,865.094"
789 id="path3414"
790 inkscape:connector-curvature="0" />
791 <path
792 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
793 d="m 12334.103,3196.6944 582.999,865.094"
794 id="path3414-9"
795 inkscape:connector-curvature="0" />
796 <path
797 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
798 d="m 7574.6885,5409.6094 -582.9983,865.094"
799 id="path3414-8"
800 inkscape:connector-curvature="0" />
801 <path
802 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
803 d="m 14319.735,5409.8714 583.001,865.094"
804 id="path3414-9-4"
805 inkscape:connector-curvature="0" />
806 <path
807 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
808 d="m 8991.1849,5409.6094 0,846.288"
809 id="path3414-8-3"
810 inkscape:connector-curvature="0"
811 sodipodi:nodetypes="cc" />
812 <path
813 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
814 d="m 12868.16,5436.2054 0,846.288"
815 id="path3414-8-3-6"
816 inkscape:connector-curvature="0"
817 sodipodi:nodetypes="cc" />
818 <rect
819 ry="0"
820 id="rect118-1"
821 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057965, 60.00115916;stroke-dashoffset:0"
822 rx="0"
823 height="7164.1621"
824 width="13301.43"
825 y="984.91095"
826 x="4277.6021" />
827 <text
828 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
829 id="text202-7-2"
830 font-size="192"
831 font-weight="bold"
832 font-style="normal"
833 y="1236.326"
834 x="4409.96"
835 xml:space="preserve"
836 sodipodi:linespacing="125%">force_qs_rnp()<tspan
837 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
838 id="tspan3307" /></text>
839 <text
840 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
841 id="text202-7-2-7"
842 font-size="192"
843 font-weight="bold"
844 font-style="normal"
845 y="1547.8876"
846 x="4417.6396"
847 xml:space="preserve">dyntick_save_progress_counter()</text>
848 <g
849 style="fill:none;stroke-width:0.025in"
850 transform="translate(6501.9719,-10685.904)"
851 id="g3188">
852 <g
853 id="g3107"
854 transform="translate(947.90548,11584.029)">
855 <rect
856 id="rect112"
857 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
858 rx="0"
859 height="1370.8721"
860 width="2809.1992"
861 y="949.37109"
862 x="2084.55" />
863 <rect
864 id="rect112-3"
865 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
866 rx="0"
867 height="1294.8468"
868 width="2809.1992"
869 y="1025.3964"
870 x="2084.55" />
871 </g>
872 <text
873 xml:space="preserve"
874 x="5452.3052"
875 y="13844.535"
876 font-style="normal"
877 font-weight="bold"
878 font-size="192"
879 id="text202-7-5-1-2-3-7"
880 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
881 sodipodi:linespacing="125%"><tspan
882 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
883 id="tspan3104-6-5">Root</tspan></text>
884 <text
885 xml:space="preserve"
886 x="3158.8521"
887 y="13313.027"
888 font-style="normal"
889 font-weight="bold"
890 font-size="192"
891 id="text202"
892 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
893 </g>
894 <text
895 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
896 id="text202-7-2-7-2"
897 font-size="192"
898 font-weight="bold"
899 font-style="normal"
900 y="1858.8729"
901 x="4414.1836"
902 xml:space="preserve">rcu_implicit_dynticks_qs()</text>
903 <text
904 xml:space="preserve"
905 x="14659.87"
906 y="7002.561"
907 font-style="normal"
908 font-weight="bold"
909 font-size="192"
910 id="text202-62"
911 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
912 <g
913 id="g4504"
914 transform="translate(14776.087,-12503.687)">
915 <path
916 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
917 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
918 sodipodi:ry="39.550262"
919 sodipodi:rx="65.917107"
920 sodipodi:cy="345.54001"
921 sodipodi:cx="319.379"
922 id="path3089"
923 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
924 sodipodi:type="arc" />
925 <text
926 sodipodi:linespacing="125%"
927 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
928 id="text202-7-5-1-2"
929 font-size="192"
930 font-weight="bold"
931 font-style="normal"
932 y="16835.086"
933 x="4409.043"
934 xml:space="preserve"><tspan
935 id="tspan3104"
936 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
937 <text
938 sodipodi:linespacing="125%"
939 id="text3110"
940 y="17055.541"
941 x="4579.373"
942 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
943 xml:space="preserve"><tspan
944 y="17055.541"
945 x="4579.373"
946 id="tspan3112"
947 sodipodi:role="line">read-side</tspan></text>
948 <text
949 sodipodi:linespacing="125%"
950 id="text3114"
951 y="17297.08"
952 x="4584.8276"
953 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
954 xml:space="preserve"><tspan
955 y="17297.08"
956 x="4584.8276"
957 id="tspan3116"
958 sodipodi:role="line">critical section</tspan></text>
959 </g>
960 <g
961 id="g3148-9-9"
962 transform="translate(14747.877,9978.6315)">
963 <rect
964 x="3592.3828"
965 y="-4715.7246"
966 width="3164.783"
967 height="769.99048"
968 rx="0"
969 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
970 id="rect118-3-5-1-3"
971 ry="0" />
972 <text
973 xml:space="preserve"
974 x="3745.7725"
975 y="-4418.6582"
976 font-style="normal"
977 font-weight="bold"
978 font-size="192"
979 id="text202-7-5-3-27-6"
980 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_enter()</text>
981 <text
982 xml:space="preserve"
983 x="3745.7725"
984 y="-4165.7954"
985 font-style="normal"
986 font-weight="bold"
987 font-size="192"
988 id="text202-7-5-3-27-0-0"
989 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
990 </g>
991 <g
992 id="g3148-9-9-2"
993 transform="translate(14747.877,12639.736)">
994 <rect
995 x="3592.3828"
996 y="-4715.7246"
997 width="3164.783"
998 height="769.99048"
999 rx="0"
1000 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
1001 id="rect118-3-5-1-3-6"
1002 ry="0" />
1003 <text
1004 xml:space="preserve"
1005 x="3745.7725"
1006 y="-4418.6582"
1007 font-style="normal"
1008 font-weight="bold"
1009 font-size="192"
1010 id="text202-7-5-3-27-6-1"
1011 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_exit()</text>
1012 <text
1013 xml:space="preserve"
1014 x="3745.7725"
1015 y="-4165.7954"
1016 font-style="normal"
1017 font-weight="bold"
1018 font-size="192"
1019 id="text202-7-5-3-27-0-0-8"
1020 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
1021 </g>
1022 <g
1023 id="g4504-7"
1024 transform="translate(14794.893,-7275.5109)">
1025 <path
1026 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1027 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1028 sodipodi:ry="39.550262"
1029 sodipodi:rx="65.917107"
1030 sodipodi:cy="345.54001"
1031 sodipodi:cx="319.379"
1032 id="path3084-9"
1033 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1034 sodipodi:type="arc" />
1035 <text
1036 sodipodi:linespacing="125%"
1037 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1038 id="text202-7-5-1-2-2"
1039 font-size="192"
1040 font-weight="bold"
1041 font-style="normal"
1042 y="16835.086"
1043 x="4409.043"
1044 xml:space="preserve"><tspan
1045 id="tspan3104-0"
1046 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
1047 <text
1048 sodipodi:linespacing="125%"
1049 id="text3110-2"
1050 y="17055.541"
1051 x="4579.373"
1052 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1053 xml:space="preserve"><tspan
1054 y="17055.541"
1055 x="4579.373"
1056 id="tspan3112-3"
1057 sodipodi:role="line">read-side</tspan></text>
1058 <text
1059 sodipodi:linespacing="125%"
1060 id="text3114-7"
1061 y="17297.08"
1062 x="4584.8276"
1063 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1064 xml:space="preserve"><tspan
1065 y="17297.08"
1066 x="4584.8276"
1067 id="tspan3116-5"
1068 sodipodi:role="line">critical section</tspan></text>
1069 </g>
1070 <g
1071 id="g4504-6"
1072 transform="translate(-2953.0872,-13662.506)">
1073 <path
1074 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1075 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1076 sodipodi:ry="39.550262"
1077 sodipodi:rx="65.917107"
1078 sodipodi:cy="345.54001"
1079 sodipodi:cx="319.379"
1080 id="path3084-1"
1081 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1082 sodipodi:type="arc" />
1083 <text
1084 sodipodi:linespacing="125%"
1085 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1086 id="text202-7-5-1-2-8"
1087 font-size="192"
1088 font-weight="bold"
1089 font-style="normal"
1090 y="16835.086"
1091 x="4409.043"
1092 xml:space="preserve"><tspan
1093 id="tspan3104-7"
1094 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
1095 <text
1096 sodipodi:linespacing="125%"
1097 id="text3110-9"
1098 y="17055.541"
1099 x="4579.373"
1100 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1101 xml:space="preserve"><tspan
1102 y="17055.541"
1103 x="4579.373"
1104 id="tspan3112-2"
1105 sodipodi:role="line">read-side</tspan></text>
1106 <text
1107 sodipodi:linespacing="125%"
1108 id="text3114-0"
1109 y="17297.08"
1110 x="4584.8276"
1111 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1112 xml:space="preserve"><tspan
1113 y="17297.08"
1114 x="4584.8276"
1115 id="tspan3116-2"
1116 sodipodi:role="line">critical section</tspan></text>
1117 </g>
1118 <g
1119 id="g3148-9-9-3"
1120 transform="translate(-3554.8919,9313.0075)">
1121 <rect
1122 x="3592.3828"
1123 y="-4981.6865"
1124 width="3728.9751"
1125 height="2265.0989"
1126 rx="0"
1127 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
1128 id="rect118-3-5-1-3-7"
1129 ry="0" />
1130 <text
1131 xml:space="preserve"
1132 x="3745.7725"
1133 y="-4684.6201"
1134 font-style="normal"
1135 font-weight="bold"
1136 font-size="192"
1137 id="text202-7-5-3-27-6-5"
1138 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_report_dead()</text>
1139 <text
1140 xml:space="preserve"
1141 x="3745.7725"
1142 y="-4431.7573"
1143 font-style="normal"
1144 font-weight="bold"
1145 font-size="192"
1146 id="text202-7-5-3-27-0-0-9"
1147 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_cleanup_dying_idle_cpu()</text>
1148 <g
1149 transform="translate(1783.3183,-5255.3491)"
1150 id="g3107-7-5"
1151 style="fill:none;stroke-width:0.025in">
1152 <rect
1153 x="2084.55"
1154 y="949.37109"
1155 width="2809.1992"
1156 height="1370.8721"
1157 rx="0"
1158 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1159 id="rect112-5-3" />
1160 <rect
1161 x="2084.55"
1162 y="1025.3964"
1163 width="2809.1992"
1164 height="1294.8468"
1165 rx="0"
1166 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1167 id="rect112-3-3-5" />
1168 </g>
1169 <text
1170 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1171 id="text202-6-6-2-6"
1172 font-size="192"
1173 font-weight="bold"
1174 font-style="normal"
1175 y="-3526.4448"
1176 x="4241.8574"
1177 xml:space="preserve">-&gt;qsmaskinitnext</text>
1178 <text
1179 sodipodi:linespacing="125%"
1180 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1181 id="text202-7-5-1-2-3-2"
1182 font-size="192"
1183 font-weight="bold"
1184 font-style="normal"
1185 y="-2987.4167"
1186 x="6305.1484"
1187 xml:space="preserve"><tspan
1188 id="tspan3104-6-9"
1189 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
1190 </g>
1191 <g
1192 id="g4504-7-2"
1193 transform="translate(-2934.2807,-6492.8204)">
1194 <path
1195 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1196 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1197 sodipodi:ry="39.550262"
1198 sodipodi:rx="65.917107"
1199 sodipodi:cy="345.54001"
1200 sodipodi:cx="319.379"
1201 id="path3084-9-2"
1202 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1203 sodipodi:type="arc" />
1204 <text
1205 sodipodi:linespacing="125%"
1206 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1207 id="text202-7-5-1-2-2-8"
1208 font-size="192"
1209 font-weight="bold"
1210 font-style="normal"
1211 y="16835.086"
1212 x="4409.043"
1213 xml:space="preserve"><tspan
1214 id="tspan3104-0-9"
1215 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
1216 <text
1217 sodipodi:linespacing="125%"
1218 id="text3110-2-7"
1219 y="17055.541"
1220 x="4579.373"
1221 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1222 xml:space="preserve"><tspan
1223 y="17055.541"
1224 x="4579.373"
1225 id="tspan3112-3-3"
1226 sodipodi:role="line">read-side</tspan></text>
1227 <text
1228 sodipodi:linespacing="125%"
1229 id="text3114-7-6"
1230 y="17297.08"
1231 x="4584.8276"
1232 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1233 xml:space="preserve"><tspan
1234 y="17297.08"
1235 x="4584.8276"
1236 id="tspan3116-5-1"
1237 sodipodi:role="line">critical section</tspan></text>
1238 </g>
1239 <g
1240 id="g3206"
1241 transform="translate(3999.5374,3999.1768)">
1242 <rect
1243 ry="0"
1244 id="rect118-3-5-1-3-1"
1245 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00058007, 60.00116001;stroke-dashoffset:0"
1246 rx="0"
1247 height="2265.0989"
1248 width="3728.9751"
1249 y="3382.2036"
1250 x="-3958.3845" />
1251 <text
1252 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1253 id="text202-7-5-3-27-6-2"
1254 font-size="192"
1255 font-weight="bold"
1256 font-style="normal"
1257 y="3679.27"
1258 x="-3804.9949"
1259 xml:space="preserve">rcu_cpu_starting()</text>
1260 <g
1261 style="fill:none;stroke-width:0.025in"
1262 id="g3107-7-5-0"
1263 transform="translate(-5767.4491,3108.5424)">
1264 <rect
1265 id="rect112-5-3-9"
1266 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1267 rx="0"
1268 height="1370.8721"
1269 width="2809.1992"
1270 y="949.37109"
1271 x="2084.55" />
1272 <rect
1273 id="rect112-3-3-5-3"
1274 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1275 rx="0"
1276 height="1294.8468"
1277 width="2809.1992"
1278 y="1025.3964"
1279 x="2084.55" />
1280 </g>
1281 <text
1282 xml:space="preserve"
1283 x="-3308.9099"
1284 y="4837.4453"
1285 font-style="normal"
1286 font-weight="bold"
1287 font-size="192"
1288 id="text202-6-6-2-6-6"
1289 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
1290 <text
1291 xml:space="preserve"
1292 x="-1245.6189"
1293 y="5376.4731"
1294 font-style="normal"
1295 font-weight="bold"
1296 font-size="192"
1297 id="text202-7-5-1-2-3-2-0"
1298 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1299 sodipodi:linespacing="125%"><tspan
1300 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1301 id="tspan3104-6-9-6">Leaf</tspan></text>
1302 </g>
1303 <path
1304 sodipodi:nodetypes="cc"
1305 inkscape:connector-curvature="0"
1306 id="path3134-9-0-3-1-3-6"
1307 d="m 15475.193,7360.7089 467.332,8.6247"
1308 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
1309</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg
new file mode 100644
index 000000000000..0161262904ec
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg
@@ -0,0 +1,656 @@
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:35:03 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="1039.3743"
17 height="677.72852"
18 viewBox="-44 -44 13821.733 9008.3597"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp-init-1.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow1Send"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow1Send-36"
253 style="overflow:visible">
254 <path
255 id="path3940-7"
256 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
257 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
258 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 </defs>
262 <sodipodi:namedview
263 pagecolor="#ffffff"
264 bordercolor="#666666"
265 borderopacity="1"
266 objecttolerance="10"
267 gridtolerance="10"
268 guidetolerance="10"
269 inkscape:pageopacity="0"
270 inkscape:pageshadow="2"
271 inkscape:window-width="1087"
272 inkscape:window-height="1144"
273 id="namedview208"
274 showgrid="true"
275 inkscape:zoom="0.70710678"
276 inkscape:cx="617.89019"
277 inkscape:cy="636.57143"
278 inkscape:window-x="697"
279 inkscape:window-y="28"
280 inkscape:window-maximized="0"
281 inkscape:current-layer="svg2"
282 fit-margin-top="5"
283 fit-margin-right="5"
284 fit-margin-left="5"
285 fit-margin-bottom="5">
286 <inkscape:grid
287 type="xygrid"
288 id="grid3059"
289 empspacing="5"
290 visible="true"
291 enabled="true"
292 snapvisiblegridlinesonly="true"
293 originx="1.6062488e-07px"
294 originy="10.7285px" />
295 </sodipodi:namedview>
296 <path
297 sodipodi:nodetypes="cc"
298 inkscape:connector-curvature="0"
299 id="path3134-9-0-3"
300 d="m 6871.027,46.883461 0,8777.144039"
301 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
302 <g
303 style="fill:none;stroke-width:0.025in"
304 transform="translate(2450.4075,-10679.115)"
305 id="g3188">
306 <text
307 xml:space="preserve"
308 x="3305.5364"
309 y="13255.592"
310 font-style="normal"
311 font-weight="bold"
312 font-size="192"
313 id="text202"
314 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;gpnum++</text>
315 <g
316 id="g3107"
317 transform="translate(947.90548,11584.029)">
318 <rect
319 id="rect112"
320 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
321 rx="0"
322 height="1370.8721"
323 width="2809.1992"
324 y="949.37109"
325 x="2084.55" />
326 <rect
327 id="rect112-3"
328 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
329 rx="0"
330 height="1294.8468"
331 width="2809.1992"
332 y="1025.3964"
333 x="2084.55" />
334 </g>
335 <text
336 xml:space="preserve"
337 x="5452.3052"
338 y="13844.535"
339 font-style="normal"
340 font-weight="bold"
341 font-size="192"
342 id="text202-7-5-1-2-3-7"
343 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
344 sodipodi:linespacing="125%"><tspan
345 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
346 id="tspan3104-6-5">Root</tspan></text>
347 </g>
348 <rect
349 ry="0"
350 id="rect118"
351 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
352 rx="0"
353 height="6844.4546"
354 width="13658.751"
355 y="1371.6335"
356 x="37.490932" />
357 <text
358 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
359 id="text202-7"
360 font-size="192"
361 font-weight="bold"
362 font-style="normal"
363 y="1631.0878"
364 x="153.26733"
365 xml:space="preserve">rcu_gp_init()</text>
366 <g
367 style="fill:none;stroke-width:0.025in"
368 transform="translate(2329.9439,-10642.748)"
369 id="g3147">
370 <g
371 style="fill:none;stroke-width:0.025in"
372 id="g3107-6"
373 transform="translate(3054.6101,13760.052)">
374 <rect
375 id="rect112-7"
376 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
377 rx="0"
378 height="1370.8721"
379 width="2809.1992"
380 y="949.37109"
381 x="2084.55" />
382 <rect
383 id="rect112-3-5"
384 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
385 rx="0"
386 height="1294.8468"
387 width="2809.1992"
388 y="1025.3964"
389 x="2084.55" />
390 </g>
391 </g>
392 <g
393 style="fill:none;stroke-width:0.025in"
394 transform="translate(3181.0246,-10679.115)"
395 id="g3153">
396 <g
397 style="fill:none;stroke-width:0.025in"
398 id="g3107-6-9"
399 transform="translate(5213.0126,16008.808)">
400 <rect
401 id="rect112-7-1"
402 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
403 rx="0"
404 height="1370.8721"
405 width="2809.1992"
406 y="949.37109"
407 x="2084.55" />
408 <rect
409 id="rect112-3-5-2"
410 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
411 rx="0"
412 height="1294.8468"
413 width="2809.1992"
414 y="1025.3964"
415 x="2084.55" />
416 </g>
417 <text
418 xml:space="preserve"
419 x="9717.4141"
420 y="18269.314"
421 font-style="normal"
422 font-weight="bold"
423 font-size="192"
424 id="text202-7-5-1-2-3-7-35-7"
425 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
426 sodipodi:linespacing="125%"><tspan
427 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
428 id="tspan3104-6-5-6-0">Leaf</tspan></text>
429 </g>
430 <g
431 transform="translate(-1642.5375,-10642.748)"
432 id="g3147-3"
433 style="fill:none;stroke-width:0.025in">
434 <g
435 style="fill:none;stroke-width:0.025in"
436 id="g3107-6-6"
437 transform="translate(3054.6101,13760.052)">
438 <rect
439 id="rect112-7-0"
440 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
441 rx="0"
442 height="1370.8721"
443 width="2809.1992"
444 y="949.37109"
445 x="2084.55" />
446 <rect
447 id="rect112-3-5-6"
448 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
449 rx="0"
450 height="1294.8468"
451 width="2809.1992"
452 y="1025.3964"
453 x="2084.55" />
454 </g>
455 </g>
456 <g
457 transform="translate(-151.71726,-10679.115)"
458 id="g3153-2"
459 style="fill:none;stroke-width:0.025in">
460 <g
461 style="fill:none;stroke-width:0.025in"
462 id="g3107-6-9-6"
463 transform="translate(5213.0126,16008.808)">
464 <rect
465 id="rect112-7-1-1"
466 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
467 rx="0"
468 height="1370.8721"
469 width="2809.1992"
470 y="949.37109"
471 x="2084.55" />
472 <rect
473 id="rect112-3-5-2-8"
474 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
475 rx="0"
476 height="1294.8468"
477 width="2809.1992"
478 y="1025.3964"
479 x="2084.55" />
480 </g>
481 <text
482 xml:space="preserve"
483 x="9717.4141"
484 y="18269.314"
485 font-style="normal"
486 font-weight="bold"
487 font-size="192"
488 id="text202-7-5-1-2-3-7-35-7-7"
489 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
490 sodipodi:linespacing="125%"><tspan
491 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
492 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
493 </g>
494 <g
495 transform="translate(-3484.4587,-10679.115)"
496 id="g3153-20"
497 style="fill:none;stroke-width:0.025in">
498 <g
499 style="fill:none;stroke-width:0.025in"
500 id="g3107-6-9-2"
501 transform="translate(5213.0126,16008.808)">
502 <rect
503 id="rect112-7-1-3"
504 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
505 rx="0"
506 height="1370.8721"
507 width="2809.1992"
508 y="949.37109"
509 x="2084.55" />
510 <rect
511 id="rect112-3-5-2-7"
512 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
513 rx="0"
514 height="1294.8468"
515 width="2809.1992"
516 y="1025.3964"
517 x="2084.55" />
518 </g>
519 <text
520 xml:space="preserve"
521 x="9717.4141"
522 y="18269.314"
523 font-style="normal"
524 font-weight="bold"
525 font-size="192"
526 id="text202-7-5-1-2-3-7-35-7-5"
527 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
528 sodipodi:linespacing="125%"><tspan
529 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
530 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
531 </g>
532 <g
533 transform="translate(-6817.1998,-10679.115)"
534 id="g3153-28"
535 style="fill:none;stroke-width:0.025in">
536 <g
537 style="fill:none;stroke-width:0.025in"
538 id="g3107-6-9-9"
539 transform="translate(5213.0126,16008.808)">
540 <rect
541 id="rect112-7-1-7"
542 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
543 rx="0"
544 height="1370.8721"
545 width="2809.1992"
546 y="949.37109"
547 x="2084.55" />
548 <rect
549 id="rect112-3-5-2-3"
550 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
551 rx="0"
552 height="1294.8468"
553 width="2809.1992"
554 y="1025.3964"
555 x="2084.55" />
556 </g>
557 <text
558 xml:space="preserve"
559 x="9717.4141"
560 y="18269.314"
561 font-style="normal"
562 font-weight="bold"
563 font-size="192"
564 id="text202-7-5-1-2-3-7-35-7-6"
565 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
566 sodipodi:linespacing="125%"><tspan
567 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
568 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
569 </g>
570 <path
571 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
572 d="m 5473.7572,3203.2219 -582.9982,865.094"
573 id="path3414"
574 inkscape:connector-curvature="0" />
575 <path
576 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
577 d="m 8282.5391,3203.4839 582.9982,865.094"
578 id="path3414-9"
579 inkscape:connector-curvature="0" />
580 <path
581 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
582 d="m 3523.1241,5416.3989 -582.9982,865.094"
583 id="path3414-8"
584 inkscape:connector-curvature="0" />
585 <path
586 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
587 d="m 10268.171,5416.6609 583,865.094"
588 id="path3414-9-4"
589 inkscape:connector-curvature="0" />
590 <path
591 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
592 d="m 4939.6205,5416.3989 0,846.288"
593 id="path3414-8-3"
594 inkscape:connector-curvature="0"
595 sodipodi:nodetypes="cc" />
596 <path
597 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
598 d="m 8816.5958,5442.9949 0,846.288"
599 id="path3414-8-3-6"
600 inkscape:connector-curvature="0"
601 sodipodi:nodetypes="cc" />
602 <g
603 id="g4504-3-9"
604 transform="translate(4866.0367,-16425.339)">
605 <path
606 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
607 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
608 sodipodi:ry="39.550262"
609 sodipodi:rx="65.917107"
610 sodipodi:cy="345.54001"
611 sodipodi:cx="319.379"
612 id="path3084-6-1"
613 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
614 sodipodi:type="arc" />
615 <text
616 sodipodi:linespacing="125%"
617 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
618 id="text202-7-5-1-2-7-2"
619 font-size="192"
620 font-weight="bold"
621 font-style="normal"
622 y="16888.277"
623 x="4344.877"
624 xml:space="preserve"><tspan
625 id="tspan3104-5-7"
626 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">End of</tspan></text>
627 <text
628 sodipodi:linespacing="125%"
629 id="text3110-3-0"
630 y="17119.1"
631 x="4578.7886"
632 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
633 xml:space="preserve"><tspan
634 y="17119.1"
635 x="4578.7886"
636 id="tspan3112-5-9"
637 sodipodi:role="line">Last Grace</tspan></text>
638 <text
639 sodipodi:linespacing="125%"
640 id="text3114-6-3"
641 y="17350.271"
642 x="4581.7886"
643 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
644 xml:space="preserve"><tspan
645 y="17350.271"
646 x="4581.7886"
647 id="tspan3116-2-6"
648 sodipodi:role="line">Period</tspan></text>
649 </g>
650 <path
651 sodipodi:nodetypes="cc"
652 inkscape:connector-curvature="0"
653 id="path3134-9-0-3-5"
654 d="m 8546.5914,605.78414 -1595.7755,0"
655 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-36)" />
656</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg
new file mode 100644
index 000000000000..4d956a732685
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg
@@ -0,0 +1,656 @@
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:35:03 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="1037.9602"
17 height="666.38184"
18 viewBox="-44 -44 13802.928 8857.5401"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp-init-2.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 </defs>
248 <sodipodi:namedview
249 pagecolor="#ffffff"
250 bordercolor="#666666"
251 borderopacity="1"
252 objecttolerance="10"
253 gridtolerance="10"
254 guidetolerance="10"
255 inkscape:pageopacity="0"
256 inkscape:pageshadow="2"
257 inkscape:window-width="1087"
258 inkscape:window-height="1144"
259 id="namedview208"
260 showgrid="false"
261 inkscape:zoom="0.79710462"
262 inkscape:cx="564.27119"
263 inkscape:cy="397.32188"
264 inkscape:window-x="833"
265 inkscape:window-y="28"
266 inkscape:window-maximized="0"
267 inkscape:current-layer="svg2"
268 fit-margin-top="5"
269 fit-margin-right="5"
270 fit-margin-left="5"
271 fit-margin-bottom="5" />
272 <path
273 sodipodi:nodetypes="cccccccccccccccccccccccccccc"
274 inkscape:connector-curvature="0"
275 id="path3134-9-0-3"
276 d="m 6861.6904,46.438525 -2.8276,1315.668775 -5343.8436,17.1194 -2.8276,6561.7446 2039.0799,17.963 -2.7042,-2144.1399 -491.6705,-0.2109 -2.7042,-1993.6887 1487.7179,-4.7279 -17.8,1812.453 2017.2374,-7.6434 4.9532,-2151.5723 -1405.5264,11.163 -10.919,-1891.1468 1739.2164,-2.7175 -13.2006,4234.2295 -1701.3595,1.3953 -8.7841,2107.7116 1702.6392,-4.8334 33.4144,-1867.7167 1312.2492,12.9229 14.608,1818.3367 2000.0063,20.4217 -12.279,-1841.4113 1304.168,1.6154 -12.279,2032.7059 -4638.6515,1.6154 19.5828,569.0378"
277 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
278 <rect
279 ry="0"
280 id="rect118"
281 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
282 rx="0"
283 height="7653.1299"
284 width="13639.945"
285 y="555.69745"
286 x="37.490929" />
287 <text
288 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
289 id="text202-7"
290 font-size="192"
291 font-weight="bold"
292 font-style="normal"
293 y="799.34259"
294 x="134.46091"
295 xml:space="preserve">rcu_gp_init()</text>
296 <g
297 style="fill:none;stroke-width:0.025in"
298 transform="translate(2311.1375,-10650.009)"
299 id="g3147">
300 <g
301 style="fill:none;stroke-width:0.025in"
302 id="g3107-6"
303 transform="translate(3054.6101,13760.052)">
304 <rect
305 id="rect112-7"
306 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
307 rx="0"
308 height="1370.8721"
309 width="2809.1992"
310 y="949.37109"
311 x="2084.55" />
312 <rect
313 id="rect112-3-5"
314 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
315 rx="0"
316 height="1294.8468"
317 width="2809.1992"
318 y="1025.3964"
319 x="2084.55" />
320 </g>
321 </g>
322 <g
323 style="fill:none;stroke-width:0.025in"
324 transform="translate(3162.2182,-10686.376)"
325 id="g3153">
326 <g
327 style="fill:none;stroke-width:0.025in"
328 id="g3107-6-9"
329 transform="translate(5213.0126,16008.808)">
330 <rect
331 id="rect112-7-1"
332 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
333 rx="0"
334 height="1370.8721"
335 width="2809.1992"
336 y="949.37109"
337 x="2084.55" />
338 <rect
339 id="rect112-3-5-2"
340 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
341 rx="0"
342 height="1294.8468"
343 width="2809.1992"
344 y="1025.3964"
345 x="2084.55" />
346 </g>
347 <text
348 xml:space="preserve"
349 x="9717.4141"
350 y="18269.314"
351 font-style="normal"
352 font-weight="bold"
353 font-size="192"
354 id="text202-7-5-1-2-3-7-35-7"
355 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
356 sodipodi:linespacing="125%"><tspan
357 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
358 id="tspan3104-6-5-6-0">Leaf</tspan></text>
359 </g>
360 <g
361 transform="translate(-1661.3439,-10650.009)"
362 id="g3147-3"
363 style="fill:none;stroke-width:0.025in">
364 <g
365 style="fill:none;stroke-width:0.025in"
366 id="g3107-6-6"
367 transform="translate(3054.6101,13760.052)">
368 <rect
369 id="rect112-7-0"
370 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
371 rx="0"
372 height="1370.8721"
373 width="2809.1992"
374 y="949.37109"
375 x="2084.55" />
376 <rect
377 id="rect112-3-5-6"
378 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
379 rx="0"
380 height="1294.8468"
381 width="2809.1992"
382 y="1025.3964"
383 x="2084.55" />
384 </g>
385 <text
386 xml:space="preserve"
387 x="5398.415"
388 y="15310.093"
389 font-style="normal"
390 font-weight="bold"
391 font-size="192"
392 id="text202-8"
393 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinit</text>
394 <text
395 xml:space="preserve"
396 x="5398.415"
397 y="15545.01"
398 font-style="normal"
399 font-weight="bold"
400 font-size="192"
401 id="text202-5-8"
402 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
403 </g>
404 <g
405 transform="translate(-170.52359,-10686.376)"
406 id="g3153-2"
407 style="fill:none;stroke-width:0.025in">
408 <g
409 style="fill:none;stroke-width:0.025in"
410 id="g3107-6-9-6"
411 transform="translate(5213.0126,16008.808)">
412 <rect
413 id="rect112-7-1-1"
414 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
415 rx="0"
416 height="1370.8721"
417 width="2809.1992"
418 y="949.37109"
419 x="2084.55" />
420 <rect
421 id="rect112-3-5-2-8"
422 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
423 rx="0"
424 height="1294.8468"
425 width="2809.1992"
426 y="1025.3964"
427 x="2084.55" />
428 </g>
429 <text
430 xml:space="preserve"
431 x="9717.4141"
432 y="18269.314"
433 font-style="normal"
434 font-weight="bold"
435 font-size="192"
436 id="text202-7-5-1-2-3-7-35-7-7"
437 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
438 sodipodi:linespacing="125%"><tspan
439 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
440 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
441 </g>
442 <g
443 transform="translate(-3503.2651,-10686.376)"
444 id="g3153-20"
445 style="fill:none;stroke-width:0.025in">
446 <g
447 style="fill:none;stroke-width:0.025in"
448 id="g3107-6-9-2"
449 transform="translate(5213.0126,16008.808)">
450 <rect
451 id="rect112-7-1-3"
452 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
453 rx="0"
454 height="1370.8721"
455 width="2809.1992"
456 y="949.37109"
457 x="2084.55" />
458 <rect
459 id="rect112-3-5-2-7"
460 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
461 rx="0"
462 height="1294.8468"
463 width="2809.1992"
464 y="1025.3964"
465 x="2084.55" />
466 </g>
467 <text
468 xml:space="preserve"
469 x="9717.4141"
470 y="18269.314"
471 font-style="normal"
472 font-weight="bold"
473 font-size="192"
474 id="text202-7-5-1-2-3-7-35-7-5"
475 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
476 sodipodi:linespacing="125%"><tspan
477 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
478 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
479 </g>
480 <g
481 transform="translate(-6836.0062,-10686.376)"
482 id="g3153-28"
483 style="fill:none;stroke-width:0.025in">
484 <g
485 style="fill:none;stroke-width:0.025in"
486 id="g3107-6-9-9"
487 transform="translate(5213.0126,16008.808)">
488 <rect
489 id="rect112-7-1-7"
490 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
491 rx="0"
492 height="1370.8721"
493 width="2809.1992"
494 y="949.37109"
495 x="2084.55" />
496 <rect
497 id="rect112-3-5-2-3"
498 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
499 rx="0"
500 height="1294.8468"
501 width="2809.1992"
502 y="1025.3964"
503 x="2084.55" />
504 </g>
505 <text
506 xml:space="preserve"
507 x="9717.4141"
508 y="18269.314"
509 font-style="normal"
510 font-weight="bold"
511 font-size="192"
512 id="text202-7-5-1-2-3-7-35-7-6"
513 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
514 sodipodi:linespacing="125%"><tspan
515 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
516 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
517 <text
518 xml:space="preserve"
519 x="7699.7246"
520 y="17734.791"
521 font-style="normal"
522 font-weight="bold"
523 font-size="192"
524 id="text202-4"
525 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinit</text>
526 </g>
527 <path
528 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
529 d="m 5454.9508,3195.9607 -582.9982,865.094"
530 id="path3414"
531 inkscape:connector-curvature="0" />
532 <path
533 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
534 d="m 8263.7327,3196.2227 582.9982,865.094"
535 id="path3414-9"
536 inkscape:connector-curvature="0" />
537 <path
538 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
539 d="m 3504.3177,5409.1377 -582.9982,865.094"
540 id="path3414-8"
541 inkscape:connector-curvature="0" />
542 <path
543 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
544 d="m 10249.365,5409.3997 583,865.094"
545 id="path3414-9-4"
546 inkscape:connector-curvature="0" />
547 <path
548 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
549 d="m 4920.8141,5409.1377 0,846.288"
550 id="path3414-8-3"
551 inkscape:connector-curvature="0"
552 sodipodi:nodetypes="cc" />
553 <path
554 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
555 d="m 8797.7894,5435.7337 0,846.288"
556 id="path3414-8-3-6"
557 inkscape:connector-curvature="0"
558 sodipodi:nodetypes="cc" />
559 <rect
560 ry="0"
561 id="rect118-1"
562 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057923, 60.00115846;stroke-dashoffset:0"
563 rx="0"
564 height="4418.4302"
565 width="4932.5845"
566 y="1492.2119"
567 x="2087.8708" />
568 <text
569 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
570 id="text202-7-2"
571 font-size="192"
572 font-weight="bold"
573 font-style="normal"
574 y="1690.4336"
575 x="2223.3145"
576 xml:space="preserve"
577 sodipodi:linespacing="125%">rcu_init_new_rnp()<tspan
578 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
579 id="tspan3307"> or</tspan></text>
580 <text
581 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
582 id="text202-7-2-7"
583 font-size="192"
584 font-weight="bold"
585 font-style="normal"
586 y="1958.5066"
587 x="2223.3145"
588 xml:space="preserve">rcu_cleanup_dead_rnp()</text>
589 <text
590 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
591 id="text202-7-2-7-6"
592 font-size="192"
593 font-weight="bold"
594 font-style="normal"
595 y="2227.4531"
596 x="2226.1592"
597 xml:space="preserve"
598 sodipodi:linespacing="125%"><tspan
599 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
600 id="tspan3327">(optional)</tspan></text>
601 <g
602 style="fill:none;stroke-width:0.025in"
603 transform="translate(2431.6011,-10686.376)"
604 id="g3188">
605 <text
606 xml:space="preserve"
607 x="3305.5364"
608 y="13255.592"
609 font-style="normal"
610 font-weight="bold"
611 font-size="192"
612 id="text202"
613 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;qsmaskinit</text>
614 <g
615 id="g3107"
616 transform="translate(947.90548,11584.029)">
617 <rect
618 id="rect112"
619 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
620 rx="0"
621 height="1370.8721"
622 width="2809.1992"
623 y="949.37109"
624 x="2084.55" />
625 <rect
626 id="rect112-3"
627 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
628 rx="0"
629 height="1294.8468"
630 width="2809.1992"
631 y="1025.3964"
632 x="2084.55" />
633 </g>
634 <text
635 xml:space="preserve"
636 x="5452.3052"
637 y="13844.535"
638 font-style="normal"
639 font-weight="bold"
640 font-size="192"
641 id="text202-7-5-1-2-3-7"
642 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
643 sodipodi:linespacing="125%"><tspan
644 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
645 id="tspan3104-6-5">Root</tspan></text>
646 <text
647 xml:space="preserve"
648 x="3305.5364"
649 y="13490.509"
650 font-style="normal"
651 font-weight="bold"
652 font-size="192"
653 id="text202-5"
654 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
655 </g>
656</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg
new file mode 100644
index 000000000000..de6ecc51b00e
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg
@@ -0,0 +1,632 @@
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:35:03 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="1039.3743"
17 height="594.19171"
18 viewBox="-44 -44 13821.733 7897.9895"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp-init-2.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 </defs>
248 <sodipodi:namedview
249 pagecolor="#ffffff"
250 bordercolor="#666666"
251 borderopacity="1"
252 objecttolerance="10"
253 gridtolerance="10"
254 guidetolerance="10"
255 inkscape:pageopacity="0"
256 inkscape:pageshadow="2"
257 inkscape:window-width="1087"
258 inkscape:window-height="1144"
259 id="namedview208"
260 showgrid="false"
261 inkscape:zoom="0.70710678"
262 inkscape:cx="617.89019"
263 inkscape:cy="625.84293"
264 inkscape:window-x="697"
265 inkscape:window-y="28"
266 inkscape:window-maximized="0"
267 inkscape:current-layer="svg2"
268 fit-margin-top="5"
269 fit-margin-right="5"
270 fit-margin-left="5"
271 fit-margin-bottom="5" />
272 <path
273 sodipodi:nodetypes="cccccccccccccccccccccccc"
274 inkscape:connector-curvature="0"
275 id="path3134-9-0-3"
276 d="m 6899.3032,45.520244 -2.8276,2480.757056 -2316.0141,-1.687 -2.8276,2179.8547 2321.1758,-0.8434 -2.7042,-1843.2376 2404.5142,-0.2109 16.1022,1993.2669 -7783.8345,-4.7279 -16.7936,2120.3946 2033.1033,-23.5344 2.0128,-1866.561 2051.9097,14.0785 2.0128,1838.2987 1280.8475,-4.728 14.608,-1830.1039 1312.2492,12.9229 14.608,1818.3367 2000.0059,20.4217 -12.279,-1841.4113 1304.168,1.6154 -12.279,2032.7059 -4638.6511,1.6154 19.5828,569.0378"
277 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
278 <g
279 style="fill:none;stroke-width:0.025in"
280 transform="translate(2450.4075,-11647.329)"
281 id="g3188">
282 <text
283 xml:space="preserve"
284 x="3305.5364"
285 y="13255.592"
286 font-style="normal"
287 font-weight="bold"
288 font-size="192"
289 id="text202"
290 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
291 <g
292 id="g3107"
293 transform="translate(947.90548,11584.029)">
294 <rect
295 id="rect112"
296 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
297 rx="0"
298 height="1370.8721"
299 width="2809.1992"
300 y="949.37109"
301 x="2084.55" />
302 <rect
303 id="rect112-3"
304 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
305 rx="0"
306 height="1294.8468"
307 width="2809.1992"
308 y="1025.3964"
309 x="2084.55" />
310 </g>
311 <text
312 xml:space="preserve"
313 x="5452.3052"
314 y="13844.535"
315 font-style="normal"
316 font-weight="bold"
317 font-size="192"
318 id="text202-7-5-1-2-3-7"
319 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
320 sodipodi:linespacing="125%"><tspan
321 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
322 id="tspan3104-6-5">Root</tspan></text>
323 </g>
324 <rect
325 ry="0"
326 id="rect118"
327 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
328 rx="0"
329 height="6844.4546"
330 width="13658.751"
331 y="403.41983"
332 x="37.490932" />
333 <text
334 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
335 id="text202-7"
336 font-size="192"
337 font-weight="bold"
338 font-style="normal"
339 y="662.8739"
340 x="153.26733"
341 xml:space="preserve">rcu_gp_init()</text>
342 <g
343 style="fill:none;stroke-width:0.025in"
344 transform="translate(2329.9439,-11610.962)"
345 id="g3147">
346 <g
347 style="fill:none;stroke-width:0.025in"
348 id="g3107-6"
349 transform="translate(3054.6101,13760.052)">
350 <rect
351 id="rect112-7"
352 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
353 rx="0"
354 height="1370.8721"
355 width="2809.1992"
356 y="949.37109"
357 x="2084.55" />
358 <rect
359 id="rect112-3-5"
360 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
361 rx="0"
362 height="1294.8468"
363 width="2809.1992"
364 y="1025.3964"
365 x="2084.55" />
366 </g>
367 <text
368 xml:space="preserve"
369 x="5392.3345"
370 y="15407.104"
371 font-style="normal"
372 font-weight="bold"
373 font-size="192"
374 id="text202-6"
375 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
376 </g>
377 <g
378 style="fill:none;stroke-width:0.025in"
379 transform="translate(3181.0246,-11647.329)"
380 id="g3153">
381 <g
382 style="fill:none;stroke-width:0.025in"
383 id="g3107-6-9"
384 transform="translate(5213.0126,16008.808)">
385 <rect
386 id="rect112-7-1"
387 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
388 rx="0"
389 height="1370.8721"
390 width="2809.1992"
391 y="949.37109"
392 x="2084.55" />
393 <rect
394 id="rect112-3-5-2"
395 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
396 rx="0"
397 height="1294.8468"
398 width="2809.1992"
399 y="1025.3964"
400 x="2084.55" />
401 </g>
402 <text
403 xml:space="preserve"
404 x="9717.4141"
405 y="18269.314"
406 font-style="normal"
407 font-weight="bold"
408 font-size="192"
409 id="text202-7-5-1-2-3-7-35-7"
410 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
411 sodipodi:linespacing="125%"><tspan
412 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
413 id="tspan3104-6-5-6-0">Leaf</tspan></text>
414 <text
415 xml:space="preserve"
416 x="7536.4883"
417 y="17640.934"
418 font-style="normal"
419 font-weight="bold"
420 font-size="192"
421 id="text202-9"
422 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
423 </g>
424 <g
425 transform="translate(-1642.5375,-11610.962)"
426 id="g3147-3"
427 style="fill:none;stroke-width:0.025in">
428 <g
429 style="fill:none;stroke-width:0.025in"
430 id="g3107-6-6"
431 transform="translate(3054.6101,13760.052)">
432 <rect
433 id="rect112-7-0"
434 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
435 rx="0"
436 height="1370.8721"
437 width="2809.1992"
438 y="949.37109"
439 x="2084.55" />
440 <rect
441 id="rect112-3-5-6"
442 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
443 rx="0"
444 height="1294.8468"
445 width="2809.1992"
446 y="1025.3964"
447 x="2084.55" />
448 </g>
449 <text
450 xml:space="preserve"
451 x="5378.4146"
452 y="15436.927"
453 font-style="normal"
454 font-weight="bold"
455 font-size="192"
456 id="text202-3"
457 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
458 </g>
459 <g
460 transform="translate(-151.71726,-11647.329)"
461 id="g3153-2"
462 style="fill:none;stroke-width:0.025in">
463 <g
464 style="fill:none;stroke-width:0.025in"
465 id="g3107-6-9-6"
466 transform="translate(5213.0126,16008.808)">
467 <rect
468 id="rect112-7-1-1"
469 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
470 rx="0"
471 height="1370.8721"
472 width="2809.1992"
473 y="949.37109"
474 x="2084.55" />
475 <rect
476 id="rect112-3-5-2-8"
477 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
478 rx="0"
479 height="1294.8468"
480 width="2809.1992"
481 y="1025.3964"
482 x="2084.55" />
483 </g>
484 <text
485 xml:space="preserve"
486 x="9717.4141"
487 y="18269.314"
488 font-style="normal"
489 font-weight="bold"
490 font-size="192"
491 id="text202-7-5-1-2-3-7-35-7-7"
492 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
493 sodipodi:linespacing="125%"><tspan
494 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
495 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
496 </g>
497 <g
498 transform="translate(-3484.4587,-11647.329)"
499 id="g3153-20"
500 style="fill:none;stroke-width:0.025in">
501 <g
502 style="fill:none;stroke-width:0.025in"
503 id="g3107-6-9-2"
504 transform="translate(5213.0126,16008.808)">
505 <rect
506 id="rect112-7-1-3"
507 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
508 rx="0"
509 height="1370.8721"
510 width="2809.1992"
511 y="949.37109"
512 x="2084.55" />
513 <rect
514 id="rect112-3-5-2-7"
515 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
516 rx="0"
517 height="1294.8468"
518 width="2809.1992"
519 y="1025.3964"
520 x="2084.55" />
521 </g>
522 <text
523 xml:space="preserve"
524 x="9717.4141"
525 y="18269.314"
526 font-style="normal"
527 font-weight="bold"
528 font-size="192"
529 id="text202-7-5-1-2-3-7-35-7-5"
530 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
531 sodipodi:linespacing="125%"><tspan
532 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
533 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
534 <text
535 xml:space="preserve"
536 x="7520.1294"
537 y="17673.639"
538 font-style="normal"
539 font-weight="bold"
540 font-size="192"
541 id="text202-35"
542 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
543 </g>
544 <g
545 transform="translate(-6817.1998,-11647.329)"
546 id="g3153-28"
547 style="fill:none;stroke-width:0.025in">
548 <g
549 style="fill:none;stroke-width:0.025in"
550 id="g3107-6-9-9"
551 transform="translate(5213.0126,16008.808)">
552 <rect
553 id="rect112-7-1-7"
554 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
555 rx="0"
556 height="1370.8721"
557 width="2809.1992"
558 y="949.37109"
559 x="2084.55" />
560 <rect
561 id="rect112-3-5-2-3"
562 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
563 rx="0"
564 height="1294.8468"
565 width="2809.1992"
566 y="1025.3964"
567 x="2084.55" />
568 </g>
569 <text
570 xml:space="preserve"
571 x="9717.4141"
572 y="18269.314"
573 font-style="normal"
574 font-weight="bold"
575 font-size="192"
576 id="text202-7-5-1-2-3-7-35-7-6"
577 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
578 sodipodi:linespacing="125%"><tspan
579 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
580 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
581 <text
582 xml:space="preserve"
583 x="7521.4663"
584 y="17666.062"
585 font-style="normal"
586 font-weight="bold"
587 font-size="192"
588 id="text202-75"
589 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
590 </g>
591 <path
592 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
593 d="m 5473.7572,2235.0081 -582.9982,865.094"
594 id="path3414"
595 inkscape:connector-curvature="0" />
596 <path
597 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
598 d="m 8282.5391,2235.2701 582.9982,865.094"
599 id="path3414-9"
600 inkscape:connector-curvature="0" />
601 <path
602 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
603 d="m 3523.1241,4448.1851 -582.9982,865.094"
604 id="path3414-8"
605 inkscape:connector-curvature="0" />
606 <path
607 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
608 d="m 10268.171,4448.4471 583,865.094"
609 id="path3414-9-4"
610 inkscape:connector-curvature="0" />
611 <path
612 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
613 d="m 4939.6205,4448.1851 0,846.288"
614 id="path3414-8-3"
615 inkscape:connector-curvature="0"
616 sodipodi:nodetypes="cc" />
617 <path
618 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
619 d="m 8816.5958,4474.7811 0,846.288"
620 id="path3414-8-3-6"
621 inkscape:connector-curvature="0"
622 sodipodi:nodetypes="cc" />
623 <text
624 xml:space="preserve"
625 x="7370.856"
626 y="5997.5972"
627 font-style="normal"
628 font-weight="bold"
629 font-size="192"
630 id="text202-62"
631 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
632</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg
new file mode 100644
index 000000000000..b13b7b01bb3a
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg
@@ -0,0 +1,5135 @@
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:35:03 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="1626.5841"
17 height="6394.5298"
18 viewBox="-44 -44 21630.525 84996.019"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-gp.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow1Send"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow1Send-36"
183 style="overflow:visible">
184 <path
185 id="path3940-7"
186 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
187 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
188 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-3"
197 style="overflow:visible">
198 <path
199 id="path3946-6"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker3085"
211 style="overflow:visible">
212 <path
213 id="path3087"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="marker3089"
225 style="overflow:visible">
226 <path
227 id="path3091"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="marker3093"
239 style="overflow:visible">
240 <path
241 id="path3095"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow2Lend"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="marker3097"
253 style="overflow:visible">
254 <path
255 id="path3099"
256 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
257 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
258 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow2Lend"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="marker3101"
267 style="overflow:visible">
268 <path
269 id="path3103"
270 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
271 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
272 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow1Send"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="Arrow1Send-7"
281 style="overflow:visible">
282 <path
283 id="path3940-5"
284 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
285 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
286 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 <marker
290 inkscape:stockid="Arrow1Send"
291 orient="auto"
292 refY="0"
293 refX="0"
294 id="Arrow1Send-79"
295 style="overflow:visible">
296 <path
297 id="path3940-20"
298 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
299 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
300 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
301 inkscape:connector-curvature="0" />
302 </marker>
303 <marker
304 inkscape:stockid="Arrow2Lend"
305 orient="auto"
306 refY="0"
307 refX="0"
308 id="Arrow2Lend-37"
309 style="overflow:visible">
310 <path
311 id="path3946-5"
312 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
315 inkscape:connector-curvature="0" />
316 </marker>
317 <marker
318 inkscape:stockid="Arrow2Lend"
319 orient="auto"
320 refY="0"
321 refX="0"
322 id="marker3081"
323 style="overflow:visible">
324 <path
325 id="path3083"
326 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
329 inkscape:connector-curvature="0" />
330 </marker>
331 <marker
332 inkscape:stockid="Arrow2Lend"
333 orient="auto"
334 refY="0"
335 refX="0"
336 id="marker3085-9"
337 style="overflow:visible">
338 <path
339 id="path3087-2"
340 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
341 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
342 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
343 inkscape:connector-curvature="0" />
344 </marker>
345 <marker
346 inkscape:stockid="Arrow2Lend"
347 orient="auto"
348 refY="0"
349 refX="0"
350 id="marker3089-2"
351 style="overflow:visible">
352 <path
353 id="path3091-8"
354 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
355 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
356 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
357 inkscape:connector-curvature="0" />
358 </marker>
359 <marker
360 inkscape:stockid="Arrow2Lend"
361 orient="auto"
362 refY="0"
363 refX="0"
364 id="marker3093-9"
365 style="overflow:visible">
366 <path
367 id="path3095-7"
368 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
369 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
370 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
371 inkscape:connector-curvature="0" />
372 </marker>
373 <marker
374 inkscape:stockid="Arrow2Lend"
375 orient="auto"
376 refY="0"
377 refX="0"
378 id="marker3097-3"
379 style="overflow:visible">
380 <path
381 id="path3099-6"
382 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
383 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
384 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
385 inkscape:connector-curvature="0" />
386 </marker>
387 <marker
388 inkscape:stockid="Arrow1Send"
389 orient="auto"
390 refY="0"
391 refX="0"
392 id="Arrow1Send-12"
393 style="overflow:visible">
394 <path
395 id="path3940-93"
396 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
397 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
398 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
399 inkscape:connector-curvature="0" />
400 </marker>
401 <marker
402 inkscape:stockid="Arrow2Lend"
403 orient="auto"
404 refY="0"
405 refX="0"
406 id="Arrow2Lend-2"
407 style="overflow:visible">
408 <path
409 id="path3946-66"
410 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
411 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
412 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
413 inkscape:connector-curvature="0" />
414 </marker>
415 <marker
416 inkscape:stockid="Arrow2Lend"
417 orient="auto"
418 refY="0"
419 refX="0"
420 id="marker3077"
421 style="overflow:visible">
422 <path
423 id="path3079"
424 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
425 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
426 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
427 inkscape:connector-curvature="0" />
428 </marker>
429 <marker
430 inkscape:stockid="Arrow2Lend"
431 orient="auto"
432 refY="0"
433 refX="0"
434 id="marker3081-4"
435 style="overflow:visible">
436 <path
437 id="path3083-9"
438 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
439 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
440 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
441 inkscape:connector-curvature="0" />
442 </marker>
443 <marker
444 inkscape:stockid="Arrow2Lend"
445 orient="auto"
446 refY="0"
447 refX="0"
448 id="marker3085-5"
449 style="overflow:visible">
450 <path
451 id="path3087-0"
452 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
453 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
454 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
455 inkscape:connector-curvature="0" />
456 </marker>
457 <marker
458 inkscape:stockid="Arrow2Lend"
459 orient="auto"
460 refY="0"
461 refX="0"
462 id="marker3089-4"
463 style="overflow:visible">
464 <path
465 id="path3091-87"
466 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
467 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
468 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
469 inkscape:connector-curvature="0" />
470 </marker>
471 <marker
472 inkscape:stockid="Arrow2Lend"
473 orient="auto"
474 refY="0"
475 refX="0"
476 id="marker3093-1"
477 style="overflow:visible">
478 <path
479 id="path3095-72"
480 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
481 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
482 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
483 inkscape:connector-curvature="0" />
484 </marker>
485 <marker
486 inkscape:stockid="Arrow1Send"
487 orient="auto"
488 refY="0"
489 refX="0"
490 id="Arrow1Send-72"
491 style="overflow:visible">
492 <path
493 id="path3940-26"
494 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
495 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
496 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
497 inkscape:connector-curvature="0" />
498 </marker>
499 <marker
500 inkscape:stockid="Arrow1Send"
501 orient="auto"
502 refY="0"
503 refX="0"
504 id="Arrow1Send-6"
505 style="overflow:visible">
506 <path
507 id="path3940-25"
508 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
509 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
510 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
511 inkscape:connector-curvature="0" />
512 </marker>
513 <marker
514 inkscape:stockid="Arrow2Lend"
515 orient="auto"
516 refY="0"
517 refX="0"
518 id="Arrow2Lend-8"
519 style="overflow:visible">
520 <path
521 id="path3946-62"
522 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
523 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
524 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
525 inkscape:connector-curvature="0" />
526 </marker>
527 <marker
528 inkscape:stockid="Arrow2Lend"
529 orient="auto"
530 refY="0"
531 refX="0"
532 id="marker3179"
533 style="overflow:visible">
534 <path
535 id="path3181"
536 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
537 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
538 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
539 inkscape:connector-curvature="0" />
540 </marker>
541 <marker
542 inkscape:stockid="Arrow2Lend"
543 orient="auto"
544 refY="0"
545 refX="0"
546 id="marker3183"
547 style="overflow:visible">
548 <path
549 id="path3185"
550 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
551 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
552 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
553 inkscape:connector-curvature="0" />
554 </marker>
555 <marker
556 inkscape:stockid="Arrow2Lend"
557 orient="auto"
558 refY="0"
559 refX="0"
560 id="marker3187"
561 style="overflow:visible">
562 <path
563 id="path3189"
564 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
565 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
566 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
567 inkscape:connector-curvature="0" />
568 </marker>
569 <marker
570 inkscape:stockid="Arrow2Lend"
571 orient="auto"
572 refY="0"
573 refX="0"
574 id="marker3191"
575 style="overflow:visible">
576 <path
577 id="path3193"
578 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
579 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
580 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
581 inkscape:connector-curvature="0" />
582 </marker>
583 <marker
584 inkscape:stockid="Arrow2Lend"
585 orient="auto"
586 refY="0"
587 refX="0"
588 id="marker3195"
589 style="overflow:visible">
590 <path
591 id="path3197"
592 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
593 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
594 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
595 inkscape:connector-curvature="0" />
596 </marker>
597 <marker
598 inkscape:stockid="Arrow1Send"
599 orient="auto"
600 refY="0"
601 refX="0"
602 id="marker3199"
603 style="overflow:visible">
604 <path
605 id="path3201"
606 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
607 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
608 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
609 inkscape:connector-curvature="0" />
610 </marker>
611 <marker
612 inkscape:stockid="Arrow1Send"
613 orient="auto"
614 refY="0"
615 refX="0"
616 id="marker3203"
617 style="overflow:visible">
618 <path
619 id="path3205"
620 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
621 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
622 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
623 inkscape:connector-curvature="0" />
624 </marker>
625 <marker
626 inkscape:stockid="Arrow1Send"
627 orient="auto"
628 refY="0"
629 refX="0"
630 id="marker3207"
631 style="overflow:visible">
632 <path
633 id="path3209"
634 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
635 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
636 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
637 inkscape:connector-curvature="0" />
638 </marker>
639 <marker
640 inkscape:stockid="Arrow1Send"
641 orient="auto"
642 refY="0"
643 refX="0"
644 id="marker3211"
645 style="overflow:visible">
646 <path
647 id="path3213"
648 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
649 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
650 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
651 inkscape:connector-curvature="0" />
652 </marker>
653 <marker
654 inkscape:stockid="Arrow1Send"
655 orient="auto"
656 refY="0"
657 refX="0"
658 id="marker3215"
659 style="overflow:visible">
660 <path
661 id="path3217"
662 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
663 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
664 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
665 inkscape:connector-curvature="0" />
666 </marker>
667 <marker
668 inkscape:stockid="Arrow1Send"
669 orient="auto"
670 refY="0"
671 refX="0"
672 id="Arrow1Send-5"
673 style="overflow:visible">
674 <path
675 id="path3940-52"
676 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
677 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
678 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
679 inkscape:connector-curvature="0" />
680 </marker>
681 <marker
682 inkscape:stockid="Arrow1Send"
683 orient="auto"
684 refY="0"
685 refX="0"
686 id="marker3150"
687 style="overflow:visible">
688 <path
689 id="path3152"
690 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
691 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
692 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
693 inkscape:connector-curvature="0" />
694 </marker>
695 <marker
696 inkscape:stockid="Arrow2Lend"
697 orient="auto"
698 refY="0"
699 refX="0"
700 id="Arrow2Lend-9"
701 style="overflow:visible">
702 <path
703 id="path3946-0"
704 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
705 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
706 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
707 inkscape:connector-curvature="0" />
708 </marker>
709 <marker
710 inkscape:stockid="Arrow2Lend"
711 orient="auto"
712 refY="0"
713 refX="0"
714 id="marker3156"
715 style="overflow:visible">
716 <path
717 id="path3158"
718 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
719 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
720 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
721 inkscape:connector-curvature="0" />
722 </marker>
723 <marker
724 inkscape:stockid="Arrow2Lend"
725 orient="auto"
726 refY="0"
727 refX="0"
728 id="marker3160"
729 style="overflow:visible">
730 <path
731 id="path3162"
732 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
733 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
734 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
735 inkscape:connector-curvature="0" />
736 </marker>
737 <marker
738 inkscape:stockid="Arrow2Lend"
739 orient="auto"
740 refY="0"
741 refX="0"
742 id="marker3164"
743 style="overflow:visible">
744 <path
745 id="path3166"
746 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
747 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
748 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
749 inkscape:connector-curvature="0" />
750 </marker>
751 <marker
752 inkscape:stockid="Arrow2Lend"
753 orient="auto"
754 refY="0"
755 refX="0"
756 id="marker3168"
757 style="overflow:visible">
758 <path
759 id="path3170"
760 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
761 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
762 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
763 inkscape:connector-curvature="0" />
764 </marker>
765 <marker
766 inkscape:stockid="Arrow2Lend"
767 orient="auto"
768 refY="0"
769 refX="0"
770 id="marker3172"
771 style="overflow:visible">
772 <path
773 id="path3174"
774 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
775 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
776 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
777 inkscape:connector-curvature="0" />
778 </marker>
779 <marker
780 inkscape:stockid="Arrow1Send"
781 orient="auto"
782 refY="0"
783 refX="0"
784 id="Arrow1Send-8"
785 style="overflow:visible">
786 <path
787 id="path3940-7-2"
788 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
789 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
790 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
791 inkscape:connector-curvature="0" />
792 </marker>
793 <marker
794 inkscape:stockid="Arrow1Send"
795 orient="auto"
796 refY="0"
797 refX="0"
798 id="Arrow1Send-17"
799 style="overflow:visible">
800 <path
801 id="path3940-8"
802 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
803 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
804 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
805 inkscape:connector-curvature="0" />
806 </marker>
807 <marker
808 inkscape:stockid="Arrow1Send"
809 orient="auto"
810 refY="0"
811 refX="0"
812 id="Arrow1Send-36-4"
813 style="overflow:visible">
814 <path
815 id="path3940-7-9"
816 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
817 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
818 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
819 inkscape:connector-curvature="0" />
820 </marker>
821 <marker
822 inkscape:stockid="Arrow2Lend"
823 orient="auto"
824 refY="0"
825 refX="0"
826 id="Arrow2Lend-94"
827 style="overflow:visible">
828 <path
829 id="path3946-59"
830 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
831 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
832 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
833 inkscape:connector-curvature="0" />
834 </marker>
835 <marker
836 inkscape:stockid="Arrow2Lend"
837 orient="auto"
838 refY="0"
839 refX="0"
840 id="marker3157"
841 style="overflow:visible">
842 <path
843 id="path3159"
844 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
845 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
846 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
847 inkscape:connector-curvature="0" />
848 </marker>
849 <marker
850 inkscape:stockid="Arrow2Lend"
851 orient="auto"
852 refY="0"
853 refX="0"
854 id="marker3161"
855 style="overflow:visible">
856 <path
857 id="path3163"
858 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
859 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
860 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
861 inkscape:connector-curvature="0" />
862 </marker>
863 <marker
864 inkscape:stockid="Arrow2Lend"
865 orient="auto"
866 refY="0"
867 refX="0"
868 id="marker3165"
869 style="overflow:visible">
870 <path
871 id="path3167"
872 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
873 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
874 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
875 inkscape:connector-curvature="0" />
876 </marker>
877 <marker
878 inkscape:stockid="Arrow2Lend"
879 orient="auto"
880 refY="0"
881 refX="0"
882 id="marker3169"
883 style="overflow:visible">
884 <path
885 id="path3171"
886 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
887 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
888 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
889 inkscape:connector-curvature="0" />
890 </marker>
891 <marker
892 inkscape:stockid="Arrow2Lend"
893 orient="auto"
894 refY="0"
895 refX="0"
896 id="marker3173"
897 style="overflow:visible">
898 <path
899 id="path3175"
900 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
901 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
902 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
903 inkscape:connector-curvature="0" />
904 </marker>
905 <marker
906 inkscape:stockid="Arrow2Lend"
907 orient="auto"
908 refY="0"
909 refX="0"
910 id="marker3177"
911 style="overflow:visible">
912 <path
913 id="path3179"
914 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
915 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
916 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
917 inkscape:connector-curvature="0" />
918 </marker>
919 <marker
920 inkscape:stockid="Arrow2Lend"
921 orient="auto"
922 refY="0"
923 refX="0"
924 id="marker3181"
925 style="overflow:visible">
926 <path
927 id="path3183"
928 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
929 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
930 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
931 inkscape:connector-curvature="0" />
932 </marker>
933 <marker
934 inkscape:stockid="Arrow2Lend"
935 orient="auto"
936 refY="0"
937 refX="0"
938 id="marker3185"
939 style="overflow:visible">
940 <path
941 id="path3187"
942 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
943 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
944 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
945 inkscape:connector-curvature="0" />
946 </marker>
947 <marker
948 inkscape:stockid="Arrow2Lend"
949 orient="auto"
950 refY="0"
951 refX="0"
952 id="marker3189"
953 style="overflow:visible">
954 <path
955 id="path3191"
956 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
957 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
958 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
959 inkscape:connector-curvature="0" />
960 </marker>
961 <marker
962 inkscape:stockid="Arrow2Lend"
963 orient="auto"
964 refY="0"
965 refX="0"
966 id="marker3193"
967 style="overflow:visible">
968 <path
969 id="path3195"
970 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
971 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
972 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
973 inkscape:connector-curvature="0" />
974 </marker>
975 <marker
976 inkscape:stockid="Arrow2Lend"
977 orient="auto"
978 refY="0"
979 refX="0"
980 id="marker3197"
981 style="overflow:visible">
982 <path
983 id="path3199"
984 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
985 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
986 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
987 inkscape:connector-curvature="0" />
988 </marker>
989 <marker
990 inkscape:stockid="Arrow1Send"
991 orient="auto"
992 refY="0"
993 refX="0"
994 id="Arrow1Send-35"
995 style="overflow:visible">
996 <path
997 id="path3940-70"
998 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
999 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
1000 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
1001 inkscape:connector-curvature="0" />
1002 </marker>
1003 <marker
1004 inkscape:stockid="Arrow1Send"
1005 orient="auto"
1006 refY="0"
1007 refX="0"
1008 id="marker3203-8"
1009 style="overflow:visible">
1010 <path
1011 id="path3205-1"
1012 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
1013 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
1014 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
1015 inkscape:connector-curvature="0" />
1016 </marker>
1017 <marker
1018 inkscape:stockid="Arrow1Send"
1019 orient="auto"
1020 refY="0"
1021 refX="0"
1022 id="Arrow1Send-83"
1023 style="overflow:visible">
1024 <path
1025 id="path3940-79"
1026 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
1027 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
1028 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
1029 inkscape:connector-curvature="0" />
1030 </marker>
1031 <marker
1032 inkscape:stockid="Arrow1Send"
1033 orient="auto"
1034 refY="0"
1035 refX="0"
1036 id="marker3038"
1037 style="overflow:visible">
1038 <path
1039 id="path3040"
1040 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
1041 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
1042 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
1043 inkscape:connector-curvature="0" />
1044 </marker>
1045 <marker
1046 inkscape:stockid="Arrow1Send"
1047 orient="auto"
1048 refY="0"
1049 refX="0"
1050 id="marker3042"
1051 style="overflow:visible">
1052 <path
1053 id="path3044"
1054 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
1055 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
1056 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
1057 inkscape:connector-curvature="0" />
1058 </marker>
1059 </defs>
1060 <sodipodi:namedview
1061 pagecolor="#ffffff"
1062 bordercolor="#666666"
1063 borderopacity="1"
1064 objecttolerance="10"
1065 gridtolerance="10"
1066 guidetolerance="10"
1067 inkscape:pageopacity="0"
1068 inkscape:pageshadow="2"
1069 inkscape:window-width="1087"
1070 inkscape:window-height="1144"
1071 id="namedview208"
1072 showgrid="true"
1073 inkscape:zoom="0.6004608"
1074 inkscape:cx="826.65969"
1075 inkscape:cy="483.3047"
1076 inkscape:window-x="66"
1077 inkscape:window-y="28"
1078 inkscape:window-maximized="0"
1079 inkscape:current-layer="svg2"
1080 fit-margin-top="5"
1081 fit-margin-right="5"
1082 fit-margin-left="5"
1083 fit-margin-bottom="5">
1084 <inkscape:grid
1085 type="xygrid"
1086 id="grid3079"
1087 empspacing="5"
1088 visible="true"
1089 enabled="true"
1090 snapvisiblegridlinesonly="true"
1091 originx="413.99932px"
1092 originy="5758.0031px" />
1093 </sodipodi:namedview>
1094 <g
1095 style="fill:none;stroke-width:0.025in"
1096 id="g4"
1097 transform="translate(4751.9713,-1307.071)">
1098 <path
1099 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
1100 d="m 6161.6776,2411.7612 0,6117.1391"
1101 id="path3134-9-0-3"
1102 inkscape:connector-curvature="0"
1103 sodipodi:nodetypes="cc" />
1104 <path
1105 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
1106 d="m 6161.6776,3342.6302 -3856.4573,0 10.6979,5757.1962 2918.1436,-2e-4"
1107 id="path3134-9-0"
1108 inkscape:connector-curvature="0"
1109 sodipodi:nodetypes="cccc" />
1110 <path
1111 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
1112 d="m 6161.6776,3342.6302 3856.4574,0 -12.188,5757.1963 -2918.1436,-3e-4"
1113 id="path3134-9-0-7"
1114 inkscape:connector-curvature="0"
1115 sodipodi:nodetypes="cccc" />
1116 <!-- Line: box -->
1117 <!-- Line: box -->
1118 <!-- Line: box -->
1119 <!-- Line -->
1120 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
1121 <!-- Line -->
1122 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
1123 <!-- Line -->
1124 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
1125 <!-- Line -->
1126 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
1127 <!-- Line: box -->
1128 <!-- Line: box -->
1129 <!-- Line -->
1130 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
1131 <!-- Line -->
1132 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
1133 <!-- Line -->
1134 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
1135 <!-- Line -->
1136 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
1137 <!-- Line -->
1138 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
1139 <!-- Line -->
1140 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
1141 <!-- Line -->
1142 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
1143 <!-- Line -->
1144 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
1145 <!-- Line -->
1146 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
1147 <!-- Circle -->
1148 <!-- Circle -->
1149 <!-- Circle -->
1150 <!-- Circle -->
1151 <!-- Circle -->
1152 <!-- Circle -->
1153 <!-- Circle -->
1154 <!-- Circle -->
1155 <!-- Circle -->
1156 <!-- Line: box -->
1157 <!-- Line: box -->
1158 <!-- Line: box -->
1159 <!-- Line: box -->
1160 <!-- Line: box -->
1161 <!-- Line: box -->
1162 <!-- Line: box -->
1163 <!-- Line: box -->
1164 <!-- Line: box -->
1165 <!-- Line: box -->
1166 <!-- Line -->
1167 <!-- Line -->
1168 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150-->
1169 <!-- Line: box -->
1170 <!-- Line -->
1171 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410-->
1172 <!-- Line: box -->
1173 <!-- Line -->
1174 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910-->
1175 <!-- Line: box -->
1176 <!-- Line -->
1177 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650-->
1178 <!-- Line -->
1179 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150-->
1180 <!-- Text -->
1181 <!-- Text -->
1182 <!-- Text -->
1183 <!-- Text -->
1184 <!-- Text -->
1185 <!-- Text -->
1186 <!-- Text -->
1187 <!-- Text -->
1188 <!-- Text -->
1189 <!-- Text -->
1190 <!-- Text -->
1191 <!-- Text -->
1192 <!-- Text -->
1193 <!-- Text -->
1194 <!-- Text -->
1195 <!-- Text -->
1196 <!-- Text -->
1197 <!-- Text -->
1198 <!-- Text -->
1199 <!-- Text -->
1200 <!-- Text -->
1201 <!-- Text -->
1202 <!-- Text -->
1203 <!-- Text -->
1204 <!-- Text -->
1205 <!-- Text -->
1206 <!-- Line -->
1207 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
1208 <!-- Line: box -->
1209 <!-- Line: box -->
1210 <!-- Line: box -->
1211 <!-- Line: box -->
1212 <!-- Text -->
1213 <!-- Text -->
1214 <!-- Text -->
1215 <!-- Text -->
1216 <!-- Text -->
1217 <rect
1218 x="4544.7305"
1219 y="4603.417"
1220 width="3240.0088"
1221 height="2650.6289"
1222 rx="0"
1223 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
1224 id="rect118"
1225 ry="0" />
1226 <text
1227 xml:space="preserve"
1228 x="5073.3374"
1229 y="6372.4521"
1230 font-style="normal"
1231 font-weight="bold"
1232 font-size="192"
1233 id="text202"
1234 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rcu_accelerate_cbs()</text>
1235 <g
1236 id="g3107"
1237 transform="translate(2715.7065,4700.8888)">
1238 <rect
1239 id="rect112"
1240 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1241 rx="0"
1242 height="1370.8721"
1243 width="2809.1992"
1244 y="949.37109"
1245 x="2084.55" />
1246 <rect
1247 id="rect112-3"
1248 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1249 rx="0"
1250 height="1294.8468"
1251 width="2809.1992"
1252 y="1025.3964"
1253 x="2084.55" />
1254 </g>
1255 <text
1256 xml:space="preserve"
1257 x="4773.3452"
1258 y="4825.2578"
1259 font-style="normal"
1260 font-weight="bold"
1261 font-size="192"
1262 id="text202-7"
1263 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_prepare_for_idle()</text>
1264 <rect
1265 x="790.93585"
1266 y="4630.8252"
1267 width="3240.0088"
1268 height="2650.6289"
1269 rx="0"
1270 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.0005789, 60.00115781;stroke-dashoffset:0"
1271 id="rect118-3"
1272 ry="0" />
1273 <text
1274 xml:space="preserve"
1275 x="1319.5447"
1276 y="6639.2261"
1277 font-style="normal"
1278 font-weight="bold"
1279 font-size="192"
1280 id="text202-6"
1281 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_accelerate_cbs()</text>
1282 <g
1283 style="fill:none;stroke-width:0.025in"
1284 id="g3107-7"
1285 transform="translate(-1038.0776,4728.2971)">
1286 <rect
1287 id="rect112-5"
1288 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1289 rx="0"
1290 height="1370.8721"
1291 width="2809.1992"
1292 y="949.37109"
1293 x="2084.55" />
1294 <rect
1295 id="rect112-3-3"
1296 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1297 rx="0"
1298 height="1294.8468"
1299 width="2809.1992"
1300 y="1025.3964"
1301 x="2084.55" />
1302 </g>
1303 <text
1304 xml:space="preserve"
1305 x="1019.5512"
1306 y="4852.666"
1307 font-style="normal"
1308 font-weight="bold"
1309 font-size="192"
1310 id="text202-7-5"
1311 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">note_gp_changes()</text>
1312 <text
1313 xml:space="preserve"
1314 x="1319.5447"
1315 y="6376.6328"
1316 font-style="normal"
1317 font-weight="bold"
1318 font-size="192"
1319 id="text202-6-6"
1320 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_advance_cbs()</text>
1321 <text
1322 xml:space="preserve"
1323 x="1340.6649"
1324 y="6111.4473"
1325 font-style="normal"
1326 font-weight="bold"
1327 font-size="192"
1328 id="text202-6-6-2"
1329 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">__note_gp_changes()</text>
1330 <rect
1331 x="5422.6279"
1332 y="3041.8311"
1333 width="1480.4871"
1334 height="379.24637"
1335 rx="0"
1336 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.0005789, 60.00115794;stroke-dashoffset:0"
1337 id="rect118-3-9"
1338 ry="0" />
1339 <text
1340 xml:space="preserve"
1341 x="5607.2734"
1342 y="3283.3892"
1343 font-style="normal"
1344 font-weight="bold"
1345 font-size="192"
1346 id="text202-7-5-1"
1347 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">call_rcu()</text>
1348 <path
1349 sodipodi:type="arc"
1350 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1351 id="path3084"
1352 sodipodi:cx="319.379"
1353 sodipodi:cy="345.54001"
1354 sodipodi:rx="65.917107"
1355 sodipodi:ry="39.550262"
1356 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1357 transform="matrix(13.298129,0,0,13.298129,1915.7286,4523.6528)" />
1358 <text
1359 xml:space="preserve"
1360 x="5853.9238"
1361 y="8902.3623"
1362 font-style="normal"
1363 font-weight="bold"
1364 font-size="192"
1365 id="text202-7-5-1-2"
1366 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1367 sodipodi:linespacing="125%"><tspan
1368 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1369 id="tspan3104">Wake up</tspan></text>
1370 <text
1371 xml:space="preserve"
1372 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1373 x="6165.7158"
1374 y="9122.8174"
1375 id="text3110"
1376 sodipodi:linespacing="125%"><tspan
1377 sodipodi:role="line"
1378 id="tspan3112"
1379 x="6165.7158"
1380 y="9122.8174">grace-period</tspan></text>
1381 <text
1382 xml:space="preserve"
1383 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1384 x="6162.8716"
1385 y="9364.3564"
1386 id="text3114"
1387 sodipodi:linespacing="125%"><tspan
1388 sodipodi:role="line"
1389 id="tspan3116"
1390 x="6162.8716"
1391 y="9364.3564">kernel thread</tspan></text>
1392 <rect
1393 x="8239.8516"
1394 y="4608.7363"
1395 width="3240.0088"
1396 height="2650.6289"
1397 rx="0"
1398 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057902, 60.00115804;stroke-dashoffset:0"
1399 id="rect118-36"
1400 ry="0" />
1401 <text
1402 xml:space="preserve"
1403 x="8768.4678"
1404 y="6484.1562"
1405 font-style="normal"
1406 font-weight="bold"
1407 font-size="192"
1408 id="text202-75"
1409 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_accelerate_cbs()</text>
1410 <g
1411 style="fill:none;stroke-width:0.025in"
1412 id="g3107-3"
1413 transform="translate(6410.833,4706.2127)">
1414 <rect
1415 id="rect112-56"
1416 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1417 rx="0"
1418 height="1370.8721"
1419 width="2809.1992"
1420 y="949.37109"
1421 x="2084.55" />
1422 <rect
1423 id="rect112-3-2"
1424 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1425 rx="0"
1426 height="1294.8468"
1427 width="2809.1992"
1428 y="1025.3964"
1429 x="2084.55" />
1430 </g>
1431 <text
1432 xml:space="preserve"
1433 x="8329.5352"
1434 y="4830.5771"
1435 font-style="normal"
1436 font-weight="bold"
1437 font-size="192"
1438 id="text202-7-9"
1439 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">takedown_cpu()</text>
1440 <text
1441 xml:space="preserve"
1442 x="8335.4873"
1443 y="5094.127"
1444 font-style="normal"
1445 font-weight="bold"
1446 font-size="192"
1447 id="text202-7-9-6"
1448 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcutree_migrate_callbacks()</text>
1449 <text
1450 xml:space="preserve"
1451 x="8335.4873"
1452 y="5357.1006"
1453 font-style="normal"
1454 font-weight="bold"
1455 font-size="192"
1456 id="text202-7-9-6-0"
1457 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_migrate_callbacks()</text>
1458 <text
1459 xml:space="preserve"
1460 x="8768.4678"
1461 y="6224.9038"
1462 font-style="normal"
1463 font-weight="bold"
1464 font-size="192"
1465 id="text202-6-6-6"
1466 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_advance_cbs()</text>
1467 <text
1468 xml:space="preserve"
1469 x="3467.9963"
1470 y="6987.9912"
1471 font-style="normal"
1472 font-weight="bold"
1473 font-size="192"
1474 id="text202-7-5-1-2-3"
1475 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1476 sodipodi:linespacing="125%"><tspan
1477 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1478 id="tspan3104-6">Leaf</tspan></text>
1479 <text
1480 xml:space="preserve"
1481 x="7220.106"
1482 y="6961.395"
1483 font-style="normal"
1484 font-weight="bold"
1485 font-size="192"
1486 id="text202-7-5-1-2-3-7"
1487 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1488 sodipodi:linespacing="125%"><tspan
1489 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1490 id="tspan3104-6-5">Leaf</tspan></text>
1491 <text
1492 xml:space="preserve"
1493 x="10905.331"
1494 y="6961.395"
1495 font-style="normal"
1496 font-weight="bold"
1497 font-size="192"
1498 id="text202-7-5-1-2-3-7-3"
1499 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1500 sodipodi:linespacing="125%"><tspan
1501 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1502 id="tspan3104-6-5-5">Leaf</tspan></text>
1503 <path
1504 sodipodi:type="arc"
1505 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1506 id="path3084-3"
1507 sodipodi:cx="319.379"
1508 sodipodi:cy="345.54001"
1509 sodipodi:rx="65.917107"
1510 sodipodi:ry="39.550262"
1511 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1512 transform="matrix(13.298129,0,0,13.298129,1872.6808,-2726.4833)" />
1513 <text
1514 xml:space="preserve"
1515 x="5717.4517"
1516 y="1785.2073"
1517 font-style="normal"
1518 font-weight="bold"
1519 font-size="192"
1520 id="text202-7-5-1-2-6"
1521 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1522 sodipodi:linespacing="125%"><tspan
1523 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1524 id="tspan3104-7">Phase One</tspan></text>
1525 <text
1526 xml:space="preserve"
1527 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1528 x="6119.668"
1529 y="2005.6624"
1530 id="text3110-5"
1531 sodipodi:linespacing="125%"><tspan
1532 sodipodi:role="line"
1533 id="tspan3112-3"
1534 x="6119.668"
1535 y="2005.6624">of Update</tspan></text>
1536 <path
1537 sodipodi:nodetypes="cc"
1538 inkscape:connector-curvature="0"
1539 id="path3134-9-0-3-3"
1540 d="m 6169.6477,11384.719 0,8777.145"
1541 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
1542 <g
1543 style="fill:none;stroke-width:0.025in"
1544 transform="translate(1749.0282,658.72243)"
1545 id="g3188">
1546 <text
1547 xml:space="preserve"
1548 x="3305.5364"
1549 y="13255.592"
1550 font-style="normal"
1551 font-weight="bold"
1552 font-size="192"
1553 id="text202-5"
1554 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rsp-&gt;gpnum++</text>
1555 <g
1556 id="g3107-62"
1557 transform="translate(947.90548,11584.029)">
1558 <rect
1559 id="rect112-9"
1560 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1561 rx="0"
1562 height="1370.8721"
1563 width="2809.1992"
1564 y="949.37109"
1565 x="2084.55" />
1566 <rect
1567 id="rect112-3-1"
1568 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1569 rx="0"
1570 height="1294.8468"
1571 width="2809.1992"
1572 y="1025.3964"
1573 x="2084.55" />
1574 </g>
1575 <text
1576 xml:space="preserve"
1577 x="5452.3052"
1578 y="13844.535"
1579 font-style="normal"
1580 font-weight="bold"
1581 font-size="192"
1582 id="text202-7-5-1-2-3-7-2"
1583 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1584 sodipodi:linespacing="125%"><tspan
1585 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1586 id="tspan3104-6-5-7">Root</tspan></text>
1587 </g>
1588 <rect
1589 ry="0"
1590 id="rect118-0"
1591 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057845, 60.00115689;stroke-dashoffset:0"
1592 rx="0"
1593 height="23612.516"
1594 width="13607.611"
1595 y="12709.474"
1596 x="-663.88806" />
1597 <text
1598 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1599 id="text202-7-93"
1600 font-size="192"
1601 font-weight="bold"
1602 font-style="normal"
1603 y="12968.928"
1604 x="-548.11169"
1605 xml:space="preserve">rcu_gp_init()</text>
1606 <g
1607 style="fill:none;stroke-width:0.025in"
1608 transform="translate(1628.5648,695.08943)"
1609 id="g3147">
1610 <g
1611 style="fill:none;stroke-width:0.025in"
1612 id="g3107-6"
1613 transform="translate(3054.6101,13760.052)">
1614 <rect
1615 id="rect112-7"
1616 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1617 rx="0"
1618 height="1370.8721"
1619 width="2809.1992"
1620 y="949.37109"
1621 x="2084.55" />
1622 <rect
1623 id="rect112-3-5"
1624 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1625 rx="0"
1626 height="1294.8468"
1627 width="2809.1992"
1628 y="1025.3964"
1629 x="2084.55" />
1630 </g>
1631 </g>
1632 <g
1633 style="fill:none;stroke-width:0.025in"
1634 transform="translate(2479.6454,658.72243)"
1635 id="g3153">
1636 <g
1637 style="fill:none;stroke-width:0.025in"
1638 id="g3107-6-9"
1639 transform="translate(5213.0126,16008.808)">
1640 <rect
1641 id="rect112-7-1"
1642 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1643 rx="0"
1644 height="1370.8721"
1645 width="2809.1992"
1646 y="949.37109"
1647 x="2084.55" />
1648 <rect
1649 id="rect112-3-5-2"
1650 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1651 rx="0"
1652 height="1294.8468"
1653 width="2809.1992"
1654 y="1025.3964"
1655 x="2084.55" />
1656 </g>
1657 <text
1658 xml:space="preserve"
1659 x="9717.4141"
1660 y="18269.314"
1661 font-style="normal"
1662 font-weight="bold"
1663 font-size="192"
1664 id="text202-7-5-1-2-3-7-35-7"
1665 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1666 sodipodi:linespacing="125%"><tspan
1667 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1668 id="tspan3104-6-5-6-0">Leaf</tspan></text>
1669 </g>
1670 <g
1671 transform="translate(-2343.9166,695.08943)"
1672 id="g3147-3"
1673 style="fill:none;stroke-width:0.025in">
1674 <g
1675 style="fill:none;stroke-width:0.025in"
1676 id="g3107-6-6"
1677 transform="translate(3054.6101,13760.052)">
1678 <rect
1679 id="rect112-7-0"
1680 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1681 rx="0"
1682 height="1370.8721"
1683 width="2809.1992"
1684 y="949.37109"
1685 x="2084.55" />
1686 <rect
1687 id="rect112-3-5-6"
1688 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1689 rx="0"
1690 height="1294.8468"
1691 width="2809.1992"
1692 y="1025.3964"
1693 x="2084.55" />
1694 </g>
1695 </g>
1696 <g
1697 transform="translate(-853.09625,658.72243)"
1698 id="g3153-2"
1699 style="fill:none;stroke-width:0.025in">
1700 <g
1701 style="fill:none;stroke-width:0.025in"
1702 id="g3107-6-9-6"
1703 transform="translate(5213.0126,16008.808)">
1704 <rect
1705 id="rect112-7-1-1"
1706 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1707 rx="0"
1708 height="1370.8721"
1709 width="2809.1992"
1710 y="949.37109"
1711 x="2084.55" />
1712 <rect
1713 id="rect112-3-5-2-8"
1714 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1715 rx="0"
1716 height="1294.8468"
1717 width="2809.1992"
1718 y="1025.3964"
1719 x="2084.55" />
1720 </g>
1721 <text
1722 xml:space="preserve"
1723 x="9717.4141"
1724 y="18269.314"
1725 font-style="normal"
1726 font-weight="bold"
1727 font-size="192"
1728 id="text202-7-5-1-2-3-7-35-7-7"
1729 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1730 sodipodi:linespacing="125%"><tspan
1731 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1732 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
1733 </g>
1734 <g
1735 transform="translate(-4185.8377,658.72243)"
1736 id="g3153-20"
1737 style="fill:none;stroke-width:0.025in">
1738 <g
1739 style="fill:none;stroke-width:0.025in"
1740 id="g3107-6-9-2"
1741 transform="translate(5213.0126,16008.808)">
1742 <rect
1743 id="rect112-7-1-3"
1744 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1745 rx="0"
1746 height="1370.8721"
1747 width="2809.1992"
1748 y="949.37109"
1749 x="2084.55" />
1750 <rect
1751 id="rect112-3-5-2-7"
1752 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1753 rx="0"
1754 height="1294.8468"
1755 width="2809.1992"
1756 y="1025.3964"
1757 x="2084.55" />
1758 </g>
1759 <text
1760 xml:space="preserve"
1761 x="9717.4141"
1762 y="18269.314"
1763 font-style="normal"
1764 font-weight="bold"
1765 font-size="192"
1766 id="text202-7-5-1-2-3-7-35-7-5"
1767 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1768 sodipodi:linespacing="125%"><tspan
1769 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1770 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
1771 </g>
1772 <g
1773 transform="translate(-7518.5789,658.72243)"
1774 id="g3153-28"
1775 style="fill:none;stroke-width:0.025in">
1776 <g
1777 style="fill:none;stroke-width:0.025in"
1778 id="g3107-6-9-9"
1779 transform="translate(5213.0126,16008.808)">
1780 <rect
1781 id="rect112-7-1-7"
1782 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1783 rx="0"
1784 height="1370.8721"
1785 width="2809.1992"
1786 y="949.37109"
1787 x="2084.55" />
1788 <rect
1789 id="rect112-3-5-2-3"
1790 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1791 rx="0"
1792 height="1294.8468"
1793 width="2809.1992"
1794 y="1025.3964"
1795 x="2084.55" />
1796 </g>
1797 <text
1798 xml:space="preserve"
1799 x="9717.4141"
1800 y="18269.314"
1801 font-style="normal"
1802 font-weight="bold"
1803 font-size="192"
1804 id="text202-7-5-1-2-3-7-35-7-6"
1805 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1806 sodipodi:linespacing="125%"><tspan
1807 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
1808 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
1809 </g>
1810 <path
1811 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1812 d="m 4772.378,14541.058 -582.9982,865.094"
1813 id="path3414"
1814 inkscape:connector-curvature="0" />
1815 <path
1816 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1817 d="m 7581.1599,14541.32 582.9982,865.094"
1818 id="path3414-9"
1819 inkscape:connector-curvature="0" />
1820 <path
1821 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1822 d="m 2821.7449,16754.235 -582.9982,865.094"
1823 id="path3414-8"
1824 inkscape:connector-curvature="0" />
1825 <path
1826 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1827 d="m 9566.7916,16754.497 583.0014,865.094"
1828 id="path3414-9-4"
1829 inkscape:connector-curvature="0" />
1830 <path
1831 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1832 d="m 4238.2414,16754.235 0,846.288"
1833 id="path3414-8-3"
1834 inkscape:connector-curvature="0"
1835 sodipodi:nodetypes="cc" />
1836 <path
1837 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
1838 d="m 8115.2166,16780.831 0,846.288"
1839 id="path3414-8-3-6"
1840 inkscape:connector-curvature="0"
1841 sodipodi:nodetypes="cc" />
1842 <g
1843 id="g4504-3-9"
1844 transform="translate(4164.6575,-5087.5013)">
1845 <path
1846 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1847 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1848 sodipodi:ry="39.550262"
1849 sodipodi:rx="65.917107"
1850 sodipodi:cy="345.54001"
1851 sodipodi:cx="319.379"
1852 id="path3084-6-1"
1853 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1854 sodipodi:type="arc" />
1855 <text
1856 sodipodi:linespacing="125%"
1857 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1858 id="text202-7-5-1-2-7-2"
1859 font-size="192"
1860 font-weight="bold"
1861 font-style="normal"
1862 y="16888.277"
1863 x="4344.877"
1864 xml:space="preserve"><tspan
1865 id="tspan3104-5-7"
1866 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">End of</tspan></text>
1867 <text
1868 sodipodi:linespacing="125%"
1869 id="text3110-3-0"
1870 y="17119.1"
1871 x="4578.7886"
1872 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1873 xml:space="preserve"><tspan
1874 y="17119.1"
1875 x="4578.7886"
1876 id="tspan3112-5-9"
1877 sodipodi:role="line">Last Grace</tspan></text>
1878 <text
1879 sodipodi:linespacing="125%"
1880 id="text3114-6-3"
1881 y="17350.271"
1882 x="4581.7886"
1883 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1884 xml:space="preserve"><tspan
1885 y="17350.271"
1886 x="4581.7886"
1887 id="tspan3116-2-6"
1888 sodipodi:role="line">Period</tspan></text>
1889 </g>
1890 <path
1891 sodipodi:nodetypes="cc"
1892 inkscape:connector-curvature="0"
1893 id="path3134-9-0-3-5"
1894 d="m 7845.2122,11943.62 -1595.7756,0"
1895 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-36)" />
1896 <path
1897 sodipodi:type="arc"
1898 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1899 id="path3084-6"
1900 sodipodi:cx="319.379"
1901 sodipodi:cy="345.54001"
1902 sodipodi:rx="65.917107"
1903 sodipodi:ry="39.550262"
1904 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1905 transform="matrix(13.298129,0,0,13.298129,1915.7264,6279.0065)" />
1906 <text
1907 xml:space="preserve"
1908 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1909 x="6165.6357"
1910 y="10691.992"
1911 id="text3110-0"
1912 sodipodi:linespacing="125%"><tspan
1913 sodipodi:role="line"
1914 id="tspan3112-6"
1915 x="6165.6357"
1916 y="10691.992">Grace-period</tspan></text>
1917 <text
1918 xml:space="preserve"
1919 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1920 x="6162.8696"
1921 y="10947.994"
1922 id="text3114-2"
1923 sodipodi:linespacing="125%"><tspan
1924 sodipodi:role="line"
1925 id="tspan3116-6"
1926 x="6162.8696"
1927 y="10947.994">kernel thread</tspan></text>
1928 <text
1929 xml:space="preserve"
1930 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1931 x="6165.3237"
1932 y="11188.528"
1933 id="text3114-1"
1934 sodipodi:linespacing="125%"><tspan
1935 sodipodi:role="line"
1936 id="tspan3116-8"
1937 x="6165.3237"
1938 y="11188.528">awakened</tspan></text>
1939 <path
1940 sodipodi:nodetypes="cc"
1941 inkscape:connector-curvature="0"
1942 id="path3134-9-0-3-3-2"
1943 d="m 6161.6774,9725.7319 0,531.9251"
1944 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
1945 <path
1946 sodipodi:nodetypes="cccccccccccccccccccccccccccc"
1947 inkscape:connector-curvature="0"
1948 id="path3134-9-0-3-1"
1949 d="m 6169.1878,20208.525 -2.8277,1315.668 -5343.84363,17.12 -2.8276,6561.744 2039.08003,17.963 -2.7042,-2144.14 -491.6705,-0.211 -2.7042,-1993.689 1487.7179,-4.728 -17.7999,1812.453 2017.2372,-7.643 4.9533,-2151.572 -1405.5264,11.163 -10.9189,-1891.147 1739.2163,-2.718 -13.2006,4234.23 -1701.3596,1.395 -8.784,2107.712 1702.6392,-4.834 33.4144,-1867.716 1312.2491,12.923 14.608,1818.336 2000.0062,20.422 -12.279,-1841.411 1304.1668,1.615 -12.279,2032.706 -4638.6501,1.615 19.5828,569.038"
1950 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
1951 <g
1952 style="fill:none;stroke-width:0.025in"
1953 transform="translate(1618.635,9512.0768)"
1954 id="g3147-7">
1955 <g
1956 style="fill:none;stroke-width:0.025in"
1957 id="g3107-6-8"
1958 transform="translate(3054.6101,13760.052)">
1959 <rect
1960 id="rect112-7-4"
1961 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1962 rx="0"
1963 height="1370.8721"
1964 width="2809.1992"
1965 y="949.37109"
1966 x="2084.55" />
1967 <rect
1968 id="rect112-3-5-5"
1969 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1970 rx="0"
1971 height="1294.8468"
1972 width="2809.1992"
1973 y="1025.3964"
1974 x="2084.55" />
1975 </g>
1976 </g>
1977 <g
1978 style="fill:none;stroke-width:0.025in"
1979 transform="translate(2469.7158,9475.7098)"
1980 id="g3153-0">
1981 <g
1982 style="fill:none;stroke-width:0.025in"
1983 id="g3107-6-9-3"
1984 transform="translate(5213.0126,16008.808)">
1985 <rect
1986 id="rect112-7-1-6"
1987 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1988 rx="0"
1989 height="1370.8721"
1990 width="2809.1992"
1991 y="949.37109"
1992 x="2084.55" />
1993 <rect
1994 id="rect112-3-5-2-1"
1995 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
1996 rx="0"
1997 height="1294.8468"
1998 width="2809.1992"
1999 y="1025.3964"
2000 x="2084.55" />
2001 </g>
2002 <text
2003 xml:space="preserve"
2004 x="9717.4141"
2005 y="18269.314"
2006 font-style="normal"
2007 font-weight="bold"
2008 font-size="192"
2009 id="text202-7-5-1-2-3-7-35-7-0"
2010 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2011 sodipodi:linespacing="125%"><tspan
2012 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2013 id="tspan3104-6-5-6-0-6">Leaf</tspan></text>
2014 </g>
2015 <g
2016 transform="translate(-2353.8464,9512.0768)"
2017 id="g3147-3-3"
2018 style="fill:none;stroke-width:0.025in">
2019 <g
2020 style="fill:none;stroke-width:0.025in"
2021 id="g3107-6-6-2"
2022 transform="translate(3054.6101,13760.052)">
2023 <rect
2024 id="rect112-7-0-0"
2025 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2026 rx="0"
2027 height="1370.8721"
2028 width="2809.1992"
2029 y="949.37109"
2030 x="2084.55" />
2031 <rect
2032 id="rect112-3-5-6-6"
2033 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2034 rx="0"
2035 height="1294.8468"
2036 width="2809.1992"
2037 y="1025.3964"
2038 x="2084.55" />
2039 </g>
2040 <text
2041 xml:space="preserve"
2042 x="5398.415"
2043 y="15310.093"
2044 font-style="normal"
2045 font-weight="bold"
2046 font-size="192"
2047 id="text202-8"
2048 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinit</text>
2049 <text
2050 xml:space="preserve"
2051 x="5398.415"
2052 y="15545.01"
2053 font-style="normal"
2054 font-weight="bold"
2055 font-size="192"
2056 id="text202-5-8"
2057 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
2058 </g>
2059 <g
2060 transform="translate(-863.02623,9475.7098)"
2061 id="g3153-2-1"
2062 style="fill:none;stroke-width:0.025in">
2063 <g
2064 style="fill:none;stroke-width:0.025in"
2065 id="g3107-6-9-6-5"
2066 transform="translate(5213.0126,16008.808)">
2067 <rect
2068 id="rect112-7-1-1-5"
2069 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2070 rx="0"
2071 height="1370.8721"
2072 width="2809.1992"
2073 y="949.37109"
2074 x="2084.55" />
2075 <rect
2076 id="rect112-3-5-2-8-4"
2077 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2078 rx="0"
2079 height="1294.8468"
2080 width="2809.1992"
2081 y="1025.3964"
2082 x="2084.55" />
2083 </g>
2084 <text
2085 xml:space="preserve"
2086 x="9717.4141"
2087 y="18269.314"
2088 font-style="normal"
2089 font-weight="bold"
2090 font-size="192"
2091 id="text202-7-5-1-2-3-7-35-7-7-7"
2092 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2093 sodipodi:linespacing="125%"><tspan
2094 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2095 id="tspan3104-6-5-6-0-9-6">Leaf</tspan></text>
2096 </g>
2097 <g
2098 transform="translate(-4195.7676,9475.7098)"
2099 id="g3153-20-5"
2100 style="fill:none;stroke-width:0.025in">
2101 <g
2102 style="fill:none;stroke-width:0.025in"
2103 id="g3107-6-9-2-6"
2104 transform="translate(5213.0126,16008.808)">
2105 <rect
2106 id="rect112-7-1-3-9"
2107 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2108 rx="0"
2109 height="1370.8721"
2110 width="2809.1992"
2111 y="949.37109"
2112 x="2084.55" />
2113 <rect
2114 id="rect112-3-5-2-7-3"
2115 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2116 rx="0"
2117 height="1294.8468"
2118 width="2809.1992"
2119 y="1025.3964"
2120 x="2084.55" />
2121 </g>
2122 <text
2123 xml:space="preserve"
2124 x="9717.4141"
2125 y="18269.314"
2126 font-style="normal"
2127 font-weight="bold"
2128 font-size="192"
2129 id="text202-7-5-1-2-3-7-35-7-5-7"
2130 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2131 sodipodi:linespacing="125%"><tspan
2132 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2133 id="tspan3104-6-5-6-0-92-4">Leaf</tspan></text>
2134 </g>
2135 <g
2136 transform="translate(-7528.5086,9475.7098)"
2137 id="g3153-28-5"
2138 style="fill:none;stroke-width:0.025in">
2139 <g
2140 style="fill:none;stroke-width:0.025in"
2141 id="g3107-6-9-9-2"
2142 transform="translate(5213.0126,16008.808)">
2143 <rect
2144 id="rect112-7-1-7-5"
2145 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2146 rx="0"
2147 height="1370.8721"
2148 width="2809.1992"
2149 y="949.37109"
2150 x="2084.55" />
2151 <rect
2152 id="rect112-3-5-2-3-4"
2153 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2154 rx="0"
2155 height="1294.8468"
2156 width="2809.1992"
2157 y="1025.3964"
2158 x="2084.55" />
2159 </g>
2160 <text
2161 xml:space="preserve"
2162 x="9717.4141"
2163 y="18269.314"
2164 font-style="normal"
2165 font-weight="bold"
2166 font-size="192"
2167 id="text202-7-5-1-2-3-7-35-7-6-7"
2168 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2169 sodipodi:linespacing="125%"><tspan
2170 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2171 id="tspan3104-6-5-6-0-1-4">Leaf</tspan></text>
2172 <text
2173 xml:space="preserve"
2174 x="7699.7246"
2175 y="17734.791"
2176 font-style="normal"
2177 font-weight="bold"
2178 font-size="192"
2179 id="text202-4"
2180 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinit</text>
2181 </g>
2182 <path
2183 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2184 d="M 4762.4482,23358.047 4179.45,24223.141"
2185 id="path3414-4"
2186 inkscape:connector-curvature="0" />
2187 <path
2188 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2189 d="m 7571.23,23358.309 582.9982,865.094"
2190 id="path3414-9-3"
2191 inkscape:connector-curvature="0" />
2192 <path
2193 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2194 d="m 2811.8152,25571.224 -582.9982,865.094"
2195 id="path3414-8-0"
2196 inkscape:connector-curvature="0" />
2197 <path
2198 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2199 d="m 9556.8622,25571.486 582.9988,865.094"
2200 id="path3414-9-4-7"
2201 inkscape:connector-curvature="0" />
2202 <path
2203 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2204 d="m 4228.3115,25571.224 0,846.288"
2205 id="path3414-8-3-8"
2206 inkscape:connector-curvature="0"
2207 sodipodi:nodetypes="cc" />
2208 <path
2209 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2210 d="m 8105.2867,25597.82 0,846.288"
2211 id="path3414-8-3-6-6"
2212 inkscape:connector-curvature="0"
2213 sodipodi:nodetypes="cc" />
2214 <rect
2215 ry="0"
2216 id="rect118-1"
2217 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115756;stroke-dashoffset:0"
2218 rx="0"
2219 height="4418.4302"
2220 width="4932.5845"
2221 y="21654.297"
2222 x="1395.3682" />
2223 <text
2224 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2225 id="text202-7-2"
2226 font-size="192"
2227 font-weight="bold"
2228 font-style="normal"
2229 y="21852.52"
2230 x="1530.812"
2231 xml:space="preserve"
2232 sodipodi:linespacing="125%">rcu_init_new_rnp()<tspan
2233 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2234 id="tspan3307"> or</tspan></text>
2235 <text
2236 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2237 id="text202-7-2-7"
2238 font-size="192"
2239 font-weight="bold"
2240 font-style="normal"
2241 y="22120.592"
2242 x="1530.812"
2243 xml:space="preserve">rcu_cleanup_dead_rnp()</text>
2244 <text
2245 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2246 id="text202-7-2-7-6"
2247 font-size="192"
2248 font-weight="bold"
2249 font-style="normal"
2250 y="22389.539"
2251 x="1533.6567"
2252 xml:space="preserve"
2253 sodipodi:linespacing="125%"><tspan
2254 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2255 id="tspan3327">(optional)</tspan></text>
2256 <g
2257 style="fill:none;stroke-width:0.025in"
2258 transform="translate(1739.0986,9475.7098)"
2259 id="g3188-8">
2260 <text
2261 xml:space="preserve"
2262 x="3305.5364"
2263 y="13255.592"
2264 font-style="normal"
2265 font-weight="bold"
2266 font-size="192"
2267 id="text202-84"
2268 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;qsmaskinit</text>
2269 <g
2270 id="g3107-31"
2271 transform="translate(947.90548,11584.029)">
2272 <rect
2273 id="rect112-4"
2274 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2275 rx="0"
2276 height="1370.8721"
2277 width="2809.1992"
2278 y="949.37109"
2279 x="2084.55" />
2280 <rect
2281 id="rect112-3-9"
2282 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2283 rx="0"
2284 height="1294.8468"
2285 width="2809.1992"
2286 y="1025.3964"
2287 x="2084.55" />
2288 </g>
2289 <text
2290 xml:space="preserve"
2291 x="5452.3052"
2292 y="13844.535"
2293 font-style="normal"
2294 font-weight="bold"
2295 font-size="192"
2296 id="text202-7-5-1-2-3-7-20"
2297 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2298 sodipodi:linespacing="125%"><tspan
2299 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2300 id="tspan3104-6-5-6">Root</tspan></text>
2301 <text
2302 xml:space="preserve"
2303 x="3305.5364"
2304 y="13490.509"
2305 font-style="normal"
2306 font-weight="bold"
2307 font-size="192"
2308 id="text202-5-89"
2309 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
2310 </g>
2311 <path
2312 sodipodi:nodetypes="cccccccccccccccccccccccc"
2313 inkscape:connector-curvature="0"
2314 id="path3134-9-0-3-10"
2315 d="m 6187.9943,28881.474 -2.8275,2480.757 -2316.0141,-1.687 -2.8276,2179.854 2321.1757,-0.843 -2.7041,-1843.237 2404.5141,-0.212 16.1022,1993.267 -7783.83443,-4.728 -16.7937,2120.395 2033.10343,-23.534 2.0128,-1866.562 2051.9098,14.079 2.0128,1838.299 1280.8474,-4.728 14.608,-1830.104 1312.2492,12.923 14.608,1818.336 2000.0057,20.422 -12.279,-1841.411 1304.167,1.615 -12.279,2032.706 -4638.6499,1.615 19.5828,569.038"
2316 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2317 <g
2318 style="fill:none;stroke-width:0.025in"
2319 transform="translate(1739.0986,17188.625)"
2320 id="g3188-6">
2321 <text
2322 xml:space="preserve"
2323 x="3305.5364"
2324 y="13255.592"
2325 font-style="normal"
2326 font-weight="bold"
2327 font-size="192"
2328 id="text202-1"
2329 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2330 <g
2331 id="g3107-5"
2332 transform="translate(947.90548,11584.029)">
2333 <rect
2334 id="rect112-94"
2335 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2336 rx="0"
2337 height="1370.8721"
2338 width="2809.1992"
2339 y="949.37109"
2340 x="2084.55" />
2341 <rect
2342 id="rect112-3-90"
2343 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2344 rx="0"
2345 height="1294.8468"
2346 width="2809.1992"
2347 y="1025.3964"
2348 x="2084.55" />
2349 </g>
2350 <text
2351 xml:space="preserve"
2352 x="5452.3052"
2353 y="13844.535"
2354 font-style="normal"
2355 font-weight="bold"
2356 font-size="192"
2357 id="text202-7-5-1-2-3-7-9"
2358 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2359 sodipodi:linespacing="125%"><tspan
2360 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2361 id="tspan3104-6-5-1">Root</tspan></text>
2362 </g>
2363 <g
2364 style="fill:none;stroke-width:0.025in"
2365 transform="translate(1618.6352,17224.992)"
2366 id="g3147-1">
2367 <g
2368 style="fill:none;stroke-width:0.025in"
2369 id="g3107-6-1"
2370 transform="translate(3054.6101,13760.052)">
2371 <rect
2372 id="rect112-7-5"
2373 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2374 rx="0"
2375 height="1370.8721"
2376 width="2809.1992"
2377 y="949.37109"
2378 x="2084.55" />
2379 <rect
2380 id="rect112-3-5-9"
2381 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2382 rx="0"
2383 height="1294.8468"
2384 width="2809.1992"
2385 y="1025.3964"
2386 x="2084.55" />
2387 </g>
2388 <text
2389 xml:space="preserve"
2390 x="5392.3345"
2391 y="15407.104"
2392 font-style="normal"
2393 font-weight="bold"
2394 font-size="192"
2395 id="text202-6-7"
2396 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2397 </g>
2398 <g
2399 style="fill:none;stroke-width:0.025in"
2400 transform="translate(2469.7158,17188.625)"
2401 id="g3153-7">
2402 <g
2403 style="fill:none;stroke-width:0.025in"
2404 id="g3107-6-9-67"
2405 transform="translate(5213.0126,16008.808)">
2406 <rect
2407 id="rect112-7-1-36"
2408 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2409 rx="0"
2410 height="1370.8721"
2411 width="2809.1992"
2412 y="949.37109"
2413 x="2084.55" />
2414 <rect
2415 id="rect112-3-5-2-5"
2416 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2417 rx="0"
2418 height="1294.8468"
2419 width="2809.1992"
2420 y="1025.3964"
2421 x="2084.55" />
2422 </g>
2423 <text
2424 xml:space="preserve"
2425 x="9717.4141"
2426 y="18269.314"
2427 font-style="normal"
2428 font-weight="bold"
2429 font-size="192"
2430 id="text202-7-5-1-2-3-7-35-7-63"
2431 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2432 sodipodi:linespacing="125%"><tspan
2433 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2434 id="tspan3104-6-5-6-0-94">Leaf</tspan></text>
2435 <text
2436 xml:space="preserve"
2437 x="7536.4883"
2438 y="17640.934"
2439 font-style="normal"
2440 font-weight="bold"
2441 font-size="192"
2442 id="text202-9"
2443 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2444 </g>
2445 <g
2446 transform="translate(-2353.8462,17224.992)"
2447 id="g3147-3-8"
2448 style="fill:none;stroke-width:0.025in">
2449 <g
2450 style="fill:none;stroke-width:0.025in"
2451 id="g3107-6-6-1"
2452 transform="translate(3054.6101,13760.052)">
2453 <rect
2454 id="rect112-7-0-2"
2455 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2456 rx="0"
2457 height="1370.8721"
2458 width="2809.1992"
2459 y="949.37109"
2460 x="2084.55" />
2461 <rect
2462 id="rect112-3-5-6-9"
2463 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2464 rx="0"
2465 height="1294.8468"
2466 width="2809.1992"
2467 y="1025.3964"
2468 x="2084.55" />
2469 </g>
2470 <text
2471 xml:space="preserve"
2472 x="5378.4146"
2473 y="15436.927"
2474 font-style="normal"
2475 font-weight="bold"
2476 font-size="192"
2477 id="text202-3"
2478 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2479 </g>
2480 <g
2481 transform="translate(-863.02613,17188.625)"
2482 id="g3153-2-3"
2483 style="fill:none;stroke-width:0.025in">
2484 <g
2485 style="fill:none;stroke-width:0.025in"
2486 id="g3107-6-9-6-9"
2487 transform="translate(5213.0126,16008.808)">
2488 <rect
2489 id="rect112-7-1-1-0"
2490 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2491 rx="0"
2492 height="1370.8721"
2493 width="2809.1992"
2494 y="949.37109"
2495 x="2084.55" />
2496 <rect
2497 id="rect112-3-5-2-8-8"
2498 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2499 rx="0"
2500 height="1294.8468"
2501 width="2809.1992"
2502 y="1025.3964"
2503 x="2084.55" />
2504 </g>
2505 <text
2506 xml:space="preserve"
2507 x="9717.4141"
2508 y="18269.314"
2509 font-style="normal"
2510 font-weight="bold"
2511 font-size="192"
2512 id="text202-7-5-1-2-3-7-35-7-7-8"
2513 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2514 sodipodi:linespacing="125%"><tspan
2515 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2516 id="tspan3104-6-5-6-0-9-5">Leaf</tspan></text>
2517 </g>
2518 <g
2519 transform="translate(-4195.7673,17188.625)"
2520 id="g3153-20-0"
2521 style="fill:none;stroke-width:0.025in">
2522 <g
2523 style="fill:none;stroke-width:0.025in"
2524 id="g3107-6-9-2-9"
2525 transform="translate(5213.0126,16008.808)">
2526 <rect
2527 id="rect112-7-1-3-6"
2528 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2529 rx="0"
2530 height="1370.8721"
2531 width="2809.1992"
2532 y="949.37109"
2533 x="2084.55" />
2534 <rect
2535 id="rect112-3-5-2-7-38"
2536 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2537 rx="0"
2538 height="1294.8468"
2539 width="2809.1992"
2540 y="1025.3964"
2541 x="2084.55" />
2542 </g>
2543 <text
2544 xml:space="preserve"
2545 x="9717.4141"
2546 y="18269.314"
2547 font-style="normal"
2548 font-weight="bold"
2549 font-size="192"
2550 id="text202-7-5-1-2-3-7-35-7-5-5"
2551 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2552 sodipodi:linespacing="125%"><tspan
2553 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2554 id="tspan3104-6-5-6-0-92-6">Leaf</tspan></text>
2555 <text
2556 xml:space="preserve"
2557 x="7520.1294"
2558 y="17673.639"
2559 font-style="normal"
2560 font-weight="bold"
2561 font-size="192"
2562 id="text202-35"
2563 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2564 </g>
2565 <g
2566 transform="translate(-7528.5085,17188.625)"
2567 id="g3153-28-1"
2568 style="fill:none;stroke-width:0.025in">
2569 <g
2570 style="fill:none;stroke-width:0.025in"
2571 id="g3107-6-9-9-1"
2572 transform="translate(5213.0126,16008.808)">
2573 <rect
2574 id="rect112-7-1-7-59"
2575 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2576 rx="0"
2577 height="1370.8721"
2578 width="2809.1992"
2579 y="949.37109"
2580 x="2084.55" />
2581 <rect
2582 id="rect112-3-5-2-3-8"
2583 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2584 rx="0"
2585 height="1294.8468"
2586 width="2809.1992"
2587 y="1025.3964"
2588 x="2084.55" />
2589 </g>
2590 <text
2591 xml:space="preserve"
2592 x="9717.4141"
2593 y="18269.314"
2594 font-style="normal"
2595 font-weight="bold"
2596 font-size="192"
2597 id="text202-7-5-1-2-3-7-35-7-6-4"
2598 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2599 sodipodi:linespacing="125%"><tspan
2600 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2601 id="tspan3104-6-5-6-0-1-8">Leaf</tspan></text>
2602 <text
2603 xml:space="preserve"
2604 x="7521.4663"
2605 y="17666.062"
2606 font-style="normal"
2607 font-weight="bold"
2608 font-size="192"
2609 id="text202-75-1"
2610 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2611 </g>
2612 <path
2613 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2614 d="m 4762.4484,31070.961 -582.9982,865.095"
2615 id="path3414-0"
2616 inkscape:connector-curvature="0" />
2617 <path
2618 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2619 d="m 7571.2303,31071.223 582.9982,865.095"
2620 id="path3414-9-30"
2621 inkscape:connector-curvature="0" />
2622 <path
2623 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2624 d="m 2811.8153,33284.138 -582.9982,865.094"
2625 id="path3414-8-4"
2626 inkscape:connector-curvature="0" />
2627 <path
2628 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2629 d="m 9556.862,33284.401 582.999,865.093"
2630 id="path3414-9-4-4"
2631 inkscape:connector-curvature="0" />
2632 <path
2633 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2634 d="m 4228.3118,33284.138 0,846.288"
2635 id="path3414-8-3-4"
2636 inkscape:connector-curvature="0"
2637 sodipodi:nodetypes="cc" />
2638 <path
2639 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2640 d="m 8105.287,33310.734 0,846.288"
2641 id="path3414-8-3-6-4"
2642 inkscape:connector-curvature="0"
2643 sodipodi:nodetypes="cc" />
2644 <text
2645 xml:space="preserve"
2646 x="6659.5469"
2647 y="34833.551"
2648 font-style="normal"
2649 font-weight="bold"
2650 font-size="192"
2651 id="text202-62"
2652 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;gpnum = rsp-&gt;gpnum</text>
2653 <path
2654 sodipodi:nodetypes="ccc"
2655 inkscape:connector-curvature="0"
2656 id="path3134-9-0-3-1-8"
2657 d="m 11248.729,43927.515 3383.749,-0.843 7.995,1860.989"
2658 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2659 <path
2660 sodipodi:nodetypes="ccc"
2661 inkscape:connector-curvature="0"
2662 id="path3134-9-0-3-1-3"
2663 d="m 14641.723,41609.377 -2.828,1541.346 -3303.353,-1.688"
2664 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2665 <path
2666 sodipodi:nodetypes="ccc"
2667 inkscape:connector-curvature="0"
2668 id="path3134-9-0-3-1-6"
2669 d="m 816.24399,43920.114 -3929.12029,17.964 20.2152,2632.051"
2670 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2671 <path
2672 sodipodi:nodetypes="ccc"
2673 inkscape:connector-curvature="0"
2674 id="path3134-9-0-3-1-3-2"
2675 d="m -3122.1199,40492.4 12.2312,2669.729 3867.53038,7.717"
2676 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2677 <path
2678 sodipodi:nodetypes="cccccccccccccccccccccccccccc"
2679 inkscape:connector-curvature="0"
2680 id="path3134-9-0-3-4"
2681 d="m 6180.0812,36613.063 -2.827,638.638 -5325.0381,35.926 -9.78989,7279.202 2659.62569,0 0,-2260.682 -1196.8316,0 0,-1861.738 1462.7942,0 0,2127.7 3723.476,0 0,1861.738 2035.5457,-11.246 -12.28,-1788.219 1191.3338,1.616 15.928,1289.854 520.347,0.202 m 0,0 -15.641,-1570.133 -2629.7318,-18.604 3.165,-2124.92 -2305.4983,-7.354 0,-2287.279 5319.2511,0 0,7180.99 m 0,0 0,19229.094 -4441.5746,0"
2682 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
2683 <rect
2684 ry="0"
2685 id="rect118-7"
2686 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
2687 rx="0"
2688 height="8254.9336"
2689 width="14128.912"
2690 y="37009.492"
2691 x="-719.34235" />
2692 <text
2693 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2694 id="text202-7-24"
2695 font-size="192"
2696 font-weight="bold"
2697 font-style="normal"
2698 y="37286.184"
2699 x="-573.74298"
2700 xml:space="preserve">rcu_gp_fqs()</text>
2701 <g
2702 style="fill:none;stroke-width:0.025in"
2703 transform="translate(1629.528,25916.616)"
2704 id="g3147-0">
2705 <g
2706 style="fill:none;stroke-width:0.025in"
2707 id="g3107-6-62"
2708 transform="translate(3054.6101,13760.052)">
2709 <rect
2710 id="rect112-7-9"
2711 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2712 rx="0"
2713 height="1370.8721"
2714 width="2809.1992"
2715 y="949.37109"
2716 x="2084.55" />
2717 <rect
2718 id="rect112-3-5-90"
2719 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2720 rx="0"
2721 height="1294.8468"
2722 width="2809.1992"
2723 y="1025.3964"
2724 x="2084.55" />
2725 </g>
2726 <text
2727 xml:space="preserve"
2728 x="5250.5327"
2729 y="15512.733"
2730 font-style="normal"
2731 font-weight="bold"
2732 font-size="192"
2733 id="text202-35-8"
2734 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
2735 </g>
2736 <g
2737 style="fill:none;stroke-width:0.025in"
2738 transform="translate(2480.6088,25880.249)"
2739 id="g3153-1">
2740 <g
2741 style="fill:none;stroke-width:0.025in"
2742 id="g3107-6-9-31"
2743 transform="translate(5213.0126,16008.808)">
2744 <rect
2745 id="rect112-7-1-10"
2746 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2747 rx="0"
2748 height="1370.8721"
2749 width="2809.1992"
2750 y="949.37109"
2751 x="2084.55" />
2752 <rect
2753 id="rect112-3-5-2-34"
2754 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2755 rx="0"
2756 height="1294.8468"
2757 width="2809.1992"
2758 y="1025.3964"
2759 x="2084.55" />
2760 </g>
2761 <text
2762 xml:space="preserve"
2763 x="9717.4141"
2764 y="18269.314"
2765 font-style="normal"
2766 font-weight="bold"
2767 font-size="192"
2768 id="text202-7-5-1-2-3-7-35-7-03"
2769 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2770 sodipodi:linespacing="125%"><tspan
2771 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2772 id="tspan3104-6-5-6-0-91">Leaf</tspan></text>
2773 </g>
2774 <g
2775 transform="translate(-2342.9531,25916.616)"
2776 id="g3147-3-9"
2777 style="fill:none;stroke-width:0.025in">
2778 <g
2779 style="fill:none;stroke-width:0.025in"
2780 id="g3107-6-6-6"
2781 transform="translate(3054.6101,13760.052)">
2782 <rect
2783 id="rect112-7-0-9"
2784 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2785 rx="0"
2786 height="1370.8721"
2787 width="2809.1992"
2788 y="949.37109"
2789 x="2084.55" />
2790 <rect
2791 id="rect112-3-5-6-3"
2792 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2793 rx="0"
2794 height="1294.8468"
2795 width="2809.1992"
2796 y="1025.3964"
2797 x="2084.55" />
2798 </g>
2799 <text
2800 xml:space="preserve"
2801 x="5284.6885"
2802 y="15500.379"
2803 font-style="normal"
2804 font-weight="bold"
2805 font-size="192"
2806 id="text202-6-3"
2807 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
2808 </g>
2809 <g
2810 transform="translate(-852.13285,25880.249)"
2811 id="g3153-2-8"
2812 style="fill:none;stroke-width:0.025in">
2813 <g
2814 style="fill:none;stroke-width:0.025in"
2815 id="g3107-6-9-6-0"
2816 transform="translate(5213.0126,16008.808)">
2817 <rect
2818 id="rect112-7-1-1-56"
2819 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2820 rx="0"
2821 height="1370.8721"
2822 width="2809.1992"
2823 y="949.37109"
2824 x="2084.55" />
2825 <rect
2826 id="rect112-3-5-2-8-6"
2827 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2828 rx="0"
2829 height="1294.8468"
2830 width="2809.1992"
2831 y="1025.3964"
2832 x="2084.55" />
2833 </g>
2834 <text
2835 xml:space="preserve"
2836 x="9717.4141"
2837 y="18269.314"
2838 font-style="normal"
2839 font-weight="bold"
2840 font-size="192"
2841 id="text202-7-5-1-2-3-7-35-7-7-4"
2842 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2843 sodipodi:linespacing="125%"><tspan
2844 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2845 id="tspan3104-6-5-6-0-9-0">Leaf</tspan></text>
2846 </g>
2847 <g
2848 transform="translate(-4184.8743,25880.249)"
2849 id="g3153-20-04"
2850 style="fill:none;stroke-width:0.025in">
2851 <g
2852 style="fill:none;stroke-width:0.025in"
2853 id="g3107-6-9-2-62"
2854 transform="translate(5213.0126,16008.808)">
2855 <rect
2856 id="rect112-7-1-3-67"
2857 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2858 rx="0"
2859 height="1370.8721"
2860 width="2809.1992"
2861 y="949.37109"
2862 x="2084.55" />
2863 <rect
2864 id="rect112-3-5-2-7-5"
2865 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2866 rx="0"
2867 height="1294.8468"
2868 width="2809.1992"
2869 y="1025.3964"
2870 x="2084.55" />
2871 </g>
2872 <text
2873 xml:space="preserve"
2874 x="9717.4141"
2875 y="18269.314"
2876 font-style="normal"
2877 font-weight="bold"
2878 font-size="192"
2879 id="text202-7-5-1-2-3-7-35-7-5-6"
2880 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2881 sodipodi:linespacing="125%"><tspan
2882 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2883 id="tspan3104-6-5-6-0-92-9">Leaf</tspan></text>
2884 </g>
2885 <g
2886 transform="translate(-7517.6112,25880.249)"
2887 id="g3153-28-8"
2888 style="fill:none;stroke-width:0.025in">
2889 <g
2890 style="fill:none;stroke-width:0.025in"
2891 id="g3107-6-9-9-7"
2892 transform="translate(5213.0126,16008.808)">
2893 <rect
2894 id="rect112-7-1-7-2"
2895 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2896 rx="0"
2897 height="1370.8721"
2898 width="2809.1992"
2899 y="949.37109"
2900 x="2084.55" />
2901 <rect
2902 id="rect112-3-5-2-3-82"
2903 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
2904 rx="0"
2905 height="1294.8468"
2906 width="2809.1992"
2907 y="1025.3964"
2908 x="2084.55" />
2909 </g>
2910 <text
2911 xml:space="preserve"
2912 x="9717.4141"
2913 y="18269.314"
2914 font-style="normal"
2915 font-weight="bold"
2916 font-size="192"
2917 id="text202-7-5-1-2-3-7-35-7-6-9"
2918 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2919 sodipodi:linespacing="125%"><tspan
2920 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2921 id="tspan3104-6-5-6-0-1-9">Leaf</tspan></text>
2922 <text
2923 xml:space="preserve"
2924 x="7428.2939"
2925 y="17707.271"
2926 font-style="normal"
2927 font-weight="bold"
2928 font-size="192"
2929 id="text202-75-6"
2930 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
2931 </g>
2932 <path
2933 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2934 d="m 4773.3421,39762.585 -582.9986,865.094"
2935 id="path3414-02"
2936 inkscape:connector-curvature="0" />
2937 <path
2938 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2939 d="m 7582.1232,39762.847 582.999,865.094"
2940 id="path3414-9-7"
2941 inkscape:connector-curvature="0" />
2942 <path
2943 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2944 d="m 2822.7083,41975.762 -582.9982,865.094"
2945 id="path3414-8-6"
2946 inkscape:connector-curvature="0" />
2947 <path
2948 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2949 d="m 9567.7542,41976.024 583.0018,865.094"
2950 id="path3414-9-4-1"
2951 inkscape:connector-curvature="0" />
2952 <path
2953 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2954 d="m 4239.2048,41975.762 0,846.288"
2955 id="path3414-8-3-3"
2956 inkscape:connector-curvature="0"
2957 sodipodi:nodetypes="cc" />
2958 <path
2959 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
2960 d="m 8116.1802,42002.358 0,846.288"
2961 id="path3414-8-3-6-2"
2962 inkscape:connector-curvature="0"
2963 sodipodi:nodetypes="cc" />
2964 <rect
2965 ry="0"
2966 id="rect118-1-1"
2967 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057924, 60.00115835;stroke-dashoffset:0"
2968 rx="0"
2969 height="7164.1621"
2970 width="13301.43"
2971 y="37551.07"
2972 x="-474.37598" />
2973 <text
2974 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2975 id="text202-7-2-5"
2976 font-size="192"
2977 font-weight="bold"
2978 font-style="normal"
2979 y="37802.488"
2980 x="-342.01831"
2981 xml:space="preserve"
2982 sodipodi:linespacing="125%">force_qs_rnp()<tspan
2983 style="font-size:192px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
2984 id="tspan3307-9" /></text>
2985 <text
2986 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
2987 id="text202-7-2-7-9"
2988 font-size="192"
2989 font-weight="bold"
2990 font-style="normal"
2991 y="38114.047"
2992 x="-334.33856"
2993 xml:space="preserve">dyntick_save_progress_counter()</text>
2994 <g
2995 style="fill:none;stroke-width:0.025in"
2996 transform="translate(1749.9916,25880.249)"
2997 id="g3188-1">
2998 <g
2999 id="g3107-4"
3000 transform="translate(947.90548,11584.029)">
3001 <rect
3002 id="rect112-91"
3003 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3004 rx="0"
3005 height="1370.8721"
3006 width="2809.1992"
3007 y="949.37109"
3008 x="2084.55" />
3009 <rect
3010 id="rect112-3-0"
3011 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3012 rx="0"
3013 height="1294.8468"
3014 width="2809.1992"
3015 y="1025.3964"
3016 x="2084.55" />
3017 </g>
3018 <text
3019 xml:space="preserve"
3020 x="5452.3052"
3021 y="13844.535"
3022 font-style="normal"
3023 font-weight="bold"
3024 font-size="192"
3025 id="text202-7-5-1-2-3-7-7"
3026 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3027 sodipodi:linespacing="125%"><tspan
3028 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3029 id="tspan3104-6-5-58">Root</tspan></text>
3030 <text
3031 xml:space="preserve"
3032 x="3158.8521"
3033 y="13313.027"
3034 font-style="normal"
3035 font-weight="bold"
3036 font-size="192"
3037 id="text202-70"
3038 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
3039 </g>
3040 <text
3041 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3042 id="text202-7-2-7-2"
3043 font-size="192"
3044 font-weight="bold"
3045 font-style="normal"
3046 y="38425.035"
3047 x="-337.79462"
3048 xml:space="preserve">rcu_implicit_dynticks_qs()</text>
3049 <text
3050 xml:space="preserve"
3051 x="9907.8887"
3052 y="43568.723"
3053 font-style="normal"
3054 font-weight="bold"
3055 font-size="192"
3056 id="text202-62-4"
3057 style="font-size:192.00001526px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
3058 <g
3059 id="g4504"
3060 transform="translate(10024.106,24062.466)">
3061 <path
3062 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
3063 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
3064 sodipodi:ry="39.550262"
3065 sodipodi:rx="65.917107"
3066 sodipodi:cy="345.54001"
3067 sodipodi:cx="319.379"
3068 id="path3089"
3069 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
3070 sodipodi:type="arc" />
3071 <text
3072 sodipodi:linespacing="125%"
3073 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3074 id="text202-7-5-1-2-80"
3075 font-size="192"
3076 font-weight="bold"
3077 font-style="normal"
3078 y="16835.086"
3079 x="4409.043"
3080 xml:space="preserve"><tspan
3081 id="tspan3104-4"
3082 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
3083 <text
3084 sodipodi:linespacing="125%"
3085 id="text3110-29"
3086 y="17055.541"
3087 x="4579.373"
3088 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3089 xml:space="preserve"><tspan
3090 y="17055.541"
3091 x="4579.373"
3092 id="tspan3112-61"
3093 sodipodi:role="line">read-side</tspan></text>
3094 <text
3095 sodipodi:linespacing="125%"
3096 id="text3114-04"
3097 y="17297.08"
3098 x="4584.8276"
3099 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3100 xml:space="preserve"><tspan
3101 y="17297.08"
3102 x="4584.8276"
3103 id="tspan3116-22"
3104 sodipodi:role="line">critical section</tspan></text>
3105 </g>
3106 <g
3107 id="g3148-9-9"
3108 transform="translate(9995.8972,46544.783)">
3109 <rect
3110 x="3592.3828"
3111 y="-4715.7246"
3112 width="3164.783"
3113 height="769.99048"
3114 rx="0"
3115 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3116 id="rect118-3-5-1-3"
3117 ry="0" />
3118 <text
3119 xml:space="preserve"
3120 x="3745.7725"
3121 y="-4418.6582"
3122 font-style="normal"
3123 font-weight="bold"
3124 font-size="192"
3125 id="text202-7-5-3-27-6"
3126 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_enter()</text>
3127 <text
3128 xml:space="preserve"
3129 x="3745.7725"
3130 y="-4165.7954"
3131 font-style="normal"
3132 font-weight="bold"
3133 font-size="192"
3134 id="text202-7-5-3-27-0-0"
3135 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
3136 </g>
3137 <g
3138 id="g3148-9-9-2"
3139 transform="translate(9995.8972,49205.888)">
3140 <rect
3141 x="3592.3828"
3142 y="-4715.7246"
3143 width="3164.783"
3144 height="769.99048"
3145 rx="0"
3146 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3147 id="rect118-3-5-1-3-6"
3148 ry="0" />
3149 <text
3150 xml:space="preserve"
3151 x="3745.7725"
3152 y="-4418.6582"
3153 font-style="normal"
3154 font-weight="bold"
3155 font-size="192"
3156 id="text202-7-5-3-27-6-1"
3157 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_dynticks_eqs_exit()</text>
3158 <text
3159 xml:space="preserve"
3160 x="3745.7725"
3161 y="-4165.7954"
3162 font-style="normal"
3163 font-weight="bold"
3164 font-size="192"
3165 id="text202-7-5-3-27-0-0-8"
3166 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">atomic_add_return()</text>
3167 </g>
3168 <g
3169 id="g4504-7"
3170 transform="translate(10042.913,29290.642)">
3171 <path
3172 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
3173 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
3174 sodipodi:ry="39.550262"
3175 sodipodi:rx="65.917107"
3176 sodipodi:cy="345.54001"
3177 sodipodi:cx="319.379"
3178 id="path3084-9"
3179 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
3180 sodipodi:type="arc" />
3181 <text
3182 sodipodi:linespacing="125%"
3183 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3184 id="text202-7-5-1-2-2"
3185 font-size="192"
3186 font-weight="bold"
3187 font-style="normal"
3188 y="16835.086"
3189 x="4409.043"
3190 xml:space="preserve"><tspan
3191 id="tspan3104-0"
3192 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
3193 <text
3194 sodipodi:linespacing="125%"
3195 id="text3110-2"
3196 y="17055.541"
3197 x="4579.373"
3198 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3199 xml:space="preserve"><tspan
3200 y="17055.541"
3201 x="4579.373"
3202 id="tspan3112-3-2"
3203 sodipodi:role="line">read-side</tspan></text>
3204 <text
3205 sodipodi:linespacing="125%"
3206 id="text3114-7"
3207 y="17297.08"
3208 x="4584.8276"
3209 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3210 xml:space="preserve"><tspan
3211 y="17297.08"
3212 x="4584.8276"
3213 id="tspan3116-5"
3214 sodipodi:role="line">critical section</tspan></text>
3215 </g>
3216 <g
3217 id="g4504-6"
3218 transform="translate(-7705.0623,22903.647)">
3219 <path
3220 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
3221 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
3222 sodipodi:ry="39.550262"
3223 sodipodi:rx="65.917107"
3224 sodipodi:cy="345.54001"
3225 sodipodi:cx="319.379"
3226 id="path3084-1"
3227 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
3228 sodipodi:type="arc" />
3229 <text
3230 sodipodi:linespacing="125%"
3231 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3232 id="text202-7-5-1-2-8"
3233 font-size="192"
3234 font-weight="bold"
3235 font-style="normal"
3236 y="16835.086"
3237 x="4409.043"
3238 xml:space="preserve"><tspan
3239 id="tspan3104-7-0"
3240 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
3241 <text
3242 sodipodi:linespacing="125%"
3243 id="text3110-9"
3244 y="17055.541"
3245 x="4579.373"
3246 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3247 xml:space="preserve"><tspan
3248 y="17055.541"
3249 x="4579.373"
3250 id="tspan3112-2"
3251 sodipodi:role="line">read-side</tspan></text>
3252 <text
3253 sodipodi:linespacing="125%"
3254 id="text3114-0"
3255 y="17297.08"
3256 x="4584.8276"
3257 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3258 xml:space="preserve"><tspan
3259 y="17297.08"
3260 x="4584.8276"
3261 id="tspan3116-2"
3262 sodipodi:role="line">critical section</tspan></text>
3263 </g>
3264 <g
3265 id="g3148-9-9-3"
3266 transform="translate(-8306.8632,45879.159)">
3267 <rect
3268 x="3592.3828"
3269 y="-4981.6865"
3270 width="3728.9751"
3271 height="2265.0989"
3272 rx="0"
3273 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3274 id="rect118-3-5-1-3-7"
3275 ry="0" />
3276 <text
3277 xml:space="preserve"
3278 x="3745.7725"
3279 y="-4684.6201"
3280 font-style="normal"
3281 font-weight="bold"
3282 font-size="192"
3283 id="text202-7-5-3-27-6-5"
3284 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_report_dead()</text>
3285 <text
3286 xml:space="preserve"
3287 x="3745.7725"
3288 y="-4431.7573"
3289 font-style="normal"
3290 font-weight="bold"
3291 font-size="192"
3292 id="text202-7-5-3-27-0-0-9"
3293 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_cleanup_dying_idle_cpu()</text>
3294 <g
3295 transform="translate(1783.3183,-5255.3491)"
3296 id="g3107-7-5"
3297 style="fill:none;stroke-width:0.025in">
3298 <rect
3299 x="2084.55"
3300 y="949.37109"
3301 width="2809.1992"
3302 height="1370.8721"
3303 rx="0"
3304 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3305 id="rect112-5-3" />
3306 <rect
3307 x="2084.55"
3308 y="1025.3964"
3309 width="2809.1992"
3310 height="1294.8468"
3311 rx="0"
3312 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3313 id="rect112-3-3-5" />
3314 </g>
3315 <text
3316 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3317 id="text202-6-6-2-6"
3318 font-size="192"
3319 font-weight="bold"
3320 font-style="normal"
3321 y="-3526.4448"
3322 x="4241.8574"
3323 xml:space="preserve">-&gt;qsmaskinitnext</text>
3324 <text
3325 sodipodi:linespacing="125%"
3326 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3327 id="text202-7-5-1-2-3-2"
3328 font-size="192"
3329 font-weight="bold"
3330 font-style="normal"
3331 y="-2987.4167"
3332 x="6305.1484"
3333 xml:space="preserve"><tspan
3334 id="tspan3104-6-9"
3335 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
3336 </g>
3337 <g
3338 id="g4504-7-2"
3339 transform="translate(-7686.2563,30073.332)">
3340 <path
3341 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
3342 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
3343 sodipodi:ry="39.550262"
3344 sodipodi:rx="65.917107"
3345 sodipodi:cy="345.54001"
3346 sodipodi:cx="319.379"
3347 id="path3084-9-2"
3348 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
3349 sodipodi:type="arc" />
3350 <text
3351 sodipodi:linespacing="125%"
3352 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3353 id="text202-7-5-1-2-2-8"
3354 font-size="192"
3355 font-weight="bold"
3356 font-style="normal"
3357 y="16835.086"
3358 x="4409.043"
3359 xml:space="preserve"><tspan
3360 id="tspan3104-0-9"
3361 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
3362 <text
3363 sodipodi:linespacing="125%"
3364 id="text3110-2-7"
3365 y="17055.541"
3366 x="4579.373"
3367 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3368 xml:space="preserve"><tspan
3369 y="17055.541"
3370 x="4579.373"
3371 id="tspan3112-3-3"
3372 sodipodi:role="line">read-side</tspan></text>
3373 <text
3374 sodipodi:linespacing="125%"
3375 id="text3114-7-6"
3376 y="17297.08"
3377 x="4584.8276"
3378 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3379 xml:space="preserve"><tspan
3380 y="17297.08"
3381 x="4584.8276"
3382 id="tspan3116-5-1"
3383 sodipodi:role="line">critical section</tspan></text>
3384 </g>
3385 <g
3386 id="g3206"
3387 transform="translate(-752.44253,40565.329)">
3388 <rect
3389 ry="0"
3390 id="rect118-3-5-1-3-1"
3391 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00058007, 60.00116001;stroke-dashoffset:0"
3392 rx="0"
3393 height="2265.0989"
3394 width="3728.9751"
3395 y="3382.2036"
3396 x="-3958.3845" />
3397 <text
3398 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3399 id="text202-7-5-3-27-6-2"
3400 font-size="192"
3401 font-weight="bold"
3402 font-style="normal"
3403 y="3679.27"
3404 x="-3804.9949"
3405 xml:space="preserve">rcu_cpu_starting()</text>
3406 <g
3407 style="fill:none;stroke-width:0.025in"
3408 id="g3107-7-5-0"
3409 transform="translate(-5767.4491,3108.5424)">
3410 <rect
3411 id="rect112-5-3-9"
3412 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3413 rx="0"
3414 height="1370.8721"
3415 width="2809.1992"
3416 y="949.37109"
3417 x="2084.55" />
3418 <rect
3419 id="rect112-3-3-5-3"
3420 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3421 rx="0"
3422 height="1294.8468"
3423 width="2809.1992"
3424 y="1025.3964"
3425 x="2084.55" />
3426 </g>
3427 <text
3428 xml:space="preserve"
3429 x="-3308.9099"
3430 y="4837.4453"
3431 font-style="normal"
3432 font-weight="bold"
3433 font-size="192"
3434 id="text202-6-6-2-6-6"
3435 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
3436 <text
3437 xml:space="preserve"
3438 x="-1245.6189"
3439 y="5376.4731"
3440 font-style="normal"
3441 font-weight="bold"
3442 font-size="192"
3443 id="text202-7-5-1-2-3-2-0"
3444 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3445 sodipodi:linespacing="125%"><tspan
3446 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3447 id="tspan3104-6-9-6">Leaf</tspan></text>
3448 </g>
3449 <path
3450 sodipodi:nodetypes="cc"
3451 inkscape:connector-curvature="0"
3452 id="path3134-9-0-3-1-3-6"
3453 d="m 10723.215,43926.861 467.335,8.625"
3454 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
3455 <path
3456 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-8)"
3457 d="m 4431.0572,60276.11 16.472,2346.582"
3458 id="path3134-9-0-3-1-9-9"
3459 inkscape:connector-curvature="0"
3460 sodipodi:nodetypes="cc" />
3461 <g
3462 style="fill:none;stroke-width:0.025in"
3463 transform="translate(-59.697399,41012.242)"
3464 id="g3188-83">
3465 <text
3466 xml:space="preserve"
3467 x="3172.5554"
3468 y="13255.592"
3469 font-style="normal"
3470 font-weight="bold"
3471 font-size="192"
3472 id="text202-80"
3473 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
3474 <g
3475 id="g3107-40"
3476 transform="translate(947.90548,11584.029)">
3477 <rect
3478 id="rect112-919"
3479 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3480 rx="0"
3481 height="1370.8721"
3482 width="2809.1992"
3483 y="949.37109"
3484 x="2084.55" />
3485 <rect
3486 id="rect112-3-6"
3487 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3488 rx="0"
3489 height="1294.8468"
3490 width="2809.1992"
3491 y="1025.3964"
3492 x="2084.55" />
3493 </g>
3494 <text
3495 xml:space="preserve"
3496 x="5452.3052"
3497 y="13844.535"
3498 font-style="normal"
3499 font-weight="bold"
3500 font-size="192"
3501 id="text202-7-5-1-2-3-7-25"
3502 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3503 sodipodi:linespacing="125%"><tspan
3504 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3505 id="tspan3104-6-5-4">Root</tspan></text>
3506 </g>
3507 <rect
3508 ry="0"
3509 id="rect118-4"
3510 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057845, 60.00115689;stroke-dashoffset:0"
3511 rx="0"
3512 height="7164.1641"
3513 width="13639.945"
3514 y="52743.297"
3515 x="-2453.8081" />
3516 <text
3517 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3518 id="text202-7-99"
3519 font-size="192"
3520 font-weight="bold"
3521 font-style="normal"
3522 y="52950.113"
3523 x="-2356.8381"
3524 xml:space="preserve">rcu_report_rnp()</text>
3525 <g
3526 style="fill:none;stroke-width:0.025in"
3527 transform="translate(-180.16099,41048.609)"
3528 id="g3147-36">
3529 <g
3530 style="fill:none;stroke-width:0.025in"
3531 id="g3107-6-0"
3532 transform="translate(3054.6101,13760.052)">
3533 <rect
3534 id="rect112-7-50"
3535 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3536 rx="0"
3537 height="1370.8721"
3538 width="2809.1992"
3539 y="949.37109"
3540 x="2084.55" />
3541 <rect
3542 id="rect112-3-5-29"
3543 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3544 rx="0"
3545 height="1294.8468"
3546 width="2809.1992"
3547 y="1025.3964"
3548 x="2084.55" />
3549 </g>
3550 </g>
3551 <g
3552 style="fill:none;stroke-width:0.025in"
3553 transform="translate(670.91971,41012.242)"
3554 id="g3153-4">
3555 <g
3556 style="fill:none;stroke-width:0.025in"
3557 id="g3107-6-9-35"
3558 transform="translate(5213.0126,16008.808)">
3559 <rect
3560 id="rect112-7-1-17"
3561 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3562 rx="0"
3563 height="1370.8721"
3564 width="2809.1992"
3565 y="949.37109"
3566 x="2084.55" />
3567 <rect
3568 id="rect112-3-5-2-4"
3569 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3570 rx="0"
3571 height="1294.8468"
3572 width="2809.1992"
3573 y="1025.3964"
3574 x="2084.55" />
3575 </g>
3576 <text
3577 xml:space="preserve"
3578 x="9717.4141"
3579 y="18269.314"
3580 font-style="normal"
3581 font-weight="bold"
3582 font-size="192"
3583 id="text202-7-5-1-2-3-7-35-7-3"
3584 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3585 sodipodi:linespacing="125%"><tspan
3586 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3587 id="tspan3104-6-5-6-0-14">Leaf</tspan></text>
3588 </g>
3589 <g
3590 transform="translate(-4152.6419,41048.609)"
3591 id="g3147-3-6"
3592 style="fill:none;stroke-width:0.025in">
3593 <g
3594 style="fill:none;stroke-width:0.025in"
3595 id="g3107-6-6-9"
3596 transform="translate(3054.6101,13760.052)">
3597 <rect
3598 id="rect112-7-0-4"
3599 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3600 rx="0"
3601 height="1370.8721"
3602 width="2809.1992"
3603 y="949.37109"
3604 x="2084.55" />
3605 <rect
3606 id="rect112-3-5-6-2"
3607 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3608 rx="0"
3609 height="1294.8468"
3610 width="2809.1992"
3611 y="1025.3964"
3612 x="2084.55" />
3613 </g>
3614 <text
3615 xml:space="preserve"
3616 x="5284.9155"
3617 y="15386.685"
3618 font-style="normal"
3619 font-weight="bold"
3620 font-size="192"
3621 id="text202-3-2"
3622 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
3623 </g>
3624 <g
3625 transform="translate(-2661.8217,41012.242)"
3626 id="g3153-2-6"
3627 style="fill:none;stroke-width:0.025in">
3628 <g
3629 style="fill:none;stroke-width:0.025in"
3630 id="g3107-6-9-6-4"
3631 transform="translate(5213.0126,16008.808)">
3632 <rect
3633 id="rect112-7-1-1-1"
3634 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3635 rx="0"
3636 height="1370.8721"
3637 width="2809.1992"
3638 y="949.37109"
3639 x="2084.55" />
3640 <rect
3641 id="rect112-3-5-2-8-2"
3642 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3643 rx="0"
3644 height="1294.8468"
3645 width="2809.1992"
3646 y="1025.3964"
3647 x="2084.55" />
3648 </g>
3649 <text
3650 xml:space="preserve"
3651 x="9717.4141"
3652 y="18269.314"
3653 font-style="normal"
3654 font-weight="bold"
3655 font-size="192"
3656 id="text202-7-5-1-2-3-7-35-7-7-88"
3657 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3658 sodipodi:linespacing="125%"><tspan
3659 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3660 id="tspan3104-6-5-6-0-9-9">Leaf</tspan></text>
3661 </g>
3662 <g
3663 transform="translate(-5994.5632,41012.242)"
3664 id="g3153-20-2"
3665 style="fill:none;stroke-width:0.025in">
3666 <g
3667 style="fill:none;stroke-width:0.025in"
3668 id="g3107-6-9-2-8"
3669 transform="translate(5213.0126,16008.808)">
3670 <rect
3671 id="rect112-7-1-3-8"
3672 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3673 rx="0"
3674 height="1370.8721"
3675 width="2809.1992"
3676 y="949.37109"
3677 x="2084.55" />
3678 <rect
3679 id="rect112-3-5-2-7-8"
3680 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3681 rx="0"
3682 height="1294.8468"
3683 width="2809.1992"
3684 y="1025.3964"
3685 x="2084.55" />
3686 </g>
3687 <text
3688 xml:space="preserve"
3689 x="9717.4141"
3690 y="18269.314"
3691 font-style="normal"
3692 font-weight="bold"
3693 font-size="192"
3694 id="text202-7-5-1-2-3-7-35-7-5-68"
3695 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3696 sodipodi:linespacing="125%"><tspan
3697 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3698 id="tspan3104-6-5-6-0-92-3">Leaf</tspan></text>
3699 </g>
3700 <g
3701 transform="translate(-9327.3041,41012.242)"
3702 id="g3153-28-83"
3703 style="fill:none;stroke-width:0.025in">
3704 <g
3705 style="fill:none;stroke-width:0.025in"
3706 id="g3107-6-9-9-3"
3707 transform="translate(5213.0126,16008.808)">
3708 <rect
3709 id="rect112-7-1-7-3"
3710 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3711 rx="0"
3712 height="1370.8721"
3713 width="2809.1992"
3714 y="949.37109"
3715 x="2084.55" />
3716 <rect
3717 id="rect112-3-5-2-3-80"
3718 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3719 rx="0"
3720 height="1294.8468"
3721 width="2809.1992"
3722 y="1025.3964"
3723 x="2084.55" />
3724 </g>
3725 <text
3726 xml:space="preserve"
3727 x="9717.4141"
3728 y="18269.314"
3729 font-style="normal"
3730 font-weight="bold"
3731 font-size="192"
3732 id="text202-7-5-1-2-3-7-35-7-6-47"
3733 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3734 sodipodi:linespacing="125%"><tspan
3735 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3736 id="tspan3104-6-5-6-0-1-6">Leaf</tspan></text>
3737 <text
3738 xml:space="preserve"
3739 x="7422.3945"
3740 y="17661.012"
3741 font-style="normal"
3742 font-weight="bold"
3743 font-size="192"
3744 id="text202-67"
3745 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
3746 </g>
3747 <path
3748 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3749 d="m 2963.6526,54894.579 -582.9982,865.092"
3750 id="path3414-89"
3751 inkscape:connector-curvature="0" />
3752 <path
3753 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3754 d="m 5772.4344,54894.841 582.9982,865.092"
3755 id="path3414-9-0"
3756 inkscape:connector-curvature="0" />
3757 <path
3758 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3759 d="m 1013.0193,57107.754 -582.99819,865.094"
3760 id="path3414-8-68"
3761 inkscape:connector-curvature="0" />
3762 <path
3763 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3764 d="m 7758.0666,57108.016 583,865.094"
3765 id="path3414-9-4-79"
3766 inkscape:connector-curvature="0" />
3767 <path
3768 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3769 d="m 2429.5159,57107.754 0,846.288"
3770 id="path3414-8-3-0"
3771 inkscape:connector-curvature="0"
3772 sodipodi:nodetypes="cc" />
3773 <path
3774 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
3775 d="m 6306.4911,57134.35 0,846.288"
3776 id="path3414-8-3-6-3"
3777 inkscape:connector-curvature="0"
3778 sodipodi:nodetypes="cc" />
3779 <path
3780 sodipodi:nodetypes="cccccccccccccccc"
3781 inkscape:connector-curvature="0"
3782 id="path3134-9-0-3-33"
3783 d="m 4421.0737,51833.378 -2.8276,1315.669 -5343.84362,17.119 -2.8276,6561.745 2039.08002,17.963 -2.7043,-2144.141 -491.67069,-0.211 -2.7042,-1993.689 1487.71819,-4.728 -17.8001,1812.453 2017.2374,-7.643 4.9532,-2151.571 -1405.5263,11.162 -10.9191,-1891.146 1739.2165,-2.718 0.1197,7086.03"
3784 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
3785 <path
3786 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
3787 d="m 4432.9209,44194.481 8.8008,4666.688 -2616.9163,17.119 15.9788,1446.406 2603.2718,-0.843 -29.6181,2086.665"
3788 id="path3134-9-0-3-1-7"
3789 inkscape:connector-curvature="0"
3790 sodipodi:nodetypes="cccccc" />
3791 <path
3792 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
3793 d="m 4423.9777,48861.171 2616.9159,17.119 -15.979,1465.213 -2584.4649,-19.65"
3794 id="path3134-9-0-3-1-9"
3795 inkscape:connector-curvature="0"
3796 sodipodi:nodetypes="cccc" />
3797 <g
3798 transform="translate(-1706.1312,54634.242)"
3799 id="g3115">
3800 <rect
3801 x="4485.6865"
3802 y="-8571.0352"
3803 width="3296.428"
3804 height="2199.2754"
3805 rx="0"
3806 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057923, 60.00115859;stroke-dashoffset:0"
3807 id="rect118-3-3"
3808 ry="0" />
3809 <g
3810 style="fill:none;stroke-width:0.025in"
3811 id="g3107-7-2"
3812 transform="translate(2656.673,-8952.2968)">
3813 <rect
3814 id="rect112-5-6"
3815 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3816 rx="0"
3817 height="1370.8721"
3818 width="2809.1992"
3819 y="949.37109"
3820 x="2084.55" />
3821 <rect
3822 id="rect112-3-3-52"
3823 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
3824 rx="0"
3825 height="1294.8468"
3826 width="2809.1992"
3827 y="1025.3964"
3828 x="2084.55" />
3829 </g>
3830 <text
3831 xml:space="preserve"
3832 x="4714.3018"
3833 y="-8349.1943"
3834 font-style="normal"
3835 font-weight="bold"
3836 font-size="192"
3837 id="text202-7-5-6"
3838 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">note_gp_changes()</text>
3839 <text
3840 xml:space="preserve"
3841 x="5014.2954"
3842 y="-7170.978"
3843 font-style="normal"
3844 font-weight="bold"
3845 font-size="192"
3846 id="text202-6-6-5"
3847 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gpnum</text>
3848 <text
3849 xml:space="preserve"
3850 x="5035.4155"
3851 y="-7436.1636"
3852 font-style="normal"
3853 font-weight="bold"
3854 font-size="192"
3855 id="text202-6-6-2-8"
3856 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">__note_gp_changes()</text>
3857 <text
3858 xml:space="preserve"
3859 x="7162.7471"
3860 y="-6692.6006"
3861 font-style="normal"
3862 font-weight="bold"
3863 font-size="192"
3864 id="text202-7-5-1-2-3-79"
3865 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3866 sodipodi:linespacing="125%"><tspan
3867 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
3868 id="tspan3104-6-6">Leaf</tspan></text>
3869 </g>
3870 <g
3871 transform="translate(-3299.9731,54048.57)"
3872 id="g3148">
3873 <rect
3874 ry="0"
3875 id="rect118-3-5"
3876 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3877 rx="0"
3878 height="412.66794"
3879 width="3240.0085"
3880 y="-4640.499"
3881 x="3517.1572" />
3882 <text
3883 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3884 id="text202-7-5-3"
3885 font-size="192"
3886 font-weight="bold"
3887 font-style="normal"
3888 y="-4418.6582"
3889 x="3745.7725"
3890 xml:space="preserve">rcu_node_context_switch()</text>
3891 </g>
3892 <g
3893 transform="translate(1881.1886,54048.57)"
3894 id="g3148-5">
3895 <rect
3896 ry="0"
3897 id="rect118-3-5-6"
3898 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3899 rx="0"
3900 height="412.66794"
3901 width="3240.0085"
3902 y="-4640.499"
3903 x="3517.1572" />
3904 <text
3905 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3906 id="text202-7-5-3-2"
3907 font-size="192"
3908 font-weight="bold"
3909 font-style="normal"
3910 y="-4418.6582"
3911 x="3745.7725"
3912 xml:space="preserve">rcu_check_callbacks()</text>
3913 </g>
3914 <g
3915 transform="translate(-850.30204,55463.106)"
3916 id="g3148-9">
3917 <rect
3918 ry="0"
3919 id="rect118-3-5-1"
3920 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
3921 rx="0"
3922 height="864.02148"
3923 width="3540.9114"
3924 y="-4640.499"
3925 x="3517.1572" />
3926 <text
3927 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3928 id="text202-7-5-3-27"
3929 font-size="192"
3930 font-weight="bold"
3931 font-style="normal"
3932 y="-4418.6582"
3933 x="3745.7725"
3934 xml:space="preserve">rcu_process_callbacks()</text>
3935 <text
3936 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3937 id="text202-7-5-3-27-0"
3938 font-size="192"
3939 font-weight="bold"
3940 font-style="normal"
3941 y="-4165.7954"
3942 x="3745.7725"
3943 xml:space="preserve">rcu_check_quiescent_state())</text>
3944 <text
3945 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3946 id="text202-7-5-3-27-0-9"
3947 font-size="192"
3948 font-weight="bold"
3949 font-style="normal"
3950 y="-3914.085"
3951 x="3745.7725"
3952 xml:space="preserve">rcu__report_qs_rdp())</text>
3953 </g>
3954 <g
3955 id="g4504-3"
3956 transform="translate(3886.2577,30763.697)">
3957 <path
3958 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
3959 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
3960 sodipodi:ry="39.550262"
3961 sodipodi:rx="65.917107"
3962 sodipodi:cy="345.54001"
3963 sodipodi:cx="319.379"
3964 id="path3084-6-0"
3965 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
3966 sodipodi:type="arc" />
3967 <text
3968 sodipodi:linespacing="125%"
3969 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
3970 id="text202-7-5-1-2-7"
3971 font-size="192"
3972 font-weight="bold"
3973 font-style="normal"
3974 y="16835.086"
3975 x="4409.043"
3976 xml:space="preserve"><tspan
3977 id="tspan3104-5"
3978 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
3979 <text
3980 sodipodi:linespacing="125%"
3981 id="text3110-3"
3982 y="17055.541"
3983 x="4579.373"
3984 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3985 xml:space="preserve"><tspan
3986 y="17055.541"
3987 x="4579.373"
3988 id="tspan3112-5"
3989 sodipodi:role="line">read-side</tspan></text>
3990 <text
3991 sodipodi:linespacing="125%"
3992 id="text3114-6"
3993 y="17297.08"
3994 x="4584.8276"
3995 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
3996 xml:space="preserve"><tspan
3997 y="17297.08"
3998 x="4584.8276"
3999 id="tspan3116-2-4"
4000 sodipodi:role="line">critical section</tspan></text>
4001 </g>
4002 <g
4003 id="g4504-3-9-1"
4004 transform="translate(3886.2577,34216.283)">
4005 <path
4006 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
4007 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4008 sodipodi:ry="39.550262"
4009 sodipodi:rx="65.917107"
4010 sodipodi:cy="345.54001"
4011 sodipodi:cx="319.379"
4012 id="path3084-6-1-0"
4013 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4014 sodipodi:type="arc" />
4015 <text
4016 sodipodi:linespacing="125%"
4017 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4018 id="text202-7-5-1-2-7-2-4"
4019 font-size="192"
4020 font-weight="bold"
4021 font-style="normal"
4022 y="16835.086"
4023 x="4409.043"
4024 xml:space="preserve"><tspan
4025 id="tspan3104-5-7-8"
4026 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
4027 <text
4028 sodipodi:linespacing="125%"
4029 id="text3110-3-0-7"
4030 y="17055.541"
4031 x="4579.373"
4032 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4033 xml:space="preserve"><tspan
4034 y="17055.541"
4035 x="4579.373"
4036 id="tspan3112-5-9-0"
4037 sodipodi:role="line">read-side</tspan></text>
4038 <text
4039 sodipodi:linespacing="125%"
4040 id="text3114-6-3-8"
4041 y="17297.08"
4042 x="4584.8276"
4043 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4044 xml:space="preserve"><tspan
4045 y="17297.08"
4046 x="4584.8276"
4047 id="tspan3116-2-6-6"
4048 sodipodi:role="line">critical section</tspan></text>
4049 </g>
4050 <g
4051 id="g4504-3-0"
4052 transform="translate(-4075.0211,30763.697)">
4053 <path
4054 transform="matrix(13.298129,0,0,13.298129,228.84485,12456.379)"
4055 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4056 sodipodi:ry="39.550262"
4057 sodipodi:rx="65.917107"
4058 sodipodi:cy="345.54001"
4059 sodipodi:cx="319.379"
4060 id="path3084-6-6"
4061 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4062 sodipodi:type="arc" />
4063 <text
4064 sodipodi:linespacing="125%"
4065 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4066 id="text202-7-5-1-2-7-26"
4067 font-size="192"
4068 font-weight="bold"
4069 font-style="normal"
4070 y="16835.086"
4071 x="4409.043"
4072 xml:space="preserve"><tspan
4073 id="tspan3104-5-1"
4074 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
4075 <text
4076 sodipodi:linespacing="125%"
4077 id="text3110-3-8"
4078 y="17055.541"
4079 x="4579.373"
4080 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4081 xml:space="preserve"><tspan
4082 y="17055.541"
4083 x="4579.373"
4084 id="tspan3112-5-7"
4085 sodipodi:role="line">read-side</tspan></text>
4086 <text
4087 sodipodi:linespacing="125%"
4088 id="text3114-6-9"
4089 y="17297.08"
4090 x="4584.8276"
4091 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4092 xml:space="preserve"><tspan
4093 y="17297.08"
4094 x="4584.8276"
4095 id="tspan3116-2-2"
4096 sodipodi:role="line">critical section</tspan></text>
4097 </g>
4098 <g
4099 id="g4504-3-9-0"
4100 transform="translate(-4181.4064,34216.283)">
4101 <path
4102 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
4103 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4104 sodipodi:ry="39.550262"
4105 sodipodi:rx="65.917107"
4106 sodipodi:cy="345.54001"
4107 sodipodi:cx="319.379"
4108 id="path3084-6-1-2"
4109 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4110 sodipodi:type="arc" />
4111 <text
4112 sodipodi:linespacing="125%"
4113 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4114 id="text202-7-5-1-2-7-2-3"
4115 font-size="192"
4116 font-weight="bold"
4117 font-style="normal"
4118 y="16835.086"
4119 x="4409.043"
4120 xml:space="preserve"><tspan
4121 id="tspan3104-5-7-7"
4122 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
4123 <text
4124 sodipodi:linespacing="125%"
4125 id="text3110-3-0-5"
4126 y="17055.541"
4127 x="4579.373"
4128 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4129 xml:space="preserve"><tspan
4130 y="17055.541"
4131 x="4579.373"
4132 id="tspan3112-5-9-9"
4133 sodipodi:role="line">read-side</tspan></text>
4134 <text
4135 sodipodi:linespacing="125%"
4136 id="text3114-6-3-2"
4137 y="17297.08"
4138 x="4584.8276"
4139 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4140 xml:space="preserve"><tspan
4141 y="17297.08"
4142 x="4584.8276"
4143 id="tspan3116-2-6-2"
4144 sodipodi:role="line">critical section</tspan></text>
4145 </g>
4146 <path
4147 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
4148 d="m 8448.9566,48370.097 0,2393.663"
4149 id="path3134-9-0-3-1-9-8"
4150 inkscape:connector-curvature="0"
4151 sodipodi:nodetypes="cc" />
4152 <path
4153 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
4154 d="m 390.28991,48370.097 0,2393.663"
4155 id="path3134-9-0-3-1-9-8-9"
4156 inkscape:connector-curvature="0"
4157 sodipodi:nodetypes="cc" />
4158 <g
4159 id="g4504-2"
4160 transform="translate(-143.72569,46137.076)">
4161 <path
4162 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
4163 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4164 sodipodi:ry="39.550262"
4165 sodipodi:rx="65.917107"
4166 sodipodi:cy="345.54001"
4167 sodipodi:cx="319.379"
4168 id="path3084-4"
4169 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4170 sodipodi:type="arc" />
4171 <text
4172 sodipodi:linespacing="125%"
4173 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4174 id="text202-7-5-1-2-79"
4175 font-size="192"
4176 font-weight="bold"
4177 font-style="normal"
4178 y="16835.086"
4179 x="4273.4326"
4180 xml:space="preserve"><tspan
4181 id="tspan3104-3"
4182 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Wake up</tspan></text>
4183 <text
4184 sodipodi:linespacing="125%"
4185 id="text3110-92"
4186 y="17055.541"
4187 x="4585.2246"
4188 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4189 xml:space="preserve"><tspan
4190 y="17055.541"
4191 x="4585.2246"
4192 id="tspan3112-8"
4193 sodipodi:role="line">grace-period</tspan></text>
4194 <text
4195 sodipodi:linespacing="125%"
4196 id="text3114-3"
4197 y="17297.08"
4198 x="4582.3804"
4199 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4200 xml:space="preserve"><tspan
4201 y="17297.08"
4202 x="4582.3804"
4203 id="tspan3116-0"
4204 sodipodi:role="line">kernel thread</tspan></text>
4205 </g>
4206 <g
4207 transform="translate(-707.64089,66256.889)"
4208 id="g3148-2">
4209 <rect
4210 ry="0"
4211 id="rect118-3-5-2"
4212 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
4213 rx="0"
4214 height="412.66794"
4215 width="3240.0085"
4216 y="-4640.499"
4217 x="3517.1572" />
4218 <text
4219 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4220 id="text202-7-5-3-8"
4221 font-size="192"
4222 font-weight="bold"
4223 font-style="normal"
4224 y="-4418.6582"
4225 x="4064.9268"
4226 xml:space="preserve">rcu_report_qs_rsp()</text>
4227 </g>
4228 <path
4229 sodipodi:type="arc"
4230 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4231 id="path3084-6-9"
4232 sodipodi:cx="319.379"
4233 sodipodi:cy="345.54001"
4234 sodipodi:rx="65.917107"
4235 sodipodi:ry="39.550262"
4236 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4237 transform="matrix(13.298129,0,0,13.298129,2044.7501,59781.881)" />
4238 <text
4239 xml:space="preserve"
4240 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4241 x="6294.6587"
4242 y="64194.863"
4243 id="text3110-0-1"
4244 sodipodi:linespacing="125%"><tspan
4245 sodipodi:role="line"
4246 id="tspan3112-6-5"
4247 x="6294.6587"
4248 y="64194.863">Grace-period</tspan></text>
4249 <text
4250 xml:space="preserve"
4251 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4252 x="6291.8931"
4253 y="64450.863"
4254 id="text3114-2-4"
4255 sodipodi:linespacing="125%"><tspan
4256 sodipodi:role="line"
4257 id="tspan3116-6-9"
4258 x="6291.8931"
4259 y="64450.863">kernel thread</tspan></text>
4260 <text
4261 xml:space="preserve"
4262 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4263 x="6294.3472"
4264 y="64691.398"
4265 id="text3114-1-2"
4266 sodipodi:linespacing="125%"><tspan
4267 sodipodi:role="line"
4268 id="tspan3116-8-5"
4269 x="6294.3472"
4270 y="64691.398">awakened</tspan></text>
4271 <path
4272 sodipodi:nodetypes="ccc"
4273 inkscape:connector-curvature="0"
4274 id="path3134-9-0-3-3-2-7"
4275 d="m 5310.5974,63210.805 984.0615,0 -3.9578,549.726"
4276 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
4277 <path
4278 sodipodi:nodetypes="cccccccccccccccccccccccc"
4279 inkscape:connector-curvature="0"
4280 id="path3134-9-0-3-99"
4281 d="m 6322.9337,64896.388 -2.8276,2480.757 -2316.0141,-1.687 -2.8276,2179.855 2321.1758,-0.844 -2.7042,-1843.237 2404.5142,-0.212 16.1023,1993.267 -7783.83452,-4.728 -16.79346,2120.395 2033.10318,-23.535 2.0128,-1866.561 2051.9096,14.08 2.0128,1838.298 1280.8474,-4.728 14.6081,-1830.105 1312.2491,12.923 14.608,1818.337 2000.0093,20.422 -12.279,-1841.412 1304.1722,1.616 -12.279,2032.706 -4638.6586,1.616 19.5827,569.037"
4282 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
4283 <g
4284 style="fill:none;stroke-width:0.025in"
4285 transform="translate(1874.038,53203.538)"
4286 id="g3188-7">
4287 <text
4288 xml:space="preserve"
4289 x="3199.1516"
4290 y="13255.592"
4291 font-style="normal"
4292 font-weight="bold"
4293 font-size="192"
4294 id="text202-82"
4295 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4296 <g
4297 id="g3107-53"
4298 transform="translate(947.90548,11584.029)">
4299 <rect
4300 id="rect112-49"
4301 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4302 rx="0"
4303 height="1370.8721"
4304 width="2809.1992"
4305 y="949.37109"
4306 x="2084.55" />
4307 <rect
4308 id="rect112-3-02"
4309 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4310 rx="0"
4311 height="1294.8468"
4312 width="2809.1992"
4313 y="1025.3964"
4314 x="2084.55" />
4315 </g>
4316 <text
4317 xml:space="preserve"
4318 x="5452.3052"
4319 y="13844.535"
4320 font-style="normal"
4321 font-weight="bold"
4322 font-size="192"
4323 id="text202-7-5-1-2-3-7-0"
4324 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4325 sodipodi:linespacing="125%"><tspan
4326 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4327 id="tspan3104-6-5-19">Root</tspan></text>
4328 </g>
4329 <rect
4330 ry="0"
4331 id="rect118-6"
4332 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057845, 60.00115689;stroke-dashoffset:0"
4333 rx="0"
4334 height="14649.609"
4335 width="13482.601"
4336 y="65254.539"
4337 x="-538.87689" />
4338 <text
4339 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4340 id="text202-7-21"
4341 font-size="192"
4342 font-weight="bold"
4343 font-style="normal"
4344 y="65513.996"
4345 x="-423.10056"
4346 xml:space="preserve">rcu_gp_cleanup()</text>
4347 <g
4348 style="fill:none;stroke-width:0.025in"
4349 transform="translate(1753.5744,53239.905)"
4350 id="g3147-2">
4351 <g
4352 style="fill:none;stroke-width:0.025in"
4353 id="g3107-6-07"
4354 transform="translate(3054.6101,13760.052)">
4355 <rect
4356 id="rect112-7-3"
4357 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4358 rx="0"
4359 height="1370.8721"
4360 width="2809.1992"
4361 y="949.37109"
4362 x="2084.55" />
4363 <rect
4364 id="rect112-3-5-1"
4365 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4366 rx="0"
4367 height="1294.8468"
4368 width="2809.1992"
4369 y="1025.3964"
4370 x="2084.55" />
4371 </g>
4372 <text
4373 xml:space="preserve"
4374 x="5324.5371"
4375 y="15414.598"
4376 font-style="normal"
4377 font-weight="bold"
4378 font-size="192"
4379 id="text202-753"
4380 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4381 </g>
4382 <g
4383 style="fill:none;stroke-width:0.025in"
4384 id="g3107-6-9-1"
4385 transform="translate(7817.6676,69212.346)">
4386 <rect
4387 id="rect112-7-1-90"
4388 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4389 rx="0"
4390 height="1370.8721"
4391 width="2809.1992"
4392 y="949.37109"
4393 x="2084.55" />
4394 <rect
4395 id="rect112-3-5-2-56"
4396 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4397 rx="0"
4398 height="1294.8468"
4399 width="2809.1992"
4400 y="1025.3964"
4401 x="2084.55" />
4402 </g>
4403 <text
4404 xml:space="preserve"
4405 x="12322.059"
4406 y="71472.641"
4407 font-style="normal"
4408 font-weight="bold"
4409 font-size="192"
4410 id="text202-7-5-1-2-3-7-35-7-77"
4411 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4412 sodipodi:linespacing="125%"><tspan
4413 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4414 id="tspan3104-6-5-6-0-4">Leaf</tspan></text>
4415 <text
4416 xml:space="preserve"
4417 x="10084.225"
4418 y="70903.312"
4419 font-style="normal"
4420 font-weight="bold"
4421 font-size="192"
4422 id="text202-9-0"
4423 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4424 <path
4425 sodipodi:nodetypes="ccc"
4426 inkscape:connector-curvature="0"
4427 id="path3134-9-0-3-9"
4428 d="m 6315.6122,72629.054 -20.9533,8108.684 1648.968,0"
4429 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
4430 <text
4431 xml:space="preserve"
4432 x="5092.4683"
4433 y="74111.672"
4434 font-style="normal"
4435 font-weight="bold"
4436 font-size="192"
4437 id="text202-60"
4438 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rsp-&gt;completed =</text>
4439 <g
4440 style="fill:none;stroke-width:0.025in"
4441 id="g3107-62-6"
4442 transform="translate(2814.6217,72520.234)">
4443 <rect
4444 id="rect112-6"
4445 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4446 rx="0"
4447 height="1370.8721"
4448 width="2809.1992"
4449 y="949.37109"
4450 x="2084.55" />
4451 <rect
4452 id="rect112-3-1-4"
4453 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4454 rx="0"
4455 height="1294.8468"
4456 width="2809.1992"
4457 y="1025.3964"
4458 x="2084.55" />
4459 </g>
4460 <text
4461 xml:space="preserve"
4462 x="7319.022"
4463 y="74780.406"
4464 font-style="normal"
4465 font-weight="bold"
4466 font-size="192"
4467 id="text202-7-5-1-2-3-7-8"
4468 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4469 sodipodi:linespacing="125%"><tspan
4470 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4471 id="tspan3104-6-5-7-7">Root</tspan></text>
4472 <text
4473 xml:space="preserve"
4474 x="5092.4683"
4475 y="74325.906"
4476 font-style="normal"
4477 font-weight="bold"
4478 font-size="192"
4479 id="text202-60-3"
4480 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"> rnp-&gt;completed</text>
4481 <g
4482 style="fill:none;stroke-width:0.025in"
4483 transform="translate(1746.2528,60972.572)"
4484 id="g3147-9">
4485 <g
4486 style="fill:none;stroke-width:0.025in"
4487 id="g3107-6-2"
4488 transform="translate(3054.6101,13760.052)">
4489 <rect
4490 id="rect112-7-02"
4491 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4492 rx="0"
4493 height="1370.8721"
4494 width="2809.1992"
4495 y="949.37109"
4496 x="2084.55" />
4497 <rect
4498 id="rect112-3-5-3"
4499 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4500 rx="0"
4501 height="1294.8468"
4502 width="2809.1992"
4503 y="1025.3964"
4504 x="2084.55" />
4505 </g>
4506 </g>
4507 <g
4508 style="fill:none;stroke-width:0.025in"
4509 id="g3107-6-9-5"
4510 transform="translate(7810.3459,76945.013)">
4511 <rect
4512 id="rect112-7-1-9"
4513 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4514 rx="0"
4515 height="1370.8721"
4516 width="2809.1992"
4517 y="949.37109"
4518 x="2084.55" />
4519 <rect
4520 id="rect112-3-5-2-2"
4521 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4522 rx="0"
4523 height="1294.8468"
4524 width="2809.1992"
4525 y="1025.3964"
4526 x="2084.55" />
4527 </g>
4528 <text
4529 xml:space="preserve"
4530 x="12314.736"
4531 y="79205.188"
4532 font-style="normal"
4533 font-weight="bold"
4534 font-size="192"
4535 id="text202-7-5-1-2-3-7-35-7-2"
4536 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4537 sodipodi:linespacing="125%"><tspan
4538 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4539 id="tspan3104-6-5-6-0-8">Leaf</tspan></text>
4540 <g
4541 transform="translate(-2226.2288,60972.572)"
4542 id="g3147-3-7"
4543 style="fill:none;stroke-width:0.025in">
4544 <g
4545 style="fill:none;stroke-width:0.025in"
4546 id="g3107-6-6-3"
4547 transform="translate(3054.6101,13760.052)">
4548 <rect
4549 id="rect112-7-0-6"
4550 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4551 rx="0"
4552 height="1370.8721"
4553 width="2809.1992"
4554 y="949.37109"
4555 x="2084.55" />
4556 <rect
4557 id="rect112-3-5-6-1"
4558 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4559 rx="0"
4560 height="1294.8468"
4561 width="2809.1992"
4562 y="1025.3964"
4563 x="2084.55" />
4564 </g>
4565 </g>
4566 <g
4567 transform="translate(-735.4075,60936.205)"
4568 id="g3153-2-9"
4569 style="fill:none;stroke-width:0.025in">
4570 <g
4571 style="fill:none;stroke-width:0.025in"
4572 id="g3107-6-9-6-3"
4573 transform="translate(5213.0126,16008.808)">
4574 <rect
4575 id="rect112-7-1-1-1-4"
4576 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4577 rx="0"
4578 height="1370.8721"
4579 width="2809.1992"
4580 y="949.37109"
4581 x="2084.55" />
4582 <rect
4583 id="rect112-3-5-2-8-9"
4584 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4585 rx="0"
4586 height="1294.8468"
4587 width="2809.1992"
4588 y="1025.3964"
4589 x="2084.55" />
4590 </g>
4591 <text
4592 xml:space="preserve"
4593 x="9717.4141"
4594 y="18269.314"
4595 font-style="normal"
4596 font-weight="bold"
4597 font-size="192"
4598 id="text202-7-5-1-2-3-7-35-7-7-4-8"
4599 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4600 sodipodi:linespacing="125%"><tspan
4601 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4602 id="tspan3104-6-5-6-0-9-7">Leaf</tspan></text>
4603 </g>
4604 <g
4605 transform="translate(-4068.1496,60936.205)"
4606 id="g3153-20-8"
4607 style="fill:none;stroke-width:0.025in">
4608 <g
4609 style="fill:none;stroke-width:0.025in"
4610 id="g3107-6-9-2-4"
4611 transform="translate(5213.0126,16008.808)">
4612 <rect
4613 id="rect112-7-1-3-5"
4614 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4615 rx="0"
4616 height="1370.8721"
4617 width="2809.1992"
4618 y="949.37109"
4619 x="2084.55" />
4620 <rect
4621 id="rect112-3-5-2-7-0"
4622 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4623 rx="0"
4624 height="1294.8468"
4625 width="2809.1992"
4626 y="1025.3964"
4627 x="2084.55" />
4628 </g>
4629 <text
4630 xml:space="preserve"
4631 x="9717.4141"
4632 y="18269.314"
4633 font-style="normal"
4634 font-weight="bold"
4635 font-size="192"
4636 id="text202-7-5-1-2-3-7-35-7-5-3"
4637 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4638 sodipodi:linespacing="125%"><tspan
4639 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4640 id="tspan3104-6-5-6-0-92-6-5">Leaf</tspan></text>
4641 </g>
4642 <g
4643 transform="translate(-7400.8907,60936.205)"
4644 id="g3153-28-0"
4645 style="fill:none;stroke-width:0.025in">
4646 <g
4647 style="fill:none;stroke-width:0.025in"
4648 id="g3107-6-9-9-6"
4649 transform="translate(5213.0126,16008.808)">
4650 <rect
4651 id="rect112-7-1-7-3-8"
4652 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4653 rx="0"
4654 height="1370.8721"
4655 width="2809.1992"
4656 y="949.37109"
4657 x="2084.55" />
4658 <rect
4659 id="rect112-3-5-2-3-2"
4660 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4661 rx="0"
4662 height="1294.8468"
4663 width="2809.1992"
4664 y="1025.3964"
4665 x="2084.55" />
4666 </g>
4667 <text
4668 xml:space="preserve"
4669 x="9717.4141"
4670 y="18269.314"
4671 font-style="normal"
4672 font-weight="bold"
4673 font-size="192"
4674 id="text202-7-5-1-2-3-7-35-7-6-0"
4675 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4676 sodipodi:linespacing="125%"><tspan
4677 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4678 id="tspan3104-6-5-6-0-1-6-2">Leaf</tspan></text>
4679 </g>
4680 <path
4681 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4682 d="m 4890.0661,74818.542 -582.9982,865.094"
4683 id="path3414-5"
4684 inkscape:connector-curvature="0" />
4685 <path
4686 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4687 d="m 7698.8481,74818.804 582.998,865.094"
4688 id="path3414-9-5"
4689 inkscape:connector-curvature="0" />
4690 <path
4691 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4692 d="m 2939.433,77031.719 -582.9982,865.094"
4693 id="path3414-8-4-6"
4694 inkscape:connector-curvature="0" />
4695 <path
4696 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4697 d="m 9684.4834,77031.981 583.0036,865.094"
4698 id="path3414-9-4-7-0"
4699 inkscape:connector-curvature="0" />
4700 <path
4701 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4702 d="m 4355.9293,77031.719 0,846.288"
4703 id="path3414-8-3-65"
4704 inkscape:connector-curvature="0"
4705 sodipodi:nodetypes="cc" />
4706 <path
4707 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4708 d="m 8232.9046,77058.315 0,846.288"
4709 id="path3414-8-3-6-6-6"
4710 inkscape:connector-curvature="0"
4711 sodipodi:nodetypes="cc" />
4712 <g
4713 transform="translate(-2218.9069,53239.905)"
4714 id="g3147-3-64"
4715 style="fill:none;stroke-width:0.025in">
4716 <g
4717 style="fill:none;stroke-width:0.025in"
4718 id="g3107-6-6-62"
4719 transform="translate(3054.6101,13760.052)">
4720 <rect
4721 id="rect112-7-0-8"
4722 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4723 rx="0"
4724 height="1370.8721"
4725 width="2809.1992"
4726 y="949.37109"
4727 x="2084.55" />
4728 <rect
4729 id="rect112-3-5-6-96"
4730 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4731 rx="0"
4732 height="1294.8468"
4733 width="2809.1992"
4734 y="1025.3964"
4735 x="2084.55" />
4736 </g>
4737 <text
4738 xml:space="preserve"
4739 x="5327.3057"
4740 y="15428.84"
4741 font-style="normal"
4742 font-weight="bold"
4743 font-size="192"
4744 id="text202-36"
4745 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4746 </g>
4747 <g
4748 transform="translate(-728.08545,53203.538)"
4749 id="g3153-2-0"
4750 style="fill:none;stroke-width:0.025in">
4751 <g
4752 style="fill:none;stroke-width:0.025in"
4753 id="g3107-6-9-6-7"
4754 transform="translate(5213.0126,16008.808)">
4755 <rect
4756 id="rect112-7-1-1-01"
4757 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4758 rx="0"
4759 height="1370.8721"
4760 width="2809.1992"
4761 y="949.37109"
4762 x="2084.55" />
4763 <rect
4764 id="rect112-3-5-2-8-0"
4765 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4766 rx="0"
4767 height="1294.8468"
4768 width="2809.1992"
4769 y="1025.3964"
4770 x="2084.55" />
4771 </g>
4772 <text
4773 xml:space="preserve"
4774 x="9717.4141"
4775 y="18269.314"
4776 font-style="normal"
4777 font-weight="bold"
4778 font-size="192"
4779 id="text202-7-5-1-2-3-7-35-7-7-1"
4780 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4781 sodipodi:linespacing="125%"><tspan
4782 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4783 id="tspan3104-6-5-6-0-9-3">Leaf</tspan></text>
4784 </g>
4785 <g
4786 transform="translate(-4060.8278,53203.538)"
4787 id="g3153-20-7"
4788 style="fill:none;stroke-width:0.025in">
4789 <g
4790 style="fill:none;stroke-width:0.025in"
4791 id="g3107-6-9-2-7"
4792 transform="translate(5213.0126,16008.808)">
4793 <rect
4794 id="rect112-7-1-3-2"
4795 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4796 rx="0"
4797 height="1370.8721"
4798 width="2809.1992"
4799 y="949.37109"
4800 x="2084.55" />
4801 <rect
4802 id="rect112-3-5-2-7-6"
4803 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4804 rx="0"
4805 height="1294.8468"
4806 width="2809.1992"
4807 y="1025.3964"
4808 x="2084.55" />
4809 </g>
4810 <text
4811 xml:space="preserve"
4812 x="9717.4141"
4813 y="18269.314"
4814 font-style="normal"
4815 font-weight="bold"
4816 font-size="192"
4817 id="text202-7-5-1-2-3-7-35-7-5-4"
4818 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4819 sodipodi:linespacing="125%"><tspan
4820 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4821 id="tspan3104-6-5-6-0-92-5">Leaf</tspan></text>
4822 <text
4823 xml:space="preserve"
4824 x="7486.4907"
4825 y="17670.119"
4826 font-style="normal"
4827 font-weight="bold"
4828 font-size="192"
4829 id="text202-6-2"
4830 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4831 </g>
4832 <g
4833 transform="translate(-7393.5687,53203.538)"
4834 id="g3153-28-02"
4835 style="fill:none;stroke-width:0.025in">
4836 <g
4837 style="fill:none;stroke-width:0.025in"
4838 id="g3107-6-9-9-9"
4839 transform="translate(5213.0126,16008.808)">
4840 <rect
4841 id="rect112-7-1-7-0"
4842 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4843 rx="0"
4844 height="1370.8721"
4845 width="2809.1992"
4846 y="949.37109"
4847 x="2084.55" />
4848 <rect
4849 id="rect112-3-5-2-3-9"
4850 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
4851 rx="0"
4852 height="1294.8468"
4853 width="2809.1992"
4854 y="1025.3964"
4855 x="2084.55" />
4856 </g>
4857 <text
4858 xml:space="preserve"
4859 x="9717.4141"
4860 y="18269.314"
4861 font-style="normal"
4862 font-weight="bold"
4863 font-size="192"
4864 id="text202-7-5-1-2-3-7-35-7-6-94"
4865 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4866 sodipodi:linespacing="125%"><tspan
4867 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
4868 id="tspan3104-6-5-6-0-1-5">Leaf</tspan></text>
4869 <text
4870 xml:space="preserve"
4871 x="7474.1382"
4872 y="17688.926"
4873 font-style="normal"
4874 font-weight="bold"
4875 font-size="192"
4876 id="text202-5-1"
4877 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4878 </g>
4879 <path
4880 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4881 d="m 4897.3878,67085.876 -582.9982,865.094"
4882 id="path3414-03"
4883 inkscape:connector-curvature="0" />
4884 <path
4885 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4886 d="m 7706.1695,67086.138 582.9982,865.094"
4887 id="path3414-9-78"
4888 inkscape:connector-curvature="0" />
4889 <path
4890 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4891 d="m 2946.7546,69299.053 -582.9981,865.094"
4892 id="path3414-8-8"
4893 inkscape:connector-curvature="0" />
4894 <path
4895 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4896 d="m 9691.8054,69299.315 583.0036,865.094"
4897 id="path3414-9-4-6"
4898 inkscape:connector-curvature="0" />
4899 <path
4900 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4901 d="m 4363.251,69299.053 0,846.288"
4902 id="path3414-8-3-04"
4903 inkscape:connector-curvature="0"
4904 sodipodi:nodetypes="cc" />
4905 <path
4906 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
4907 d="m 8240.2262,69325.649 0,846.288"
4908 id="path3414-8-3-6-67"
4909 inkscape:connector-curvature="0"
4910 sodipodi:nodetypes="cc" />
4911 <text
4912 xml:space="preserve"
4913 x="6742.6001"
4914 y="70882.617"
4915 font-style="normal"
4916 font-weight="bold"
4917 font-size="192"
4918 id="text202-2"
4919 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;completed = -&gt;gpnum</text>
4920 <g
4921 style="fill:none;stroke-width:0.025in"
4922 id="g4504-3-9-6"
4923 transform="translate(4290.2512,63653.93)">
4924 <path
4925 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
4926 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
4927 sodipodi:ry="39.550262"
4928 sodipodi:rx="65.917107"
4929 sodipodi:cy="345.54001"
4930 sodipodi:cx="319.379"
4931 id="path3084-6-1-09"
4932 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
4933 sodipodi:type="arc" />
4934 <text
4935 sodipodi:linespacing="125%"
4936 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
4937 id="text202-7-5-1-2-7-2-7"
4938 font-size="192"
4939 font-weight="bold"
4940 font-style="normal"
4941 y="16888.277"
4942 x="4344.877"
4943 xml:space="preserve"><tspan
4944 id="tspan3104-5-7-5"
4945 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Start of</tspan></text>
4946 <text
4947 sodipodi:linespacing="125%"
4948 id="text3110-3-0-9"
4949 y="17119.1"
4950 x="4578.7886"
4951 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4952 xml:space="preserve"><tspan
4953 y="17119.1"
4954 x="4578.7886"
4955 id="tspan3112-5-9-7"
4956 sodipodi:role="line">Next Grace</tspan></text>
4957 <text
4958 sodipodi:linespacing="125%"
4959 id="text3114-6-3-85"
4960 y="17350.271"
4961 x="4581.7886"
4962 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
4963 xml:space="preserve"><tspan
4964 y="17350.271"
4965 x="4581.7886"
4966 id="tspan3116-2-6-3"
4967 sodipodi:role="line">Period</tspan></text>
4968 </g>
4969 <path
4970 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
4971 d="m 4406.3256,79248.348 -0.01,5813.579"
4972 id="path3134-9-0-3-37"
4973 inkscape:connector-curvature="0"
4974 sodipodi:nodetypes="cc" />
4975 <path
4976 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
4977 d="m 4406.3181,82402.301 -2393.663,0.512 0,1196.832 2393.663,-0.512"
4978 id="path3134-9-0-8"
4979 inkscape:connector-curvature="0"
4980 sodipodi:nodetypes="cccc" />
4981 <path
4982 style="fill:none;stroke:#969696;stroke-width:53.19251251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
4983 d="m 4406.3181,82402.301 2393.6631,0.512 0,1196.832 -2393.6631,-0.512"
4984 id="path3134-9-0-7-7"
4985 inkscape:connector-curvature="0"
4986 sodipodi:nodetypes="cccc" />
4987 <rect
4988 x="578.16779"
4989 y="82839.773"
4990 width="2844.0972"
4991 height="360.77411"
4992 rx="0"
4993 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057845, 60.00115702;stroke-dashoffset:0"
4994 id="rect118-3-4"
4995 ry="0" />
4996 <text
4997 xml:space="preserve"
4998 x="806.7832"
4999 y="83088.211"
5000 font-style="normal"
5001 font-weight="bold"
5002 font-size="192"
5003 id="text202-7-5-19"
5004 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_check_callbacks()</text>
5005 <rect
5006 x="5314.2671"
5007 y="82817.688"
5008 width="2975.115"
5009 height="382.86298"
5010 rx="0"
5011 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057858, 60.00115716;stroke-dashoffset:0"
5012 id="rect118-36-0"
5013 ry="0" />
5014 <text
5015 xml:space="preserve"
5016 x="5409.8989"
5017 y="83063.711"
5018 font-style="normal"
5019 font-weight="bold"
5020 font-size="192"
5021 id="text202-7-9-6-9"
5022 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_cleanup_after_idle()</text>
5023 <text
5024 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
5025 id="text202-88"
5026 font-size="192"
5027 font-weight="bold"
5028 font-style="normal"
5029 y="81443.047"
5030 x="3264.7983"
5031 xml:space="preserve">rcu_advance_cbs()</text>
5032 <rect
5033 id="rect112-58"
5034 style="fill:none;stroke:#000000;stroke-width:29.99999809;stroke-linecap:butt;stroke-linejoin:miter"
5035 rx="0"
5036 height="1370.8721"
5037 width="2809.1992"
5038 y="80561.273"
5039 x="2991.7173" />
5040 <rect
5041 id="rect112-3-4"
5042 style="fill:none;stroke:#000000;stroke-width:29.99999809;stroke-linecap:butt;stroke-linejoin:miter"
5043 rx="0"
5044 height="1294.8468"
5045 width="2809.1992"
5046 y="80637.297"
5047 x="2991.7173" />
5048 <text
5049 sodipodi:linespacing="125%"
5050 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
5051 id="text202-7-5-1-2-3-7-37"
5052 font-size="192"
5053 font-weight="bold"
5054 font-style="normal"
5055 y="81872.406"
5056 x="5411.5601"
5057 xml:space="preserve"><tspan
5058 id="tspan3104-6-5-13"
5059 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
5060 <text
5061 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
5062 id="text202-3-8"
5063 font-size="192"
5064 font-weight="bold"
5065 font-style="normal"
5066 y="81232.938"
5067 x="3264.7983"
5068 xml:space="preserve">__note_gp_changes()</text>
5069 <g
5070 style="fill:none;stroke-width:0.025in"
5071 id="g3049"
5072 transform="translate(-1728.7601,83820.41)">
5073 <path
5074 transform="matrix(13.298129,0,0,13.298129,1872.6808,-2726.4833)"
5075 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
5076 sodipodi:ry="39.550262"
5077 sodipodi:rx="65.917107"
5078 sodipodi:cy="345.54001"
5079 sodipodi:cx="319.379"
5080 id="path3084-3-0"
5081 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
5082 sodipodi:type="arc" />
5083 <text
5084 sodipodi:linespacing="125%"
5085 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
5086 id="text202-7-5-1-2-6-9"
5087 font-size="192"
5088 font-weight="bold"
5089 font-style="normal"
5090 y="1785.2073"
5091 x="5717.4517"
5092 xml:space="preserve"><tspan
5093 id="tspan3104-7-7"
5094 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Phase Two</tspan></text>
5095 <text
5096 sodipodi:linespacing="125%"
5097 id="text3110-5-9"
5098 y="2005.6624"
5099 x="6119.668"
5100 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
5101 xml:space="preserve"><tspan
5102 y="2005.6624"
5103 x="6119.668"
5104 id="tspan3112-3-9"
5105 sodipodi:role="line">of Update</tspan></text>
5106 </g>
5107 <rect
5108 x="3342.4805"
5109 y="83998.438"
5110 width="1994.7195"
5111 height="664.90662"
5112 rx="0"
5113 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057818, 60.00115636;stroke-dashoffset:0"
5114 id="rect118-36-3"
5115 ry="0" />
5116 <text
5117 xml:space="preserve"
5118 x="3608.4419"
5119 y="84264.398"
5120 font-style="normal"
5121 font-weight="bold"
5122 font-size="192"
5123 id="text202-7-9-6-6"
5124 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">RCU_SOFTIRQ</text>
5125 <text
5126 xml:space="preserve"
5127 x="3608.4419"
5128 y="84530.367"
5129 font-style="normal"
5130 font-weight="bold"
5131 font-size="192"
5132 id="text202-7-9-6-6-7"
5133 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_do_batch()</text>
5134 </g>
5135</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg
new file mode 100644
index 000000000000..2c9310ba29ba
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg
@@ -0,0 +1,775 @@
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:35:03 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="613.22784"
17 height="707.07056"
18 viewBox="-44 -44 8154.7829 9398.3736"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-hotplug.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow1Send"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow1Send-36"
253 style="overflow:visible">
254 <path
255 id="path3940-0"
256 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
257 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
258 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow1Send"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="Arrow1Send-6"
267 style="overflow:visible">
268 <path
269 id="path3940-26"
270 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
271 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
272 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow1Send"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="Arrow1Send-8"
281 style="overflow:visible">
282 <path
283 id="path3940-7"
284 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
285 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
286 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 <marker
290 inkscape:stockid="Arrow1Send"
291 orient="auto"
292 refY="0"
293 refX="0"
294 id="Arrow1Send-367"
295 style="overflow:visible">
296 <path
297 id="path3940-5"
298 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
299 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
300 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
301 inkscape:connector-curvature="0" />
302 </marker>
303 <marker
304 inkscape:stockid="Arrow2Lend"
305 orient="auto"
306 refY="0"
307 refX="0"
308 id="Arrow2Lend-56"
309 style="overflow:visible">
310 <path
311 id="path3946-2"
312 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
313 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
314 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
315 inkscape:connector-curvature="0" />
316 </marker>
317 <marker
318 inkscape:stockid="Arrow2Lend"
319 orient="auto"
320 refY="0"
321 refX="0"
322 id="marker3081"
323 style="overflow:visible">
324 <path
325 id="path3083"
326 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
327 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
328 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
329 inkscape:connector-curvature="0" />
330 </marker>
331 <marker
332 inkscape:stockid="Arrow2Lend"
333 orient="auto"
334 refY="0"
335 refX="0"
336 id="marker3085"
337 style="overflow:visible">
338 <path
339 id="path3087"
340 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
341 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
342 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
343 inkscape:connector-curvature="0" />
344 </marker>
345 <marker
346 inkscape:stockid="Arrow2Lend"
347 orient="auto"
348 refY="0"
349 refX="0"
350 id="marker3089"
351 style="overflow:visible">
352 <path
353 id="path3091"
354 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
355 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
356 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
357 inkscape:connector-curvature="0" />
358 </marker>
359 <marker
360 inkscape:stockid="Arrow2Lend"
361 orient="auto"
362 refY="0"
363 refX="0"
364 id="marker3093"
365 style="overflow:visible">
366 <path
367 id="path3095"
368 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
369 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
370 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
371 inkscape:connector-curvature="0" />
372 </marker>
373 <marker
374 inkscape:stockid="Arrow2Lend"
375 orient="auto"
376 refY="0"
377 refX="0"
378 id="marker3097"
379 style="overflow:visible">
380 <path
381 id="path3099"
382 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
383 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
384 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
385 inkscape:connector-curvature="0" />
386 </marker>
387 <marker
388 inkscape:stockid="Arrow1Send"
389 orient="auto"
390 refY="0"
391 refX="0"
392 id="Arrow1Send-9"
393 style="overflow:visible">
394 <path
395 id="path3940-1"
396 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
397 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
398 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
399 inkscape:connector-curvature="0" />
400 </marker>
401 <marker
402 inkscape:stockid="Arrow1Send"
403 orient="auto"
404 refY="0"
405 refX="0"
406 id="Arrow1Send-3675"
407 style="overflow:visible">
408 <path
409 id="path3940-3"
410 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
411 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
412 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
413 inkscape:connector-curvature="0" />
414 </marker>
415 </defs>
416 <sodipodi:namedview
417 pagecolor="#ffffff"
418 bordercolor="#666666"
419 borderopacity="1"
420 objecttolerance="10"
421 gridtolerance="10"
422 guidetolerance="10"
423 inkscape:pageopacity="0"
424 inkscape:pageshadow="2"
425 inkscape:window-width="1087"
426 inkscape:window-height="1148"
427 id="namedview208"
428 showgrid="true"
429 inkscape:zoom="1.4142136"
430 inkscape:cx="325.41695"
431 inkscape:cy="364.94502"
432 inkscape:window-x="833"
433 inkscape:window-y="24"
434 inkscape:window-maximized="0"
435 inkscape:current-layer="svg2"
436 fit-margin-top="5"
437 fit-margin-right="5"
438 fit-margin-left="5"
439 fit-margin-bottom="5"
440 inkscape:snap-global="false">
441 <inkscape:grid
442 type="xygrid"
443 id="grid3154"
444 empspacing="5"
445 visible="true"
446 enabled="true"
447 snapvisiblegridlinesonly="true"
448 originx="65.610033px"
449 originy="-659.12429px" />
450 </sodipodi:namedview>
451 <path
452 sodipodi:nodetypes="cc"
453 inkscape:connector-curvature="0"
454 id="path3134-9-0-3-1-3-5"
455 d="m 5749.1555,47.151064 2.828,9167.338436"
456 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
457 <path
458 sodipodi:nodetypes="ccc"
459 inkscape:connector-curvature="0"
460 id="path3134-9-0-3-1"
461 d="m 5746.8844,5080.2018 -4107.7813,-0.8434 20.2152,2632.0511"
462 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
463 <path
464 sodipodi:nodetypes="ccc"
465 inkscape:connector-curvature="0"
466 id="path3134-9-0-3-1-3"
467 d="m 1629.8595,1633.6804 12.2312,2669.7294 4055.5945,7.7159"
468 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
469 <g
470 id="g3115"
471 transform="translate(1657.6576,12154.29)">
472 <rect
473 ry="0"
474 id="rect118-3"
475 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057923, 60.00115859;stroke-dashoffset:0"
476 rx="0"
477 height="2349.7295"
478 width="3992.2642"
479 y="-8909.5498"
480 x="2379.3704" />
481 <g
482 transform="translate(582.16224,-9085.2783)"
483 id="g3107-7"
484 style="fill:none;stroke-width:0.025in">
485 <rect
486 x="2084.55"
487 y="949.37109"
488 width="2809.1992"
489 height="1370.8721"
490 rx="0"
491 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
492 id="rect112-5" />
493 <rect
494 x="2084.55"
495 y="1025.3964"
496 width="2809.1992"
497 height="1294.8468"
498 rx="0"
499 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
500 id="rect112-3-3" />
501 </g>
502 <text
503 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
504 id="text202-6-6-2"
505 font-size="192"
506 font-weight="bold"
507 font-style="normal"
508 y="-7356.375"
509 x="2774.7393"
510 xml:space="preserve">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
511 <text
512 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
513 id="text202-7-2-7-7"
514 font-size="192"
515 font-weight="bold"
516 font-style="normal"
517 y="-8652.5312"
518 x="2466.7822"
519 xml:space="preserve">dyntick_save_progress_counter()</text>
520 <text
521 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
522 id="text202-7-2-7-2-0"
523 font-size="192"
524 font-weight="bold"
525 font-style="normal"
526 y="-8368.1475"
527 x="2463.3262"
528 xml:space="preserve">rcu_implicit_dynticks_qs()</text>
529 <text
530 sodipodi:linespacing="125%"
531 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
532 id="text202-7-5-1-2-3"
533 font-size="192"
534 font-weight="bold"
535 font-style="normal"
536 y="-6817.3472"
537 x="5103.9922"
538 xml:space="preserve"><tspan
539 id="tspan3104-6"
540 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
541 </g>
542 <g
543 id="g4504"
544 transform="translate(-2953.0872,-15955.072)">
545 <path
546 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
547 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
548 sodipodi:ry="39.550262"
549 sodipodi:rx="65.917107"
550 sodipodi:cy="345.54001"
551 sodipodi:cx="319.379"
552 id="path3084"
553 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
554 sodipodi:type="arc" />
555 <text
556 sodipodi:linespacing="125%"
557 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
558 id="text202-7-5-1-2"
559 font-size="192"
560 font-weight="bold"
561 font-style="normal"
562 y="16835.086"
563 x="4409.043"
564 xml:space="preserve"><tspan
565 id="tspan3104"
566 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
567 <text
568 sodipodi:linespacing="125%"
569 id="text3110"
570 y="17055.541"
571 x="4579.373"
572 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
573 xml:space="preserve"><tspan
574 y="17055.541"
575 x="4579.373"
576 id="tspan3112"
577 sodipodi:role="line">read-side</tspan></text>
578 <text
579 sodipodi:linespacing="125%"
580 id="text3114"
581 y="17297.08"
582 x="4584.8276"
583 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
584 xml:space="preserve"><tspan
585 y="17297.08"
586 x="4584.8276"
587 id="tspan3116"
588 sodipodi:role="line">critical section</tspan></text>
589 </g>
590 <g
591 id="g3148-9-9"
592 transform="translate(-3554.8919,7020.44)">
593 <rect
594 x="3592.3828"
595 y="-4981.6865"
596 width="3728.9751"
597 height="2265.0989"
598 rx="0"
599 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
600 id="rect118-3-5-1-3"
601 ry="0" />
602 <text
603 xml:space="preserve"
604 x="3745.7725"
605 y="-4684.6201"
606 font-style="normal"
607 font-weight="bold"
608 font-size="192"
609 id="text202-7-5-3-27-6"
610 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_report_dead()</text>
611 <text
612 xml:space="preserve"
613 x="3745.7725"
614 y="-4431.7573"
615 font-style="normal"
616 font-weight="bold"
617 font-size="192"
618 id="text202-7-5-3-27-0-0"
619 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_cleanup_dying_idle_cpu()</text>
620 <g
621 transform="translate(1783.3183,-5255.3491)"
622 id="g3107-7-5"
623 style="fill:none;stroke-width:0.025in">
624 <rect
625 x="2084.55"
626 y="949.37109"
627 width="2809.1992"
628 height="1370.8721"
629 rx="0"
630 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
631 id="rect112-5-3" />
632 <rect
633 x="2084.55"
634 y="1025.3964"
635 width="2809.1992"
636 height="1294.8468"
637 rx="0"
638 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
639 id="rect112-3-3-5" />
640 </g>
641 <text
642 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
643 id="text202-6-6-2-6"
644 font-size="192"
645 font-weight="bold"
646 font-style="normal"
647 y="-3526.4448"
648 x="4241.8574"
649 xml:space="preserve">-&gt;qsmaskinitnext</text>
650 <text
651 sodipodi:linespacing="125%"
652 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
653 id="text202-7-5-1-2-3-2"
654 font-size="192"
655 font-weight="bold"
656 font-style="normal"
657 y="-2987.4167"
658 x="6305.1484"
659 xml:space="preserve"><tspan
660 id="tspan3104-6-9"
661 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Leaf</tspan></text>
662 </g>
663 <g
664 id="g4504-7"
665 transform="translate(-2934.2808,-8785.3871)">
666 <path
667 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
668 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
669 sodipodi:ry="39.550262"
670 sodipodi:rx="65.917107"
671 sodipodi:cy="345.54001"
672 sodipodi:cx="319.379"
673 id="path3084-9"
674 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
675 sodipodi:type="arc" />
676 <text
677 sodipodi:linespacing="125%"
678 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
679 id="text202-7-5-1-2-2"
680 font-size="192"
681 font-weight="bold"
682 font-style="normal"
683 y="16835.086"
684 x="4409.043"
685 xml:space="preserve"><tspan
686 id="tspan3104-0"
687 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
688 <text
689 sodipodi:linespacing="125%"
690 id="text3110-2"
691 y="17055.541"
692 x="4579.373"
693 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
694 xml:space="preserve"><tspan
695 y="17055.541"
696 x="4579.373"
697 id="tspan3112-3"
698 sodipodi:role="line">read-side</tspan></text>
699 <text
700 sodipodi:linespacing="125%"
701 id="text3114-7"
702 y="17297.08"
703 x="4584.8276"
704 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
705 xml:space="preserve"><tspan
706 y="17297.08"
707 x="4584.8276"
708 id="tspan3116-5"
709 sodipodi:role="line">critical section</tspan></text>
710 </g>
711 <g
712 id="g3206"
713 transform="translate(3999.537,1706.6099)">
714 <rect
715 ry="0"
716 id="rect118-3-5-1-3-1"
717 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00058007, 60.00116001;stroke-dashoffset:0"
718 rx="0"
719 height="2265.0989"
720 width="3728.9751"
721 y="3382.2036"
722 x="-3958.3845" />
723 <text
724 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
725 id="text202-7-5-3-27-6-2"
726 font-size="192"
727 font-weight="bold"
728 font-style="normal"
729 y="3679.27"
730 x="-3804.9949"
731 xml:space="preserve">rcu_cpu_starting()</text>
732 <g
733 style="fill:none;stroke-width:0.025in"
734 id="g3107-7-5-0"
735 transform="translate(-5767.4491,3108.5424)">
736 <rect
737 id="rect112-5-3-9"
738 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
739 rx="0"
740 height="1370.8721"
741 width="2809.1992"
742 y="949.37109"
743 x="2084.55" />
744 <rect
745 id="rect112-3-3-5-3"
746 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
747 rx="0"
748 height="1294.8468"
749 width="2809.1992"
750 y="1025.3964"
751 x="2084.55" />
752 </g>
753 <text
754 xml:space="preserve"
755 x="-3308.9099"
756 y="4837.4453"
757 font-style="normal"
758 font-weight="bold"
759 font-size="192"
760 id="text202-6-6-2-6-6"
761 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmaskinitnext</text>
762 <text
763 xml:space="preserve"
764 x="-1245.6189"
765 y="5376.4731"
766 font-style="normal"
767 font-weight="bold"
768 font-size="192"
769 id="text202-7-5-1-2-3-2-0"
770 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
771 sodipodi:linespacing="125%"><tspan
772 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
773 id="tspan3104-6-9-6">Leaf</tspan></text>
774 </g>
775</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg
new file mode 100644
index 000000000000..de3992f4cbe1
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg
@@ -0,0 +1,1095 @@
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:35:03 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="1037.9601"
17 height="1373.2583"
18 viewBox="-44 -44 13802.927 18253.333"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="TreeRCU-qs.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Send"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Send"
43 style="overflow:visible">
44 <path
45 id="path3940"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 <marker
52 inkscape:stockid="TriangleOutS"
53 orient="auto"
54 refY="0"
55 refX="0"
56 id="TriangleOutS"
57 style="overflow:visible">
58 <path
59 id="path4073"
60 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
61 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
62 transform="scale(0.2,0.2)"
63 inkscape:connector-curvature="0" />
64 </marker>
65 <marker
66 inkscape:stockid="TriangleOutM"
67 orient="auto"
68 refY="0"
69 refX="0"
70 id="TriangleOutM"
71 style="overflow:visible">
72 <path
73 id="path4070"
74 d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
75 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
76 transform="scale(0.4,0.4)"
77 inkscape:connector-curvature="0" />
78 </marker>
79 <marker
80 inkscape:stockid="Arrow2Mend"
81 orient="auto"
82 refY="0"
83 refX="0"
84 id="Arrow2Mend"
85 style="overflow:visible">
86 <path
87 id="path3952"
88 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
89 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
90 transform="scale(-0.6,-0.6)"
91 inkscape:connector-curvature="0" />
92 </marker>
93 <marker
94 inkscape:stockid="Arrow2Lend"
95 orient="auto"
96 refY="0"
97 refX="0"
98 id="Arrow2Lend"
99 style="overflow:visible">
100 <path
101 id="path3946"
102 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
103 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
104 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
105 inkscape:connector-curvature="0" />
106 </marker>
107 <marker
108 inkscape:stockid="Arrow1Mend"
109 orient="auto"
110 refY="0"
111 refX="0"
112 id="Arrow1Mend"
113 style="overflow:visible">
114 <path
115 id="path3970"
116 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
117 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
118 transform="matrix(-0.4,0,0,-0.4,-4,0)"
119 inkscape:connector-curvature="0" />
120 </marker>
121 <marker
122 inkscape:stockid="Arrow2Mend"
123 orient="auto"
124 refY="0"
125 refX="0"
126 id="Arrow2Mend-7"
127 style="overflow:visible">
128 <path
129 inkscape:connector-curvature="0"
130 id="path3952-0"
131 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
132 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
133 transform="scale(-0.6,-0.6)" />
134 </marker>
135 <marker
136 inkscape:stockid="Arrow1Send"
137 orient="auto"
138 refY="0"
139 refX="0"
140 id="Arrow1Send-3"
141 style="overflow:visible">
142 <path
143 inkscape:connector-curvature="0"
144 id="path3940-6"
145 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
146 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
147 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
148 </marker>
149 <marker
150 inkscape:stockid="Arrow1Send"
151 orient="auto"
152 refY="0"
153 refX="0"
154 id="Arrow1Send-1"
155 style="overflow:visible">
156 <path
157 inkscape:connector-curvature="0"
158 id="path3940-2"
159 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
160 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
161 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
162 </marker>
163 <marker
164 inkscape:stockid="Arrow1Send"
165 orient="auto"
166 refY="0"
167 refX="0"
168 id="Arrow1Send-0"
169 style="overflow:visible">
170 <path
171 inkscape:connector-curvature="0"
172 id="path3940-9"
173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
174 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
176 </marker>
177 <marker
178 inkscape:stockid="Arrow2Lend"
179 orient="auto"
180 refY="0"
181 refX="0"
182 id="Arrow2Lend-3"
183 style="overflow:visible">
184 <path
185 id="path3946-1"
186 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
187 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
188 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
189 inkscape:connector-curvature="0" />
190 </marker>
191 <marker
192 inkscape:stockid="Arrow2Lend"
193 orient="auto"
194 refY="0"
195 refX="0"
196 id="Arrow2Lend-4"
197 style="overflow:visible">
198 <path
199 id="path3946-7"
200 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
203 inkscape:connector-curvature="0" />
204 </marker>
205 <marker
206 inkscape:stockid="Arrow2Lend"
207 orient="auto"
208 refY="0"
209 refX="0"
210 id="marker4880"
211 style="overflow:visible">
212 <path
213 id="path4882"
214 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
215 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
216 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
217 inkscape:connector-curvature="0" />
218 </marker>
219 <marker
220 inkscape:stockid="Arrow2Lend"
221 orient="auto"
222 refY="0"
223 refX="0"
224 id="Arrow2Lend-5"
225 style="overflow:visible">
226 <path
227 id="path3946-0"
228 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
229 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
230 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
231 inkscape:connector-curvature="0" />
232 </marker>
233 <marker
234 inkscape:stockid="Arrow2Lend"
235 orient="auto"
236 refY="0"
237 refX="0"
238 id="Arrow2Lend-6"
239 style="overflow:visible">
240 <path
241 id="path3946-10"
242 style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
243 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
244 transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
245 inkscape:connector-curvature="0" />
246 </marker>
247 <marker
248 inkscape:stockid="Arrow1Send"
249 orient="auto"
250 refY="0"
251 refX="0"
252 id="Arrow1Send-36"
253 style="overflow:visible">
254 <path
255 id="path3940-0"
256 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
257 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
258 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
259 inkscape:connector-curvature="0" />
260 </marker>
261 <marker
262 inkscape:stockid="Arrow1Send"
263 orient="auto"
264 refY="0"
265 refX="0"
266 id="Arrow1Send-6"
267 style="overflow:visible">
268 <path
269 id="path3940-26"
270 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
271 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
272 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
273 inkscape:connector-curvature="0" />
274 </marker>
275 <marker
276 inkscape:stockid="Arrow1Send"
277 orient="auto"
278 refY="0"
279 refX="0"
280 id="Arrow1Send-8"
281 style="overflow:visible">
282 <path
283 id="path3940-7"
284 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
285 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
286 transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
287 inkscape:connector-curvature="0" />
288 </marker>
289 </defs>
290 <sodipodi:namedview
291 pagecolor="#ffffff"
292 bordercolor="#666666"
293 borderopacity="1"
294 objecttolerance="10"
295 gridtolerance="10"
296 guidetolerance="10"
297 inkscape:pageopacity="0"
298 inkscape:pageshadow="2"
299 inkscape:window-width="1087"
300 inkscape:window-height="1144"
301 id="namedview208"
302 showgrid="true"
303 inkscape:zoom="0.70710678"
304 inkscape:cx="616.47598"
305 inkscape:cy="595.41964"
306 inkscape:window-x="813"
307 inkscape:window-y="28"
308 inkscape:window-maximized="0"
309 inkscape:current-layer="g4405"
310 fit-margin-top="5"
311 fit-margin-right="5"
312 fit-margin-left="5"
313 fit-margin-bottom="5">
314 <inkscape:grid
315 type="xygrid"
316 id="grid3381" />
317 </sodipodi:namedview>
318 <path
319 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send-8)"
320 d="m 6922.3555,14693.733 16.472,2346.582"
321 id="path3134-9-0-3-1-9-9"
322 inkscape:connector-curvature="0"
323 sodipodi:nodetypes="cc" />
324 <g
325 style="fill:none;stroke-width:0.025in"
326 transform="translate(2431.6011,-4570.136)"
327 id="g3188">
328 <text
329 xml:space="preserve"
330 x="3172.5554"
331 y="13255.592"
332 font-style="normal"
333 font-weight="bold"
334 font-size="192"
335 id="text202"
336 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
337 <g
338 id="g3107"
339 transform="translate(947.90548,11584.029)">
340 <rect
341 id="rect112"
342 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
343 rx="0"
344 height="1370.8721"
345 width="2809.1992"
346 y="949.37109"
347 x="2084.55" />
348 <rect
349 id="rect112-3"
350 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
351 rx="0"
352 height="1294.8468"
353 width="2809.1992"
354 y="1025.3964"
355 x="2084.55" />
356 </g>
357 <text
358 xml:space="preserve"
359 x="5452.3052"
360 y="13844.535"
361 font-style="normal"
362 font-weight="bold"
363 font-size="192"
364 id="text202-7-5-1-2-3-7"
365 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
366 sodipodi:linespacing="125%"><tspan
367 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
368 id="tspan3104-6-5">Root</tspan></text>
369 </g>
370 <rect
371 ry="0"
372 id="rect118"
373 style="fill:none;stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
374 rx="0"
375 height="7164.1636"
376 width="13639.945"
377 y="7160.9038"
378 x="37.490932" />
379 <text
380 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
381 id="text202-7"
382 font-size="192"
383 font-weight="bold"
384 font-style="normal"
385 y="7367.7192"
386 x="134.46094"
387 xml:space="preserve">rcu_report_rnp()</text>
388 <g
389 style="fill:none;stroke-width:0.025in"
390 transform="translate(2311.1375,-4533.769)"
391 id="g3147">
392 <g
393 style="fill:none;stroke-width:0.025in"
394 id="g3107-6"
395 transform="translate(3054.6101,13760.052)">
396 <rect
397 id="rect112-7"
398 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
399 rx="0"
400 height="1370.8721"
401 width="2809.1992"
402 y="949.37109"
403 x="2084.55" />
404 <rect
405 id="rect112-3-5"
406 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
407 rx="0"
408 height="1294.8468"
409 width="2809.1992"
410 y="1025.3964"
411 x="2084.55" />
412 </g>
413 </g>
414 <g
415 style="fill:none;stroke-width:0.025in"
416 transform="translate(3162.2182,-4570.136)"
417 id="g3153">
418 <g
419 style="fill:none;stroke-width:0.025in"
420 id="g3107-6-9"
421 transform="translate(5213.0126,16008.808)">
422 <rect
423 id="rect112-7-1"
424 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
425 rx="0"
426 height="1370.8721"
427 width="2809.1992"
428 y="949.37109"
429 x="2084.55" />
430 <rect
431 id="rect112-3-5-2"
432 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
433 rx="0"
434 height="1294.8468"
435 width="2809.1992"
436 y="1025.3964"
437 x="2084.55" />
438 </g>
439 <text
440 xml:space="preserve"
441 x="9717.4141"
442 y="18269.314"
443 font-style="normal"
444 font-weight="bold"
445 font-size="192"
446 id="text202-7-5-1-2-3-7-35-7"
447 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
448 sodipodi:linespacing="125%"><tspan
449 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
450 id="tspan3104-6-5-6-0">Leaf</tspan></text>
451 </g>
452 <g
453 transform="translate(-1661.3439,-4533.769)"
454 id="g3147-3"
455 style="fill:none;stroke-width:0.025in">
456 <g
457 style="fill:none;stroke-width:0.025in"
458 id="g3107-6-6"
459 transform="translate(3054.6101,13760.052)">
460 <rect
461 id="rect112-7-0"
462 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
463 rx="0"
464 height="1370.8721"
465 width="2809.1992"
466 y="949.37109"
467 x="2084.55" />
468 <rect
469 id="rect112-3-5-6"
470 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
471 rx="0"
472 height="1294.8468"
473 width="2809.1992"
474 y="1025.3964"
475 x="2084.55" />
476 </g>
477 <text
478 xml:space="preserve"
479 x="5284.9155"
480 y="15386.685"
481 font-style="normal"
482 font-weight="bold"
483 font-size="192"
484 id="text202-3"
485 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
486 </g>
487 <g
488 transform="translate(-170.52365,-4570.136)"
489 id="g3153-2"
490 style="fill:none;stroke-width:0.025in">
491 <g
492 style="fill:none;stroke-width:0.025in"
493 id="g3107-6-9-6"
494 transform="translate(5213.0126,16008.808)">
495 <rect
496 id="rect112-7-1-1"
497 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
498 rx="0"
499 height="1370.8721"
500 width="2809.1992"
501 y="949.37109"
502 x="2084.55" />
503 <rect
504 id="rect112-3-5-2-8"
505 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
506 rx="0"
507 height="1294.8468"
508 width="2809.1992"
509 y="1025.3964"
510 x="2084.55" />
511 </g>
512 <text
513 xml:space="preserve"
514 x="9717.4141"
515 y="18269.314"
516 font-style="normal"
517 font-weight="bold"
518 font-size="192"
519 id="text202-7-5-1-2-3-7-35-7-7"
520 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
521 sodipodi:linespacing="125%"><tspan
522 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
523 id="tspan3104-6-5-6-0-9">Leaf</tspan></text>
524 </g>
525 <g
526 transform="translate(-3503.2651,-4570.136)"
527 id="g3153-20"
528 style="fill:none;stroke-width:0.025in">
529 <g
530 style="fill:none;stroke-width:0.025in"
531 id="g3107-6-9-2"
532 transform="translate(5213.0126,16008.808)">
533 <rect
534 id="rect112-7-1-3"
535 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
536 rx="0"
537 height="1370.8721"
538 width="2809.1992"
539 y="949.37109"
540 x="2084.55" />
541 <rect
542 id="rect112-3-5-2-7"
543 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
544 rx="0"
545 height="1294.8468"
546 width="2809.1992"
547 y="1025.3964"
548 x="2084.55" />
549 </g>
550 <text
551 xml:space="preserve"
552 x="9717.4141"
553 y="18269.314"
554 font-style="normal"
555 font-weight="bold"
556 font-size="192"
557 id="text202-7-5-1-2-3-7-35-7-5"
558 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
559 sodipodi:linespacing="125%"><tspan
560 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
561 id="tspan3104-6-5-6-0-92">Leaf</tspan></text>
562 </g>
563 <g
564 transform="translate(-6836.0062,-4570.136)"
565 id="g3153-28"
566 style="fill:none;stroke-width:0.025in">
567 <g
568 style="fill:none;stroke-width:0.025in"
569 id="g3107-6-9-9"
570 transform="translate(5213.0126,16008.808)">
571 <rect
572 id="rect112-7-1-7"
573 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
574 rx="0"
575 height="1370.8721"
576 width="2809.1992"
577 y="949.37109"
578 x="2084.55" />
579 <rect
580 id="rect112-3-5-2-3"
581 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
582 rx="0"
583 height="1294.8468"
584 width="2809.1992"
585 y="1025.3964"
586 x="2084.55" />
587 </g>
588 <text
589 xml:space="preserve"
590 x="9717.4141"
591 y="18269.314"
592 font-style="normal"
593 font-weight="bold"
594 font-size="192"
595 id="text202-7-5-1-2-3-7-35-7-6"
596 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
597 sodipodi:linespacing="125%"><tspan
598 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
599 id="tspan3104-6-5-6-0-1">Leaf</tspan></text>
600 <text
601 xml:space="preserve"
602 x="7422.3945"
603 y="17661.012"
604 font-style="normal"
605 font-weight="bold"
606 font-size="192"
607 id="text202-67"
608 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">-&gt;qsmask &amp;= ~-&gt;grpmask</text>
609 </g>
610 <path
611 style="fill:none;stroke:#000000;stroke-width:13.29812908px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
612 d="m 5454.9508,9312.2011 -582.9982,865.0929"
613 id="path3414"
614 inkscape:connector-curvature="0" />
615 <path
616 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
617 d="m 8263.7327,9312.4631 582.9982,865.0929"
618 id="path3414-9"
619 inkscape:connector-curvature="0" />
620 <path
621 style="fill:none;stroke:#000000;stroke-width:13.29812813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
622 d="m 3504.3177,11525.377 -582.9982,865.094"
623 id="path3414-8"
624 inkscape:connector-curvature="0" />
625 <path
626 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
627 d="m 10249.365,11525.639 583,865.094"
628 id="path3414-9-4"
629 inkscape:connector-curvature="0" />
630 <path
631 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
632 d="m 4920.8141,11525.377 0,846.288"
633 id="path3414-8-3"
634 inkscape:connector-curvature="0"
635 sodipodi:nodetypes="cc" />
636 <path
637 style="fill:none;stroke:#000000;stroke-width:13.29812717px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
638 d="m 8797.7894,11551.973 0,846.288"
639 id="path3414-8-3-6"
640 inkscape:connector-curvature="0"
641 sodipodi:nodetypes="cc" />
642 <path
643 sodipodi:nodetypes="cccccccccccccccc"
644 inkscape:connector-curvature="0"
645 id="path3134-9-0-3"
646 d="m 6912.3719,6251.0009 -2.8276,1315.669 -5343.8436,17.119 -2.8276,6561.7441 2039.08,17.963 -2.7042,-2144.14 -491.6706,-0.211 -2.7042,-1993.689 1487.718,-4.728 -17.8001,1812.453 2017.2374,-7.643 4.9532,-2151.5715 -1405.5263,11.1629 -10.9191,-1891.1465 1739.2165,-2.718 0.1141,7086.0301"
647 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)" />
648 <g
649 id="g4405"
650 transform="translate(1241.222,9051.8644)">
651 <path
652 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Send)"
653 d="m 5694.6259,-9006.994 -2.828,3233.9212 -2616.9163,17.1191 15.9788,1446.406 2603.2719,-0.8434 -29.6182,2086.6656"
654 id="path3134-9-0-3-1"
655 inkscape:connector-curvature="0"
656 sodipodi:nodetypes="cccccc" />
657 <path
658 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
659 d="m 5674.0539,-5773.0705 2616.9163,17.1191 -15.9788,1465.2124 -2584.4655,-19.6498"
660 id="path3134-9-0-3-1-9"
661 inkscape:connector-curvature="0"
662 sodipodi:nodetypes="cccc" />
663 <g
664 transform="translate(-456.05505,0)"
665 id="g3115">
666 <rect
667 x="4485.6865"
668 y="-8571.0352"
669 width="3296.428"
670 height="2199.2754"
671 rx="0"
672 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057923, 60.00115859;stroke-dashoffset:0"
673 id="rect118-3"
674 ry="0" />
675 <g
676 style="fill:none;stroke-width:0.025in"
677 id="g3107-7"
678 transform="translate(2656.673,-8952.2968)">
679 <rect
680 id="rect112-5"
681 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
682 rx="0"
683 height="1370.8721"
684 width="2809.1992"
685 y="949.37109"
686 x="2084.55" />
687 <rect
688 id="rect112-3-3"
689 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
690 rx="0"
691 height="1294.8468"
692 width="2809.1992"
693 y="1025.3964"
694 x="2084.55" />
695 </g>
696 <text
697 xml:space="preserve"
698 x="4714.3018"
699 y="-8349.1943"
700 font-style="normal"
701 font-weight="bold"
702 font-size="192"
703 id="text202-7-5"
704 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">note_gp_changes()</text>
705 <text
706 xml:space="preserve"
707 x="5014.2954"
708 y="-7170.978"
709 font-style="normal"
710 font-weight="bold"
711 font-size="192"
712 id="text202-6-6"
713 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rdp-&gt;gpnum</text>
714 <text
715 xml:space="preserve"
716 x="5035.4155"
717 y="-7436.1636"
718 font-style="normal"
719 font-weight="bold"
720 font-size="192"
721 id="text202-6-6-2"
722 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">__note_gp_changes()</text>
723 <text
724 xml:space="preserve"
725 x="7162.7471"
726 y="-6692.6006"
727 font-style="normal"
728 font-weight="bold"
729 font-size="192"
730 id="text202-7-5-1-2-3"
731 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
732 sodipodi:linespacing="125%"><tspan
733 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
734 id="tspan3104-6">Leaf</tspan></text>
735 </g>
736 <g
737 transform="translate(-2049.897,-585.6713)"
738 id="g3148">
739 <rect
740 ry="0"
741 id="rect118-3-5"
742 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
743 rx="0"
744 height="412.66794"
745 width="3240.0085"
746 y="-4640.499"
747 x="3517.1572" />
748 <text
749 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
750 id="text202-7-5-3"
751 font-size="192"
752 font-weight="bold"
753 font-style="normal"
754 y="-4418.6582"
755 x="3745.7725"
756 xml:space="preserve">rcu_node_context_switch()</text>
757 </g>
758 <g
759 transform="translate(3131.2648,-585.6713)"
760 id="g3148-5">
761 <rect
762 ry="0"
763 id="rect118-3-5-6"
764 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
765 rx="0"
766 height="412.66794"
767 width="3240.0085"
768 y="-4640.499"
769 x="3517.1572" />
770 <text
771 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
772 id="text202-7-5-3-2"
773 font-size="192"
774 font-weight="bold"
775 font-style="normal"
776 y="-4418.6582"
777 x="3745.7725"
778 xml:space="preserve">rcu_check_callbacks()</text>
779 </g>
780 <g
781 transform="translate(399.7744,828.86448)"
782 id="g3148-9">
783 <rect
784 ry="0"
785 id="rect118-3-5-1"
786 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
787 rx="0"
788 height="864.02148"
789 width="3540.9114"
790 y="-4640.499"
791 x="3517.1572" />
792 <text
793 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
794 id="text202-7-5-3-27"
795 font-size="192"
796 font-weight="bold"
797 font-style="normal"
798 y="-4418.6582"
799 x="3745.7725"
800 xml:space="preserve">rcu_process_callbacks()</text>
801 <text
802 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
803 id="text202-7-5-3-27-0"
804 font-size="192"
805 font-weight="bold"
806 font-style="normal"
807 y="-4165.7954"
808 x="3745.7725"
809 xml:space="preserve">rcu_check_quiescent_state())</text>
810 <text
811 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
812 id="text202-7-5-3-27-0-9"
813 font-size="192"
814 font-weight="bold"
815 font-style="normal"
816 y="-3914.085"
817 x="3745.7725"
818 xml:space="preserve">rcu__report_qs_rdp())</text>
819 </g>
820 <g
821 id="g4504-3"
822 transform="translate(5136.3339,-23870.546)">
823 <path
824 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
825 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
826 sodipodi:ry="39.550262"
827 sodipodi:rx="65.917107"
828 sodipodi:cy="345.54001"
829 sodipodi:cx="319.379"
830 id="path3084-6"
831 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
832 sodipodi:type="arc" />
833 <text
834 sodipodi:linespacing="125%"
835 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
836 id="text202-7-5-1-2-7"
837 font-size="192"
838 font-weight="bold"
839 font-style="normal"
840 y="16835.086"
841 x="4409.043"
842 xml:space="preserve"><tspan
843 id="tspan3104-5"
844 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
845 <text
846 sodipodi:linespacing="125%"
847 id="text3110-3"
848 y="17055.541"
849 x="4579.373"
850 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
851 xml:space="preserve"><tspan
852 y="17055.541"
853 x="4579.373"
854 id="tspan3112-5"
855 sodipodi:role="line">read-side</tspan></text>
856 <text
857 sodipodi:linespacing="125%"
858 id="text3114-6"
859 y="17297.08"
860 x="4584.8276"
861 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
862 xml:space="preserve"><tspan
863 y="17297.08"
864 x="4584.8276"
865 id="tspan3116-2"
866 sodipodi:role="line">critical section</tspan></text>
867 </g>
868 <g
869 id="g4504-3-9"
870 transform="translate(5136.3339,-20417.959)">
871 <path
872 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
873 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
874 sodipodi:ry="39.550262"
875 sodipodi:rx="65.917107"
876 sodipodi:cy="345.54001"
877 sodipodi:cx="319.379"
878 id="path3084-6-1"
879 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
880 sodipodi:type="arc" />
881 <text
882 sodipodi:linespacing="125%"
883 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
884 id="text202-7-5-1-2-7-2"
885 font-size="192"
886 font-weight="bold"
887 font-style="normal"
888 y="16835.086"
889 x="4409.043"
890 xml:space="preserve"><tspan
891 id="tspan3104-5-7"
892 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
893 <text
894 sodipodi:linespacing="125%"
895 id="text3110-3-0"
896 y="17055.541"
897 x="4579.373"
898 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
899 xml:space="preserve"><tspan
900 y="17055.541"
901 x="4579.373"
902 id="tspan3112-5-9"
903 sodipodi:role="line">read-side</tspan></text>
904 <text
905 sodipodi:linespacing="125%"
906 id="text3114-6-3"
907 y="17297.08"
908 x="4584.8276"
909 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
910 xml:space="preserve"><tspan
911 y="17297.08"
912 x="4584.8276"
913 id="tspan3116-2-6"
914 sodipodi:role="line">critical section</tspan></text>
915 </g>
916 <g
917 id="g4504-3-0"
918 transform="translate(-2824.9451,-23870.546)">
919 <path
920 transform="matrix(13.298129,0,0,13.298129,228.84485,12456.379)"
921 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
922 sodipodi:ry="39.550262"
923 sodipodi:rx="65.917107"
924 sodipodi:cy="345.54001"
925 sodipodi:cx="319.379"
926 id="path3084-6-6"
927 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
928 sodipodi:type="arc" />
929 <text
930 sodipodi:linespacing="125%"
931 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
932 id="text202-7-5-1-2-7-26"
933 font-size="192"
934 font-weight="bold"
935 font-style="normal"
936 y="16835.086"
937 x="4409.043"
938 xml:space="preserve"><tspan
939 id="tspan3104-5-1"
940 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
941 <text
942 sodipodi:linespacing="125%"
943 id="text3110-3-8"
944 y="17055.541"
945 x="4579.373"
946 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
947 xml:space="preserve"><tspan
948 y="17055.541"
949 x="4579.373"
950 id="tspan3112-5-7"
951 sodipodi:role="line">read-side</tspan></text>
952 <text
953 sodipodi:linespacing="125%"
954 id="text3114-6-9"
955 y="17297.08"
956 x="4584.8276"
957 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
958 xml:space="preserve"><tspan
959 y="17297.08"
960 x="4584.8276"
961 id="tspan3116-2-2"
962 sodipodi:role="line">critical section</tspan></text>
963 </g>
964 <g
965 id="g4504-3-9-0"
966 transform="translate(-2931.3303,-20417.959)">
967 <path
968 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
969 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
970 sodipodi:ry="39.550262"
971 sodipodi:rx="65.917107"
972 sodipodi:cy="345.54001"
973 sodipodi:cx="319.379"
974 id="path3084-6-1-2"
975 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
976 sodipodi:type="arc" />
977 <text
978 sodipodi:linespacing="125%"
979 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
980 id="text202-7-5-1-2-7-2-3"
981 font-size="192"
982 font-weight="bold"
983 font-style="normal"
984 y="16835.086"
985 x="4409.043"
986 xml:space="preserve"><tspan
987 id="tspan3104-5-7-7"
988 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">RCU</tspan></text>
989 <text
990 sodipodi:linespacing="125%"
991 id="text3110-3-0-5"
992 y="17055.541"
993 x="4579.373"
994 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
995 xml:space="preserve"><tspan
996 y="17055.541"
997 x="4579.373"
998 id="tspan3112-5-9-9"
999 sodipodi:role="line">read-side</tspan></text>
1000 <text
1001 sodipodi:linespacing="125%"
1002 id="text3114-6-3-2"
1003 y="17297.08"
1004 x="4584.8276"
1005 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1006 xml:space="preserve"><tspan
1007 y="17297.08"
1008 x="4584.8276"
1009 id="tspan3116-2-6-2"
1010 sodipodi:role="line">critical section</tspan></text>
1011 </g>
1012 <path
1013 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
1014 d="m 9699.0326,-6264.1445 0,2393.6632"
1015 id="path3134-9-0-3-1-9-8"
1016 inkscape:connector-curvature="0"
1017 sodipodi:nodetypes="cc" />
1018 <path
1019 style="fill:none;stroke:#969696;stroke-width:53.19251633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
1020 d="m 1640.3664,-6264.1445 0,2393.6632"
1021 id="path3134-9-0-3-1-9-8-9"
1022 inkscape:connector-curvature="0"
1023 sodipodi:nodetypes="cc" />
1024 </g>
1025 <g
1026 id="g4504"
1027 transform="translate(2347.5727,554.69889)">
1028 <path
1029 transform="matrix(13.298129,0,0,13.298129,335.22989,12456.379)"
1030 d="m 385.2961,345.54001 c 0,21.84301 -29.51209,39.55026 -65.9171,39.55026 -36.40501,0 -65.91711,-17.70725 -65.91711,-39.55026 0,-21.84301 29.5121,-39.55026 65.91711,-39.55026 36.40501,0 65.9171,17.70725 65.9171,39.55026 z"
1031 sodipodi:ry="39.550262"
1032 sodipodi:rx="65.917107"
1033 sodipodi:cy="345.54001"
1034 sodipodi:cx="319.379"
1035 id="path3084"
1036 style="fill:#ffffa1;fill-opacity:0;stroke:#000000;stroke-width:2.25600004;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2.256, 4.512;stroke-dashoffset:0"
1037 sodipodi:type="arc" />
1038 <text
1039 sodipodi:linespacing="125%"
1040 style="font-size:192px;font-style:normal;font-weight:bold;line-height:125%;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1041 id="text202-7-5-1-2"
1042 font-size="192"
1043 font-weight="bold"
1044 font-style="normal"
1045 y="16835.086"
1046 x="4273.4326"
1047 xml:space="preserve"><tspan
1048 id="tspan3104"
1049 style="font-size:159.57754517px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">Wake up</tspan></text>
1050 <text
1051 sodipodi:linespacing="125%"
1052 id="text3110"
1053 y="17055.541"
1054 x="4585.2246"
1055 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1056 xml:space="preserve"><tspan
1057 y="17055.541"
1058 x="4585.2246"
1059 id="tspan3112"
1060 sodipodi:role="line">grace-period</tspan></text>
1061 <text
1062 sodipodi:linespacing="125%"
1063 id="text3114"
1064 y="17297.08"
1065 x="4582.3804"
1066 style="font-size:159.57754517px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
1067 xml:space="preserve"><tspan
1068 y="17297.08"
1069 x="4582.3804"
1070 id="tspan3116"
1071 sodipodi:role="line">kernel thread</tspan></text>
1072 </g>
1073 <g
1074 transform="translate(1783.6576,20674.512)"
1075 id="g3148-2">
1076 <rect
1077 ry="0"
1078 id="rect118-3-5-2"
1079 style="fill:none;stroke:#000000;stroke-width:30.00057983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057963, 60.00115926;stroke-dashoffset:0"
1080 rx="0"
1081 height="412.66794"
1082 width="3240.0085"
1083 y="-4640.499"
1084 x="3517.1572" />
1085 <text
1086 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier"
1087 id="text202-7-5-3-8"
1088 font-size="192"
1089 font-weight="bold"
1090 font-style="normal"
1091 y="-4418.6582"
1092 x="4064.9268"
1093 xml:space="preserve">rcu_report_qs_rsp()</text>
1094 </g>
1095</svg>
diff --git a/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg b/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg
new file mode 100644
index 000000000000..94c96c595aed
--- /dev/null
+++ b/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg
@@ -0,0 +1,229 @@
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:35:03 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="303.54147"
17 height="211.57945"
18 viewBox="-44 -44 4036.5336 2812.3117"
19 id="svg2"
20 version="1.1"
21 inkscape:version="0.48.4 r9939"
22 sodipodi:docname="rcu_node-lock.svg">
23 <metadata
24 id="metadata212">
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 />
32 </cc:Work>
33 </rdf:RDF>
34 </metadata>
35 <defs
36 id="defs210">
37 <marker
38 inkscape:stockid="Arrow1Mend"
39 orient="auto"
40 refY="0"
41 refX="0"
42 id="Arrow1Mend"
43 style="overflow:visible">
44 <path
45 id="path3970"
46 d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
47 style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
48 transform="matrix(-0.4,0,0,-0.4,-4,0)"
49 inkscape:connector-curvature="0" />
50 </marker>
51 </defs>
52 <sodipodi:namedview
53 pagecolor="#ffffff"
54 bordercolor="#666666"
55 borderopacity="1"
56 objecttolerance="10"
57 gridtolerance="10"
58 guidetolerance="10"
59 inkscape:pageopacity="0"
60 inkscape:pageshadow="2"
61 inkscape:window-width="1087"
62 inkscape:window-height="1144"
63 id="namedview208"
64 showgrid="false"
65 inkscape:zoom="1.0495049"
66 inkscape:cx="311.2033"
67 inkscape:cy="168.10913"
68 inkscape:window-x="833"
69 inkscape:window-y="28"
70 inkscape:window-maximized="0"
71 inkscape:current-layer="g4"
72 fit-margin-top="5"
73 fit-margin-right="5"
74 fit-margin-left="5"
75 fit-margin-bottom="5" />
76 <g
77 style="fill:none;stroke-width:0.025in"
78 id="g4"
79 transform="translate(-1905.5784,-4568.3024)">
80 <!-- Line: box -->
81 <!-- Line: box -->
82 <!-- Line: box -->
83 <!-- Line -->
84 <!-- Arrowhead on XXXpoint 5250 8100 - 5710 5790-->
85 <!-- Line -->
86 <!-- Arrowhead on XXXpoint 4050 9300 - 4512 7140-->
87 <!-- Line -->
88 <!-- Arrowhead on XXXpoint 1040 9300 - 1502 7140-->
89 <!-- Line -->
90 <!-- Arrowhead on XXXpoint 2240 8100 - 2702 5940-->
91 <!-- Line: box -->
92 <!-- Line: box -->
93 <!-- Line -->
94 <!-- Arrowhead on XXXpoint 1350 3450 - 2444 2510-->
95 <!-- Line -->
96 <!-- Arrowhead on XXXpoint 4950 3450 - 3854 2510-->
97 <!-- Line -->
98 <!-- Arrowhead on XXXpoint 4050 6600 - 4050 4290-->
99 <!-- Line -->
100 <!-- Arrowhead on XXXpoint 1050 6600 - 1050 4290-->
101 <!-- Line -->
102 <!-- Arrowhead on XXXpoint 2250 5400 - 2250 4290-->
103 <!-- Line -->
104 <!-- Arrowhead on XXXpoint 2250 8100 - 2250 6240-->
105 <!-- Line -->
106 <!-- Arrowhead on XXXpoint 1050 9300 - 1050 7440-->
107 <!-- Line -->
108 <!-- Arrowhead on XXXpoint 4050 9300 - 4050 7440-->
109 <!-- Line -->
110 <!-- Arrowhead on XXXpoint 5250 8100 - 5250 6240-->
111 <!-- Circle -->
112 <!-- Circle -->
113 <!-- Circle -->
114 <!-- Circle -->
115 <!-- Circle -->
116 <!-- Circle -->
117 <!-- Circle -->
118 <!-- Circle -->
119 <!-- Circle -->
120 <!-- Line: box -->
121 <!-- Line: box -->
122 <!-- Line: box -->
123 <!-- Line: box -->
124 <!-- Line: box -->
125 <!-- Line: box -->
126 <!-- Line: box -->
127 <!-- Line: box -->
128 <!-- Line: box -->
129 <!-- Line: box -->
130 <!-- Line -->
131 <!-- Line -->
132 <!-- Arrowhead on XXXpoint 9300 3150 - 10860 3150-->
133 <!-- Line: box -->
134 <!-- Line -->
135 <!-- Arrowhead on XXXpoint 11400 3600 - 11400 4410-->
136 <!-- Line: box -->
137 <rect
138 x="1943.0693"
139 y="4603.417"
140 width="3873.5518"
141 height="2650.6289"
142 rx="0"
143 style="stroke:#000000;stroke-width:30.00057793;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:30.00057884, 60.00115769;stroke-dashoffset:0"
144 id="rect118"
145 ry="0" />
146 <!-- Line -->
147 <!-- Arrowhead on XXXpoint 11400 5100 - 11400 5910-->
148 <!-- Line: box -->
149 <!-- Line -->
150 <!-- Arrowhead on XXXpoint 9900 4650 - 10860 4650-->
151 <!-- Line -->
152 <!-- Arrowhead on XXXpoint 9600 6150 - 10860 6150-->
153 <!-- Text -->
154 <!-- Text -->
155 <!-- Text -->
156 <!-- Text -->
157 <!-- Text -->
158 <!-- Text -->
159 <!-- Text -->
160 <!-- Text -->
161 <!-- Text -->
162 <!-- Text -->
163 <!-- Text -->
164 <!-- Text -->
165 <!-- Text -->
166 <!-- Text -->
167 <!-- Text -->
168 <!-- Text -->
169 <!-- Text -->
170 <!-- Text -->
171 <!-- Text -->
172 <!-- Text -->
173 <!-- Text -->
174 <!-- Text -->
175 <!-- Text -->
176 <!-- Text -->
177 <!-- Text -->
178 <!-- Text -->
179 <!-- Line -->
180 <!-- Arrowhead on XXXpoint 5250 5400 - 5250 4290-->
181 <!-- Line: box -->
182 <!-- Line: box -->
183 <!-- Line: box -->
184 <!-- Line: box -->
185 <!-- Text -->
186 <!-- Text -->
187 <!-- Text -->
188 <text
189 xml:space="preserve"
190 x="3105.219"
191 y="6425.6445"
192 font-style="normal"
193 font-weight="bold"
194 font-size="192"
195 id="text202"
196 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;font-family:Courier">rcu_accelerate_cbs()</text>
197 <!-- Text -->
198 <!-- Text -->
199 <g
200 id="g3107"
201 transform="translate(747.5807,4700.8888)">
202 <rect
203 id="rect112"
204 style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
205 rx="0"
206 height="1370.8721"
207 width="2809.1992"
208 y="949.37109"
209 x="2084.55" />
210 <rect
211 id="rect112-3"
212 style="fill:none;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter"
213 rx="0"
214 height="1294.8468"
215 width="2809.1992"
216 y="1025.3964"
217 x="2084.55" />
218 </g>
219 <text
220 xml:space="preserve"
221 x="2025.5763"
222 y="4825.2578"
223 font-style="normal"
224 font-weight="bold"
225 font-size="192"
226 id="text202-7"
227 style="font-size:192px;font-style:normal;font-weight:bold;text-anchor:start;fill:#000000;stroke-width:0.025in;font-family:Courier">rcu_prepare_for_idle()</text>
228 </g>
229</svg>
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt
index 96a3d81837e1..a08f928c8557 100644
--- a/Documentation/RCU/stallwarn.txt
+++ b/Documentation/RCU/stallwarn.txt
@@ -40,7 +40,9 @@ o Booting Linux using a console connection that is too slow to
40o Anything that prevents RCU's grace-period kthreads from running. 40o Anything that prevents RCU's grace-period kthreads from running.
41 This can result in the "All QSes seen" console-log message. 41 This can result in the "All QSes seen" console-log message.
42 This message will include information on when the kthread last 42 This message will include information on when the kthread last
43 ran and how often it should be expected to run. 43 ran and how often it should be expected to run. It can also
44 result in the "rcu_.*kthread starved for" console-log message,
45 which will include additional debugging information.
44 46
45o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might 47o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
46 happen to preempt a low-priority task in the middle of an RCU 48 happen to preempt a low-priority task in the middle of an RCU
@@ -60,6 +62,20 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
60 CONFIG_PREEMPT_RCU case, you might see stall-warning 62 CONFIG_PREEMPT_RCU case, you might see stall-warning
61 messages. 63 messages.
62 64
65o A periodic interrupt whose handler takes longer than the time
66 interval between successive pairs of interrupts. This can
67 prevent RCU's kthreads and softirq handlers from running.
68 Note that certain high-overhead debugging options, for example
69 the function_graph tracer, can result in interrupt handler taking
70 considerably longer than normal, which can in turn result in
71 RCU CPU stall warnings.
72
73o Testing a workload on a fast system, tuning the stall-warning
74 timeout down to just barely avoid RCU CPU stall warnings, and then
75 running the same workload with the same stall-warning timeout on a
76 slow system. Note that thermal throttling and on-demand governors
77 can cause a single system to be sometimes fast and sometimes slow!
78
63o A hardware or software issue shuts off the scheduler-clock 79o A hardware or software issue shuts off the scheduler-clock
64 interrupt on a CPU that is not in dyntick-idle mode. This 80 interrupt on a CPU that is not in dyntick-idle mode. This
65 problem really has happened, and seems to be most likely to 81 problem really has happened, and seems to be most likely to
@@ -155,67 +171,32 @@ Interpreting RCU's CPU Stall-Detector "Splats"
155For non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling, 171For non-RCU-tasks flavors of RCU, when a CPU detects that it is stalling,
156it will print a message similar to the following: 172it will print a message similar to the following:
157 173
158INFO: rcu_sched_state detected stall on CPU 5 (t=2500 jiffies) 174 INFO: rcu_sched detected stalls on CPUs/tasks:
159 175 2-...: (3 GPs behind) idle=06c/0/0 softirq=1453/1455 fqs=0
160This message indicates that CPU 5 detected that it was causing a stall, 176 16-...: (0 ticks this GP) idle=81c/0/0 softirq=764/764 fqs=0
161and that the stall was affecting RCU-sched. This message will normally be 177 (detected by 32, t=2603 jiffies, g=7073, c=7072, q=625)
162followed by a stack dump of the offending CPU. On TREE_RCU kernel builds,
163RCU and RCU-sched are implemented by the same underlying mechanism,
164while on PREEMPT_RCU kernel builds, RCU is instead implemented
165by rcu_preempt_state.
166
167On the other hand, if the offending CPU fails to print out a stall-warning
168message quickly enough, some other CPU will print a message similar to
169the following:
170
171INFO: rcu_bh_state detected stalls on CPUs/tasks: { 3 5 } (detected by 2, 2502 jiffies)
172 178
173This message indicates that CPU 2 detected that CPUs 3 and 5 were both 179This message indicates that CPU 32 detected that CPUs 2 and 16 were both
174causing stalls, and that the stall was affecting RCU-bh. This message 180causing stalls, and that the stall was affecting RCU-sched. This message
175will normally be followed by stack dumps for each CPU. Please note that 181will normally be followed by stack dumps for each CPU. Please note that
176PREEMPT_RCU builds can be stalled by tasks as well as by CPUs, 182PREEMPT_RCU builds can be stalled by tasks as well as by CPUs, and that
177and that the tasks will be indicated by PID, for example, "P3421". 183the tasks will be indicated by PID, for example, "P3421". It is even
178It is even possible for a rcu_preempt_state stall to be caused by both 184possible for a rcu_preempt_state stall to be caused by both CPUs -and-
179CPUs -and- tasks, in which case the offending CPUs and tasks will all 185tasks, in which case the offending CPUs and tasks will all be called
180be called out in the list. 186out in the list.
181
182Finally, if the grace period ends just as the stall warning starts
183printing, there will be a spurious stall-warning message:
184
185INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies)
186
187This is rare, but does happen from time to time in real life. It is also
188possible for a zero-jiffy stall to be flagged in this case, depending
189on how the stall warning and the grace-period initialization happen to
190interact. Please note that it is not possible to entirely eliminate this
191sort of false positive without resorting to things like stop_machine(),
192which is overkill for this sort of problem.
193
194Recent kernels will print a long form of the stall-warning message:
195
196 INFO: rcu_preempt detected stall on CPU
197 0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 softirq=82/543
198 (t=65000 jiffies)
199
200In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed:
201
202 INFO: rcu_preempt detected stall on CPU
203 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
204 (t=65000 jiffies)
205 187
206The "(64628 ticks this GP)" indicates that this CPU has taken more 188CPU 2's "(3 GPs behind)" indicates that this CPU has not interacted with
207than 64,000 scheduling-clock interrupts during the current stalled 189the RCU core for the past three grace periods. In contrast, CPU 16's "(0
208grace period. If the CPU was not yet aware of the current grace 190ticks this GP)" indicates that this CPU has not taken any scheduling-clock
209period (for example, if it was offline), then this part of the message 191interrupts during the current stalled grace period.
210indicates how many grace periods behind the CPU is.
211 192
212The "idle=" portion of the message prints the dyntick-idle state. 193The "idle=" portion of the message prints the dyntick-idle state.
213The hex number before the first "/" is the low-order 12 bits of the 194The hex number before the first "/" is the low-order 12 bits of the
214dynticks counter, which will have an even-numbered value if the CPU is 195dynticks counter, which will have an even-numbered value if the CPU
215in dyntick-idle mode and an odd-numbered value otherwise. The hex 196is in dyntick-idle mode and an odd-numbered value otherwise. The hex
216number between the two "/"s is the value of the nesting, which will 197number between the two "/"s is the value of the nesting, which will be
217be a small positive number if in the idle loop and a very large positive 198a small non-negative number if in the idle loop (as shown above) and a
218number (as shown above) otherwise. 199very large positive number otherwise.
219 200
220The "softirq=" portion of the message tracks the number of RCU softirq 201The "softirq=" portion of the message tracks the number of RCU softirq
221handlers that the stalled CPU has executed. The number before the "/" 202handlers that the stalled CPU has executed. The number before the "/"
@@ -230,24 +211,72 @@ handlers are no longer able to execute on this CPU. This can happen if
230the stalled CPU is spinning with interrupts are disabled, or, in -rt 211the stalled CPU is spinning with interrupts are disabled, or, in -rt
231kernels, if a high-priority process is starving RCU's softirq handler. 212kernels, if a high-priority process is starving RCU's softirq handler.
232 213
233For CONFIG_RCU_FAST_NO_HZ kernels, the "last_accelerate:" prints the 214The "fps=" shows the number of force-quiescent-state idle/offline
234low-order 16 bits (in hex) of the jiffies counter when this CPU last 215detection passes that the grace-period kthread has made across this
235invoked rcu_try_advance_all_cbs() from rcu_needs_cpu() or last invoked 216CPU since the last time that this CPU noted the beginning of a grace
236rcu_accelerate_cbs() from rcu_prepare_for_idle(). The "nonlazy_posted:" 217period.
237prints the number of non-lazy callbacks posted since the last call to 218
238rcu_needs_cpu(). Finally, an "L" indicates that there are currently 219The "detected by" line indicates which CPU detected the stall (in this
239no non-lazy callbacks ("." is printed otherwise, as shown above) and 220case, CPU 32), how many jiffies have elapsed since the start of the
240"D" indicates that dyntick-idle processing is enabled ("." is printed 221grace period (in this case 2603), the number of the last grace period
241otherwise, for example, if disabled via the "nohz=" kernel boot parameter). 222to start and to complete (7073 and 7072, respectively), and an estimate
223of the total number of RCU callbacks queued across all CPUs (625 in
224this case).
225
226In kernels with CONFIG_RCU_FAST_NO_HZ, more information is printed
227for each CPU:
228
229 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
230
231The "last_accelerate:" prints the low-order 16 bits (in hex) of the
232jiffies counter when this CPU last invoked rcu_try_advance_all_cbs()
233from rcu_needs_cpu() or last invoked rcu_accelerate_cbs() from
234rcu_prepare_for_idle(). The "nonlazy_posted:" prints the number
235of non-lazy callbacks posted since the last call to rcu_needs_cpu().
236Finally, an "L" indicates that there are currently no non-lazy callbacks
237("." is printed otherwise, as shown above) and "D" indicates that
238dyntick-idle processing is enabled ("." is printed otherwise, for example,
239if disabled via the "nohz=" kernel boot parameter).
240
241If the grace period ends just as the stall warning starts printing,
242there will be a spurious stall-warning message, which will include
243the following:
244
245 INFO: Stall ended before state dump start
246
247This is rare, but does happen from time to time in real life. It is also
248possible for a zero-jiffy stall to be flagged in this case, depending
249on how the stall warning and the grace-period initialization happen to
250interact. Please note that it is not possible to entirely eliminate this
251sort of false positive without resorting to things like stop_machine(),
252which is overkill for this sort of problem.
253
254If all CPUs and tasks have passed through quiescent states, but the
255grace period has nevertheless failed to end, the stall-warning splat
256will include something like the following:
257
258 All QSes seen, last rcu_preempt kthread activity 23807 (4297905177-4297881370), jiffies_till_next_fqs=3, root ->qsmask 0x0
259
260The "23807" indicates that it has been more than 23 thousand jiffies
261since the grace-period kthread ran. The "jiffies_till_next_fqs"
262indicates how frequently that kthread should run, giving the number
263of jiffies between force-quiescent-state scans, in this case three,
264which is way less than 23807. Finally, the root rcu_node structure's
265->qsmask field is printed, which will normally be zero.
242 266
243If the relevant grace-period kthread has been unable to run prior to 267If the relevant grace-period kthread has been unable to run prior to
244the stall warning, the following additional line is printed: 268the stall warning, as was the case in the "All QSes seen" line above,
269the following additional line is printed:
245 270
246 rcu_preempt kthread starved for 2023 jiffies! 271 kthread starved for 23807 jiffies! g7073 c7072 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1
247 272
248Starving the grace-period kthreads of CPU time can of course result in 273Starving the grace-period kthreads of CPU time can of course result
249RCU CPU stall warnings even when all CPUs and tasks have passed through 274in RCU CPU stall warnings even when all CPUs and tasks have passed
250the required quiescent states. 275through the required quiescent states. The "g" and "c" numbers flag the
276number of the last grace period started and completed, respectively,
277the "f" precedes the ->gp_flags command to the grace-period kthread,
278the "RCU_GP_WAIT_FQS" indicates that the kthread is waiting for a short
279timeout, and the "state" precedes value of the task_struct ->state field.
251 280
252 281
253Multiple Warnings From One Stall 282Multiple Warnings From One Stall
@@ -264,13 +293,28 @@ Stall Warnings for Expedited Grace Periods
264If an expedited grace period detects a stall, it will place a message 293If an expedited grace period detects a stall, it will place a message
265like the following in dmesg: 294like the following in dmesg:
266 295
267 INFO: rcu_sched detected expedited stalls on CPUs: { 1 2 6 } 26009 jiffies s: 1043 296 INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 7-... } 21119 jiffies s: 73 root: 0x2/.
268 297
269This indicates that CPUs 1, 2, and 6 have failed to respond to a 298This indicates that CPU 7 has failed to respond to a reschedule IPI.
270reschedule IPI, that the expedited grace period has been going on for 299The three periods (".") following the CPU number indicate that the CPU
27126,009 jiffies, and that the expedited grace-period sequence counter is 300is online (otherwise the first period would instead have been "O"),
2721043. The fact that this last value is odd indicates that an expedited 301that the CPU was online at the beginning of the expedited grace period
273grace period is in flight. 302(otherwise the second period would have instead been "o"), and that
303the CPU has been online at least once since boot (otherwise, the third
304period would instead have been "N"). The number before the "jiffies"
305indicates that the expedited grace period has been going on for 21,119
306jiffies. The number following the "s:" indicates that the expedited
307grace-period sequence counter is 73. The fact that this last value is
308odd indicates that an expedited grace period is in flight. The number
309following "root:" is a bitmask that indicates which children of the root
310rcu_node structure correspond to CPUs and/or tasks that are blocking the
311current expedited grace period. If the tree had more than one level,
312additional hex numbers would be printed for the states of the other
313rcu_node structures in the tree.
314
315As with normal grace periods, PREEMPT_RCU builds can be stalled by
316tasks as well as by CPUs, and that the tasks will be indicated by PID,
317for example, "P3421".
274 318
275It is entirely possible to see stall warnings from normal and from 319It is entirely possible to see stall warnings from normal and from
276expedited grace periods at about the same time from the same run. 320expedited grace periods at about the same time during the same run.
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 55cfff9d59bb..4af4dd46cbd9 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3542,6 +3542,9 @@
3542 rcutorture.stall_cpu_holdoff= [KNL] 3542 rcutorture.stall_cpu_holdoff= [KNL]
3543 Time to wait (s) after boot before inducing stall. 3543 Time to wait (s) after boot before inducing stall.
3544 3544
3545 rcutorture.stall_cpu_irqsoff= [KNL]
3546 Disable interrupts while stalling if set.
3547
3545 rcutorture.stat_interval= [KNL] 3548 rcutorture.stat_interval= [KNL]
3546 Time (s) between statistics printk()s. 3549 Time (s) between statistics printk()s.
3547 3550
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index b759a60624fd..519940ec767f 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -53,7 +53,7 @@ CONTENTS
53 - SMP barrier pairing. 53 - SMP barrier pairing.
54 - Examples of memory barrier sequences. 54 - Examples of memory barrier sequences.
55 - Read memory barriers vs load speculation. 55 - Read memory barriers vs load speculation.
56 - Transitivity 56 - Multicopy atomicity.
57 57
58 (*) Explicit kernel barriers. 58 (*) Explicit kernel barriers.
59 59
@@ -383,8 +383,8 @@ Memory barriers come in four basic varieties:
383 to have any effect on loads. 383 to have any effect on loads.
384 384
385 A CPU can be viewed as committing a sequence of store operations to the 385 A CPU can be viewed as committing a sequence of store operations to the
386 memory system as time progresses. All stores before a write barrier will 386 memory system as time progresses. All stores _before_ a write barrier
387 occur in the sequence _before_ all the stores after the write barrier. 387 will occur _before_ all the stores after the write barrier.
388 388
389 [!] Note that write barriers should normally be paired with read or data 389 [!] Note that write barriers should normally be paired with read or data
390 dependency barriers; see the "SMP barrier pairing" subsection. 390 dependency barriers; see the "SMP barrier pairing" subsection.
@@ -635,6 +635,11 @@ can be used to record rare error conditions and the like, and the CPUs'
635naturally occurring ordering prevents such records from being lost. 635naturally occurring ordering prevents such records from being lost.
636 636
637 637
638Note well that the ordering provided by a data dependency is local to
639the CPU containing it. See the section on "Multicopy atomicity" for
640more information.
641
642
638The data dependency barrier is very important to the RCU system, 643The data dependency barrier is very important to the RCU system,
639for example. See rcu_assign_pointer() and rcu_dereference() in 644for example. See rcu_assign_pointer() and rcu_dereference() in
640include/linux/rcupdate.h. This permits the current target of an RCU'd 645include/linux/rcupdate.h. This permits the current target of an RCU'd
@@ -851,38 +856,11 @@ In short, control dependencies apply only to the stores in the then-clause
851and else-clause of the if-statement in question (including functions 856and else-clause of the if-statement in question (including functions
852invoked by those two clauses), not to code following that if-statement. 857invoked by those two clauses), not to code following that if-statement.
853 858
854Finally, control dependencies do -not- provide transitivity. This is
855demonstrated by two related examples, with the initial values of
856'x' and 'y' both being zero:
857
858 CPU 0 CPU 1
859 ======================= =======================
860 r1 = READ_ONCE(x); r2 = READ_ONCE(y);
861 if (r1 > 0) if (r2 > 0)
862 WRITE_ONCE(y, 1); WRITE_ONCE(x, 1);
863
864 assert(!(r1 == 1 && r2 == 1));
865 859
866The above two-CPU example will never trigger the assert(). However, 860Note well that the ordering provided by a control dependency is local
867if control dependencies guaranteed transitivity (which they do not), 861to the CPU containing it. See the section on "Multicopy atomicity"
868then adding the following CPU would guarantee a related assertion: 862for more information.
869 863
870 CPU 2
871 =====================
872 WRITE_ONCE(x, 2);
873
874 assert(!(r1 == 2 && r2 == 1 && x == 2)); /* FAILS!!! */
875
876But because control dependencies do -not- provide transitivity, the above
877assertion can fail after the combined three-CPU example completes. If you
878need the three-CPU example to provide ordering, you will need smp_mb()
879between the loads and stores in the CPU 0 and CPU 1 code fragments,
880that is, just before or just after the "if" statements. Furthermore,
881the original two-CPU example is very fragile and should be avoided.
882
883These two examples are the LB and WWC litmus tests from this paper:
884http://www.cl.cam.ac.uk/users/pes20/ppc-supplemental/test6.pdf and this
885site: https://www.cl.cam.ac.uk/~pes20/ppcmem/index.html.
886 864
887In summary: 865In summary:
888 866
@@ -922,8 +900,8 @@ In summary:
922 900
923 (*) Control dependencies pair normally with other types of barriers. 901 (*) Control dependencies pair normally with other types of barriers.
924 902
925 (*) Control dependencies do -not- provide transitivity. If you 903 (*) Control dependencies do -not- provide multicopy atomicity. If you
926 need transitivity, use smp_mb(). 904 need all the CPUs to see a given store at the same time, use smp_mb().
927 905
928 (*) Compilers do not understand control dependencies. It is therefore 906 (*) Compilers do not understand control dependencies. It is therefore
929 your job to ensure that they do not break your code. 907 your job to ensure that they do not break your code.
@@ -936,13 +914,14 @@ When dealing with CPU-CPU interactions, certain types of memory barrier should
936always be paired. A lack of appropriate pairing is almost certainly an error. 914always be paired. A lack of appropriate pairing is almost certainly an error.
937 915
938General barriers pair with each other, though they also pair with most 916General barriers pair with each other, though they also pair with most
939other types of barriers, albeit without transitivity. An acquire barrier 917other types of barriers, albeit without multicopy atomicity. An acquire
940pairs with a release barrier, but both may also pair with other barriers, 918barrier pairs with a release barrier, but both may also pair with other
941including of course general barriers. A write barrier pairs with a data 919barriers, including of course general barriers. A write barrier pairs
942dependency barrier, a control dependency, an acquire barrier, a release 920with a data dependency barrier, a control dependency, an acquire barrier,
943barrier, a read barrier, or a general barrier. Similarly a read barrier, 921a release barrier, a read barrier, or a general barrier. Similarly a
944control dependency, or a data dependency barrier pairs with a write 922read barrier, control dependency, or a data dependency barrier pairs
945barrier, an acquire barrier, a release barrier, or a general barrier: 923with a write barrier, an acquire barrier, a release barrier, or a
924general barrier:
946 925
947 CPU 1 CPU 2 926 CPU 1 CPU 2
948 =============== =============== 927 =============== ===============
@@ -968,7 +947,7 @@ Or even:
968 =============== =============================== 947 =============== ===============================
969 r1 = READ_ONCE(y); 948 r1 = READ_ONCE(y);
970 <general barrier> 949 <general barrier>
971 WRITE_ONCE(y, 1); if (r2 = READ_ONCE(x)) { 950 WRITE_ONCE(x, 1); if (r2 = READ_ONCE(x)) {
972 <implicit control dependency> 951 <implicit control dependency>
973 WRITE_ONCE(y, 1); 952 WRITE_ONCE(y, 1);
974 } 953 }
@@ -1359,64 +1338,79 @@ the speculation will be cancelled and the value reloaded:
1359 retrieved : : +-------+ 1338 retrieved : : +-------+
1360 1339
1361 1340
1362TRANSITIVITY 1341MULTICOPY ATOMICITY
1363------------ 1342--------------------
1343
1344Multicopy atomicity is a deeply intuitive notion about ordering that is
1345not always provided by real computer systems, namely that a given store
1346becomes visible at the same time to all CPUs, or, alternatively, that all
1347CPUs agree on the order in which all stores become visible. However,
1348support of full multicopy atomicity would rule out valuable hardware
1349optimizations, so a weaker form called ``other multicopy atomicity''
1350instead guarantees only that a given store becomes visible at the same
1351time to all -other- CPUs. The remainder of this document discusses this
1352weaker form, but for brevity will call it simply ``multicopy atomicity''.
1364 1353
1365Transitivity is a deeply intuitive notion about ordering that is not 1354The following example demonstrates multicopy atomicity:
1366always provided by real computer systems. The following example
1367demonstrates transitivity:
1368 1355
1369 CPU 1 CPU 2 CPU 3 1356 CPU 1 CPU 2 CPU 3
1370 ======================= ======================= ======================= 1357 ======================= ======================= =======================
1371 { X = 0, Y = 0 } 1358 { X = 0, Y = 0 }
1372 STORE X=1 LOAD X STORE Y=1 1359 STORE X=1 r1=LOAD X (reads 1) LOAD Y (reads 1)
1373 <general barrier> <general barrier> 1360 <general barrier> <read barrier>
1374 LOAD Y LOAD X 1361 STORE Y=r1 LOAD X
1375 1362
1376Suppose that CPU 2's load from X returns 1 and its load from Y returns 0. 1363Suppose that CPU 2's load from X returns 1, which it then stores to Y,
1377This indicates that CPU 2's load from X in some sense follows CPU 1's 1364and CPU 3's load from Y returns 1. This indicates that CPU 1's store
1378store to X and that CPU 2's load from Y in some sense preceded CPU 3's 1365to X precedes CPU 2's load from X and that CPU 2's store to Y precedes
1379store to Y. The question is then "Can CPU 3's load from X return 0?" 1366CPU 3's load from Y. In addition, the memory barriers guarantee that
1380 1367CPU 2 executes its load before its store, and CPU 3 loads from Y before
1381Because CPU 2's load from X in some sense came after CPU 1's store, it 1368it loads from X. The question is then "Can CPU 3's load from X return 0?"
1369
1370Because CPU 3's load from X in some sense comes after CPU 2's load, it
1382is natural to expect that CPU 3's load from X must therefore return 1. 1371is natural to expect that CPU 3's load from X must therefore return 1.
1383This expectation is an example of transitivity: if a load executing on 1372This expectation follows from multicopy atomicity: if a load executing
1384CPU A follows a load from the same variable executing on CPU B, then 1373on CPU B follows a load from the same variable executing on CPU A (and
1385CPU A's load must either return the same value that CPU B's load did, 1374CPU A did not originally store the value which it read), then on
1386or must return some later value. 1375multicopy-atomic systems, CPU B's load must return either the same value
1387 1376that CPU A's load did or some later value. However, the Linux kernel
1388In the Linux kernel, use of general memory barriers guarantees 1377does not require systems to be multicopy atomic.
1389transitivity. Therefore, in the above example, if CPU 2's load from X 1378
1390returns 1 and its load from Y returns 0, then CPU 3's load from X must 1379The use of a general memory barrier in the example above compensates
1391also return 1. 1380for any lack of multicopy atomicity. In the example, if CPU 2's load
1392 1381from X returns 1 and CPU 3's load from Y returns 1, then CPU 3's load
1393However, transitivity is -not- guaranteed for read or write barriers. 1382from X must indeed also return 1.
1394For example, suppose that CPU 2's general barrier in the above example 1383
1395is changed to a read barrier as shown below: 1384However, dependencies, read barriers, and write barriers are not always
1385able to compensate for non-multicopy atomicity. For example, suppose
1386that CPU 2's general barrier is removed from the above example, leaving
1387only the data dependency shown below:
1396 1388
1397 CPU 1 CPU 2 CPU 3 1389 CPU 1 CPU 2 CPU 3
1398 ======================= ======================= ======================= 1390 ======================= ======================= =======================
1399 { X = 0, Y = 0 } 1391 { X = 0, Y = 0 }
1400 STORE X=1 LOAD X STORE Y=1 1392 STORE X=1 r1=LOAD X (reads 1) LOAD Y (reads 1)
1401 <read barrier> <general barrier> 1393 <data dependency> <read barrier>
1402 LOAD Y LOAD X 1394 STORE Y=r1 LOAD X (reads 0)
1403 1395
1404This substitution destroys transitivity: in this example, it is perfectly 1396This substitution allows non-multicopy atomicity to run rampant: in
1405legal for CPU 2's load from X to return 1, its load from Y to return 0, 1397this example, it is perfectly legal for CPU 2's load from X to return 1,
1406and CPU 3's load from X to return 0. 1398CPU 3's load from Y to return 1, and its load from X to return 0.
1407 1399
1408The key point is that although CPU 2's read barrier orders its pair 1400The key point is that although CPU 2's data dependency orders its load
1409of loads, it does not guarantee to order CPU 1's store. Therefore, if 1401and store, it does not guarantee to order CPU 1's store. Thus, if this
1410this example runs on a system where CPUs 1 and 2 share a store buffer 1402example runs on a non-multicopy-atomic system where CPUs 1 and 2 share a
1411or a level of cache, CPU 2 might have early access to CPU 1's writes. 1403store buffer or a level of cache, CPU 2 might have early access to CPU 1's
1412General barriers are therefore required to ensure that all CPUs agree 1404writes. General barriers are therefore required to ensure that all CPUs
1413on the combined order of CPU 1's and CPU 2's accesses. 1405agree on the combined order of multiple accesses.
1414 1406
1415General barriers provide "global transitivity", so that all CPUs will 1407General barriers can compensate not only for non-multicopy atomicity,
1416agree on the order of operations. In contrast, a chain of release-acquire 1408but can also generate additional ordering that can ensure that -all-
1417pairs provides only "local transitivity", so that only those CPUs on 1409CPUs will perceive the same order of -all- operations. In contrast, a
1418the chain are guaranteed to agree on the combined order of the accesses. 1410chain of release-acquire pairs do not provide this additional ordering,
1419For example, switching to C code in deference to Herman Hollerith: 1411which means that only those CPUs on the chain are guaranteed to agree
1412on the combined order of the accesses. For example, switching to C code
1413in deference to the ghost of Herman Hollerith:
1420 1414
1421 int u, v, x, y, z; 1415 int u, v, x, y, z;
1422 1416
@@ -1448,9 +1442,9 @@ For example, switching to C code in deference to Herman Hollerith:
1448 r3 = READ_ONCE(u); 1442 r3 = READ_ONCE(u);
1449 } 1443 }
1450 1444
1451Because cpu0(), cpu1(), and cpu2() participate in a local transitive 1445Because cpu0(), cpu1(), and cpu2() participate in a chain of
1452chain of smp_store_release()/smp_load_acquire() pairs, the following 1446smp_store_release()/smp_load_acquire() pairs, the following outcome
1453outcome is prohibited: 1447is prohibited:
1454 1448
1455 r0 == 1 && r1 == 1 && r2 == 1 1449 r0 == 1 && r1 == 1 && r2 == 1
1456 1450
@@ -1460,9 +1454,9 @@ outcome is prohibited:
1460 1454
1461 r1 == 1 && r5 == 0 1455 r1 == 1 && r5 == 0
1462 1456
1463However, the transitivity of release-acquire is local to the participating 1457However, the ordering provided by a release-acquire chain is local
1464CPUs and does not apply to cpu3(). Therefore, the following outcome 1458to the CPUs participating in that chain and does not apply to cpu3(),
1465is possible: 1459at least aside from stores. Therefore, the following outcome is possible:
1466 1460
1467 r0 == 0 && r1 == 1 && r2 == 1 && r3 == 0 && r4 == 0 1461 r0 == 0 && r1 == 1 && r2 == 1 && r3 == 0 && r4 == 0
1468 1462
@@ -1490,8 +1484,8 @@ following outcome is possible:
1490Note that this outcome can happen even on a mythical sequentially 1484Note that this outcome can happen even on a mythical sequentially
1491consistent system where nothing is ever reordered. 1485consistent system where nothing is ever reordered.
1492 1486
1493To reiterate, if your code requires global transitivity, use general 1487To reiterate, if your code requires full ordering of all operations,
1494barriers throughout. 1488use general barriers throughout.
1495 1489
1496 1490
1497======================== 1491========================
@@ -3101,6 +3095,9 @@ AMD64 Architecture Programmer's Manual Volume 2: System Programming
3101 Chapter 7.1: Memory-Access Ordering 3095 Chapter 7.1: Memory-Access Ordering
3102 Chapter 7.4: Buffering and Combining Memory Writes 3096 Chapter 7.4: Buffering and Combining Memory Writes
3103 3097
3098ARM Architecture Reference Manual (ARMv8, for ARMv8-A architecture profile)
3099 Chapter B2: The AArch64 Application Level Memory Model
3100
3104IA-32 Intel Architecture Software Developer's Manual, Volume 3: 3101IA-32 Intel Architecture Software Developer's Manual, Volume 3:
3105System Programming Guide 3102System Programming Guide
3106 Chapter 7.1: Locked Atomic Operations 3103 Chapter 7.1: Locked Atomic Operations
@@ -3112,6 +3109,8 @@ The SPARC Architecture Manual, Version 9
3112 Appendix D: Formal Specification of the Memory Models 3109 Appendix D: Formal Specification of the Memory Models
3113 Appendix J: Programming with the Memory Models 3110 Appendix J: Programming with the Memory Models
3114 3111
3112Storage in the PowerPC (Stone and Fitzgerald)
3113
3115UltraSPARC Programmer Reference Manual 3114UltraSPARC Programmer Reference Manual
3116 Chapter 5: Memory Accesses and Cacheability 3115 Chapter 5: Memory Accesses and Cacheability
3117 Chapter 15: Sparc-V9 Memory Models 3116 Chapter 15: Sparc-V9 Memory Models
diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h
index 9270d73ea682..0e81035b678f 100644
--- a/include/linux/irq_work.h
+++ b/include/linux/irq_work.h
@@ -34,10 +34,7 @@ void init_irq_work(struct irq_work *work, void (*func)(struct irq_work *))
34#define DEFINE_IRQ_WORK(name, _f) struct irq_work name = { .func = (_f), } 34#define DEFINE_IRQ_WORK(name, _f) struct irq_work name = { .func = (_f), }
35 35
36bool irq_work_queue(struct irq_work *work); 36bool irq_work_queue(struct irq_work *work);
37
38#ifdef CONFIG_SMP
39bool irq_work_queue_on(struct irq_work *work, int cpu); 37bool irq_work_queue_on(struct irq_work *work, int cpu);
40#endif
41 38
42void irq_work_tick(void); 39void irq_work_tick(void);
43void irq_work_sync(struct irq_work *work); 40void irq_work_sync(struct irq_work *work);
diff --git a/kernel/irq_work.c b/kernel/irq_work.c
index bcf107ce0854..9f20f6c72579 100644
--- a/kernel/irq_work.c
+++ b/kernel/irq_work.c
@@ -56,7 +56,6 @@ void __weak arch_irq_work_raise(void)
56 */ 56 */
57} 57}
58 58
59#ifdef CONFIG_SMP
60/* 59/*
61 * Enqueue the irq_work @work on @cpu unless it's already pending 60 * Enqueue the irq_work @work on @cpu unless it's already pending
62 * somewhere. 61 * somewhere.
@@ -68,6 +67,8 @@ bool irq_work_queue_on(struct irq_work *work, int cpu)
68 /* All work should have been flushed before going offline */ 67 /* All work should have been flushed before going offline */
69 WARN_ON_ONCE(cpu_is_offline(cpu)); 68 WARN_ON_ONCE(cpu_is_offline(cpu));
70 69
70#ifdef CONFIG_SMP
71
71 /* Arch remote IPI send/receive backend aren't NMI safe */ 72 /* Arch remote IPI send/receive backend aren't NMI safe */
72 WARN_ON_ONCE(in_nmi()); 73 WARN_ON_ONCE(in_nmi());
73 74
@@ -78,10 +79,12 @@ bool irq_work_queue_on(struct irq_work *work, int cpu)
78 if (llist_add(&work->llnode, &per_cpu(raised_list, cpu))) 79 if (llist_add(&work->llnode, &per_cpu(raised_list, cpu)))
79 arch_send_call_function_single_ipi(cpu); 80 arch_send_call_function_single_ipi(cpu);
80 81
82#else /* #ifdef CONFIG_SMP */
83 irq_work_queue(work);
84#endif /* #else #ifdef CONFIG_SMP */
85
81 return true; 86 return true;
82} 87}
83EXPORT_SYMBOL_GPL(irq_work_queue_on);
84#endif
85 88
86/* Enqueue the irq work @work on the current CPU */ 89/* Enqueue the irq work @work on the current CPU */
87bool irq_work_queue(struct irq_work *work) 90bool irq_work_queue(struct irq_work *work)
diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h
index e4b43fef89f5..59c471de342a 100644
--- a/kernel/rcu/rcu.h
+++ b/kernel/rcu/rcu.h
@@ -203,6 +203,21 @@ static inline bool __rcu_reclaim(const char *rn, struct rcu_head *head)
203extern int rcu_cpu_stall_suppress; 203extern int rcu_cpu_stall_suppress;
204int rcu_jiffies_till_stall_check(void); 204int rcu_jiffies_till_stall_check(void);
205 205
206#define rcu_ftrace_dump_stall_suppress() \
207do { \
208 if (!rcu_cpu_stall_suppress) \
209 rcu_cpu_stall_suppress = 3; \
210} while (0)
211
212#define rcu_ftrace_dump_stall_unsuppress() \
213do { \
214 if (rcu_cpu_stall_suppress == 3) \
215 rcu_cpu_stall_suppress = 0; \
216} while (0)
217
218#else /* #endif #ifdef CONFIG_RCU_STALL_COMMON */
219#define rcu_ftrace_dump_stall_suppress()
220#define rcu_ftrace_dump_stall_unsuppress()
206#endif /* #ifdef CONFIG_RCU_STALL_COMMON */ 221#endif /* #ifdef CONFIG_RCU_STALL_COMMON */
207 222
208/* 223/*
@@ -220,8 +235,12 @@ do { \
220 static atomic_t ___rfd_beenhere = ATOMIC_INIT(0); \ 235 static atomic_t ___rfd_beenhere = ATOMIC_INIT(0); \
221 \ 236 \
222 if (!atomic_read(&___rfd_beenhere) && \ 237 if (!atomic_read(&___rfd_beenhere) && \
223 !atomic_xchg(&___rfd_beenhere, 1)) \ 238 !atomic_xchg(&___rfd_beenhere, 1)) { \
239 tracing_off(); \
240 rcu_ftrace_dump_stall_suppress(); \
224 ftrace_dump(oops_dump_mode); \ 241 ftrace_dump(oops_dump_mode); \
242 rcu_ftrace_dump_stall_unsuppress(); \
243 } \
225} while (0) 244} while (0)
226 245
227void rcu_early_boot_tests(void); 246void rcu_early_boot_tests(void);
diff --git a/kernel/rcu/rcu_segcblist.c b/kernel/rcu/rcu_segcblist.c
index 7649fcd2c4c7..88cba7c2956c 100644
--- a/kernel/rcu/rcu_segcblist.c
+++ b/kernel/rcu/rcu_segcblist.c
@@ -23,6 +23,7 @@
23#include <linux/types.h> 23#include <linux/types.h>
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/rcupdate.h>
26 27
27#include "rcu_segcblist.h" 28#include "rcu_segcblist.h"
28 29
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 45f2ffbc1e78..362eb2f78b3c 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -51,6 +51,7 @@
51#include <asm/byteorder.h> 51#include <asm/byteorder.h>
52#include <linux/torture.h> 52#include <linux/torture.h>
53#include <linux/vmalloc.h> 53#include <linux/vmalloc.h>
54#include <linux/sched/debug.h>
54 55
55#include "rcu.h" 56#include "rcu.h"
56 57
@@ -89,6 +90,7 @@ torture_param(int, shutdown_secs, 0, "Shutdown time (s), <= zero to disable.");
89torture_param(int, stall_cpu, 0, "Stall duration (s), zero to disable."); 90torture_param(int, stall_cpu, 0, "Stall duration (s), zero to disable.");
90torture_param(int, stall_cpu_holdoff, 10, 91torture_param(int, stall_cpu_holdoff, 10,
91 "Time to wait before starting stall (s)."); 92 "Time to wait before starting stall (s).");
93torture_param(int, stall_cpu_irqsoff, 0, "Disable interrupts while stalling.");
92torture_param(int, stat_interval, 60, 94torture_param(int, stat_interval, 60,
93 "Number of seconds between stats printk()s"); 95 "Number of seconds between stats printk()s");
94torture_param(int, stutter, 5, "Number of seconds to run/halt test"); 96torture_param(int, stutter, 5, "Number of seconds to run/halt test");
@@ -1239,6 +1241,7 @@ rcu_torture_stats_print(void)
1239 long pipesummary[RCU_TORTURE_PIPE_LEN + 1] = { 0 }; 1241 long pipesummary[RCU_TORTURE_PIPE_LEN + 1] = { 0 };
1240 long batchsummary[RCU_TORTURE_PIPE_LEN + 1] = { 0 }; 1242 long batchsummary[RCU_TORTURE_PIPE_LEN + 1] = { 0 };
1241 static unsigned long rtcv_snap = ULONG_MAX; 1243 static unsigned long rtcv_snap = ULONG_MAX;
1244 static bool splatted;
1242 struct task_struct *wtp; 1245 struct task_struct *wtp;
1243 1246
1244 for_each_possible_cpu(cpu) { 1247 for_each_possible_cpu(cpu) {
@@ -1324,6 +1327,10 @@ rcu_torture_stats_print(void)
1324 gpnum, completed, flags, 1327 gpnum, completed, flags,
1325 wtp == NULL ? ~0UL : wtp->state, 1328 wtp == NULL ? ~0UL : wtp->state,
1326 wtp == NULL ? -1 : (int)task_cpu(wtp)); 1329 wtp == NULL ? -1 : (int)task_cpu(wtp));
1330 if (!splatted && wtp) {
1331 sched_show_task(wtp);
1332 splatted = true;
1333 }
1327 show_rcu_gp_kthreads(); 1334 show_rcu_gp_kthreads();
1328 rcu_ftrace_dump(DUMP_ALL); 1335 rcu_ftrace_dump(DUMP_ALL);
1329 } 1336 }
@@ -1357,7 +1364,7 @@ rcu_torture_print_module_parms(struct rcu_torture_ops *cur_ops, const char *tag)
1357 "fqs_duration=%d fqs_holdoff=%d fqs_stutter=%d " 1364 "fqs_duration=%d fqs_holdoff=%d fqs_stutter=%d "
1358 "test_boost=%d/%d test_boost_interval=%d " 1365 "test_boost=%d/%d test_boost_interval=%d "
1359 "test_boost_duration=%d shutdown_secs=%d " 1366 "test_boost_duration=%d shutdown_secs=%d "
1360 "stall_cpu=%d stall_cpu_holdoff=%d " 1367 "stall_cpu=%d stall_cpu_holdoff=%d stall_cpu_irqsoff=%d "
1361 "n_barrier_cbs=%d " 1368 "n_barrier_cbs=%d "
1362 "onoff_interval=%d onoff_holdoff=%d\n", 1369 "onoff_interval=%d onoff_holdoff=%d\n",
1363 torture_type, tag, nrealreaders, nfakewriters, 1370 torture_type, tag, nrealreaders, nfakewriters,
@@ -1365,7 +1372,7 @@ rcu_torture_print_module_parms(struct rcu_torture_ops *cur_ops, const char *tag)
1365 stutter, irqreader, fqs_duration, fqs_holdoff, fqs_stutter, 1372 stutter, irqreader, fqs_duration, fqs_holdoff, fqs_stutter,
1366 test_boost, cur_ops->can_boost, 1373 test_boost, cur_ops->can_boost,
1367 test_boost_interval, test_boost_duration, shutdown_secs, 1374 test_boost_interval, test_boost_duration, shutdown_secs,
1368 stall_cpu, stall_cpu_holdoff, 1375 stall_cpu, stall_cpu_holdoff, stall_cpu_irqsoff,
1369 n_barrier_cbs, 1376 n_barrier_cbs,
1370 onoff_interval, onoff_holdoff); 1377 onoff_interval, onoff_holdoff);
1371} 1378}
@@ -1430,12 +1437,19 @@ static int rcu_torture_stall(void *args)
1430 if (!kthread_should_stop()) { 1437 if (!kthread_should_stop()) {
1431 stop_at = get_seconds() + stall_cpu; 1438 stop_at = get_seconds() + stall_cpu;
1432 /* RCU CPU stall is expected behavior in following code. */ 1439 /* RCU CPU stall is expected behavior in following code. */
1433 pr_alert("rcu_torture_stall start.\n");
1434 rcu_read_lock(); 1440 rcu_read_lock();
1435 preempt_disable(); 1441 if (stall_cpu_irqsoff)
1442 local_irq_disable();
1443 else
1444 preempt_disable();
1445 pr_alert("rcu_torture_stall start on CPU %d.\n",
1446 smp_processor_id());
1436 while (ULONG_CMP_LT(get_seconds(), stop_at)) 1447 while (ULONG_CMP_LT(get_seconds(), stop_at))
1437 continue; /* Induce RCU CPU stall warning. */ 1448 continue; /* Induce RCU CPU stall warning. */
1438 preempt_enable(); 1449 if (stall_cpu_irqsoff)
1450 local_irq_enable();
1451 else
1452 preempt_enable();
1439 rcu_read_unlock(); 1453 rcu_read_unlock();
1440 pr_alert("rcu_torture_stall end.\n"); 1454 pr_alert("rcu_torture_stall end.\n");
1441 } 1455 }
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 3e3650e94ae6..e4fe06d42385 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -534,8 +534,8 @@ module_param(rcu_kick_kthreads, bool, 0644);
534 * How long the grace period must be before we start recruiting 534 * How long the grace period must be before we start recruiting
535 * quiescent-state help from rcu_note_context_switch(). 535 * quiescent-state help from rcu_note_context_switch().
536 */ 536 */
537static ulong jiffies_till_sched_qs = HZ / 20; 537static ulong jiffies_till_sched_qs = HZ / 10;
538module_param(jiffies_till_sched_qs, ulong, 0644); 538module_param(jiffies_till_sched_qs, ulong, 0444);
539 539
540static bool rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp, 540static bool rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp,
541 struct rcu_data *rdp); 541 struct rcu_data *rdp);
@@ -837,6 +837,9 @@ static void rcu_eqs_enter(bool user)
837 * We crowbar the ->dynticks_nesting field to zero to allow for 837 * We crowbar the ->dynticks_nesting field to zero to allow for
838 * the possibility of usermode upcalls having messed up our count 838 * the possibility of usermode upcalls having messed up our count
839 * of interrupt nesting level during the prior busy period. 839 * of interrupt nesting level during the prior busy period.
840 *
841 * If you add or remove a call to rcu_idle_enter(), be sure to test with
842 * CONFIG_RCU_EQS_DEBUG=y.
840 */ 843 */
841void rcu_idle_enter(void) 844void rcu_idle_enter(void)
842{ 845{
@@ -852,6 +855,9 @@ void rcu_idle_enter(void)
852 * is permitted between this call and rcu_user_exit(). This way the 855 * is permitted between this call and rcu_user_exit(). This way the
853 * CPU doesn't need to maintain the tick for RCU maintenance purposes 856 * CPU doesn't need to maintain the tick for RCU maintenance purposes
854 * when the CPU runs in userspace. 857 * when the CPU runs in userspace.
858 *
859 * If you add or remove a call to rcu_user_enter(), be sure to test with
860 * CONFIG_RCU_EQS_DEBUG=y.
855 */ 861 */
856void rcu_user_enter(void) 862void rcu_user_enter(void)
857{ 863{
@@ -875,6 +881,9 @@ void rcu_user_enter(void)
875 * Use things like work queues to work around this limitation. 881 * Use things like work queues to work around this limitation.
876 * 882 *
877 * You have been warned. 883 * You have been warned.
884 *
885 * If you add or remove a call to rcu_irq_exit(), be sure to test with
886 * CONFIG_RCU_EQS_DEBUG=y.
878 */ 887 */
879void rcu_irq_exit(void) 888void rcu_irq_exit(void)
880{ 889{
@@ -899,6 +908,9 @@ void rcu_irq_exit(void)
899 908
900/* 909/*
901 * Wrapper for rcu_irq_exit() where interrupts are enabled. 910 * Wrapper for rcu_irq_exit() where interrupts are enabled.
911 *
912 * If you add or remove a call to rcu_irq_exit_irqson(), be sure to test
913 * with CONFIG_RCU_EQS_DEBUG=y.
902 */ 914 */
903void rcu_irq_exit_irqson(void) 915void rcu_irq_exit_irqson(void)
904{ 916{
@@ -971,6 +983,9 @@ static void rcu_eqs_exit(bool user)
971 * allow for the possibility of usermode upcalls messing up our count 983 * allow for the possibility of usermode upcalls messing up our count
972 * of interrupt nesting level during the busy period that is just 984 * of interrupt nesting level during the busy period that is just
973 * now starting. 985 * now starting.
986 *
987 * If you add or remove a call to rcu_idle_exit(), be sure to test with
988 * CONFIG_RCU_EQS_DEBUG=y.
974 */ 989 */
975void rcu_idle_exit(void) 990void rcu_idle_exit(void)
976{ 991{
@@ -987,6 +1002,9 @@ void rcu_idle_exit(void)
987 * 1002 *
988 * Exit RCU idle mode while entering the kernel because it can 1003 * Exit RCU idle mode while entering the kernel because it can
989 * run a RCU read side critical section anytime. 1004 * run a RCU read side critical section anytime.
1005 *
1006 * If you add or remove a call to rcu_user_exit(), be sure to test with
1007 * CONFIG_RCU_EQS_DEBUG=y.
990 */ 1008 */
991void rcu_user_exit(void) 1009void rcu_user_exit(void)
992{ 1010{
@@ -1012,6 +1030,9 @@ void rcu_user_exit(void)
1012 * Use things like work queues to work around this limitation. 1030 * Use things like work queues to work around this limitation.
1013 * 1031 *
1014 * You have been warned. 1032 * You have been warned.
1033 *
1034 * If you add or remove a call to rcu_irq_enter(), be sure to test with
1035 * CONFIG_RCU_EQS_DEBUG=y.
1015 */ 1036 */
1016void rcu_irq_enter(void) 1037void rcu_irq_enter(void)
1017{ 1038{
@@ -1037,6 +1058,9 @@ void rcu_irq_enter(void)
1037 1058
1038/* 1059/*
1039 * Wrapper for rcu_irq_enter() where interrupts are enabled. 1060 * Wrapper for rcu_irq_enter() where interrupts are enabled.
1061 *
1062 * If you add or remove a call to rcu_irq_enter_irqson(), be sure to test
1063 * with CONFIG_RCU_EQS_DEBUG=y.
1040 */ 1064 */
1041void rcu_irq_enter_irqson(void) 1065void rcu_irq_enter_irqson(void)
1042{ 1066{
@@ -1055,6 +1079,9 @@ void rcu_irq_enter_irqson(void)
1055 * that the CPU is active. This implementation permits nested NMIs, as 1079 * that the CPU is active. This implementation permits nested NMIs, as
1056 * long as the nesting level does not overflow an int. (You will probably 1080 * long as the nesting level does not overflow an int. (You will probably
1057 * run out of stack space first.) 1081 * run out of stack space first.)
1082 *
1083 * If you add or remove a call to rcu_nmi_enter(), be sure to test
1084 * with CONFIG_RCU_EQS_DEBUG=y.
1058 */ 1085 */
1059void rcu_nmi_enter(void) 1086void rcu_nmi_enter(void)
1060{ 1087{
@@ -1087,6 +1114,9 @@ void rcu_nmi_enter(void)
1087 * RCU-idle period, update rdtp->dynticks and rdtp->dynticks_nmi_nesting 1114 * RCU-idle period, update rdtp->dynticks and rdtp->dynticks_nmi_nesting
1088 * to let the RCU grace-period handling know that the CPU is back to 1115 * to let the RCU grace-period handling know that the CPU is back to
1089 * being RCU-idle. 1116 * being RCU-idle.
1117 *
1118 * If you add or remove a call to rcu_nmi_exit(), be sure to test
1119 * with CONFIG_RCU_EQS_DEBUG=y.
1090 */ 1120 */
1091void rcu_nmi_exit(void) 1121void rcu_nmi_exit(void)
1092{ 1122{
@@ -1207,6 +1237,22 @@ static int rcu_is_cpu_rrupt_from_idle(void)
1207} 1237}
1208 1238
1209/* 1239/*
1240 * We are reporting a quiescent state on behalf of some other CPU, so
1241 * it is our responsibility to check for and handle potential overflow
1242 * of the rcu_node ->gpnum counter with respect to the rcu_data counters.
1243 * After all, the CPU might be in deep idle state, and thus executing no
1244 * code whatsoever.
1245 */
1246static void rcu_gpnum_ovf(struct rcu_node *rnp, struct rcu_data *rdp)
1247{
1248 lockdep_assert_held(&rnp->lock);
1249 if (ULONG_CMP_LT(READ_ONCE(rdp->gpnum) + ULONG_MAX / 4, rnp->gpnum))
1250 WRITE_ONCE(rdp->gpwrap, true);
1251 if (ULONG_CMP_LT(rdp->rcu_iw_gpnum + ULONG_MAX / 4, rnp->gpnum))
1252 rdp->rcu_iw_gpnum = rnp->gpnum + ULONG_MAX / 4;
1253}
1254
1255/*
1210 * Snapshot the specified CPU's dynticks counter so that we can later 1256 * Snapshot the specified CPU's dynticks counter so that we can later
1211 * credit them with an implicit quiescent state. Return 1 if this CPU 1257 * credit them with an implicit quiescent state. Return 1 if this CPU
1212 * is in dynticks idle mode, which is an extended quiescent state. 1258 * is in dynticks idle mode, which is an extended quiescent state.
@@ -1216,15 +1262,34 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp)
1216 rdp->dynticks_snap = rcu_dynticks_snap(rdp->dynticks); 1262 rdp->dynticks_snap = rcu_dynticks_snap(rdp->dynticks);
1217 if (rcu_dynticks_in_eqs(rdp->dynticks_snap)) { 1263 if (rcu_dynticks_in_eqs(rdp->dynticks_snap)) {
1218 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti")); 1264 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
1219 if (ULONG_CMP_LT(READ_ONCE(rdp->gpnum) + ULONG_MAX / 4, 1265 rcu_gpnum_ovf(rdp->mynode, rdp);
1220 rdp->mynode->gpnum))
1221 WRITE_ONCE(rdp->gpwrap, true);
1222 return 1; 1266 return 1;
1223 } 1267 }
1224 return 0; 1268 return 0;
1225} 1269}
1226 1270
1227/* 1271/*
1272 * Handler for the irq_work request posted when a grace period has
1273 * gone on for too long, but not yet long enough for an RCU CPU
1274 * stall warning. Set state appropriately, but just complain if
1275 * there is unexpected state on entry.
1276 */
1277static void rcu_iw_handler(struct irq_work *iwp)
1278{
1279 struct rcu_data *rdp;
1280 struct rcu_node *rnp;
1281
1282 rdp = container_of(iwp, struct rcu_data, rcu_iw);
1283 rnp = rdp->mynode;
1284 raw_spin_lock_rcu_node(rnp);
1285 if (!WARN_ON_ONCE(!rdp->rcu_iw_pending)) {
1286 rdp->rcu_iw_gpnum = rnp->gpnum;
1287 rdp->rcu_iw_pending = false;
1288 }
1289 raw_spin_unlock_rcu_node(rnp);
1290}
1291
1292/*
1228 * Return true if the specified CPU has passed through a quiescent 1293 * Return true if the specified CPU has passed through a quiescent
1229 * state by virtue of being in or having passed through an dynticks 1294 * state by virtue of being in or having passed through an dynticks
1230 * idle state since the last call to dyntick_save_progress_counter() 1295 * idle state since the last call to dyntick_save_progress_counter()
@@ -1235,8 +1300,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
1235 unsigned long jtsq; 1300 unsigned long jtsq;
1236 bool *rnhqp; 1301 bool *rnhqp;
1237 bool *ruqp; 1302 bool *ruqp;
1238 unsigned long rjtsc; 1303 struct rcu_node *rnp = rdp->mynode;
1239 struct rcu_node *rnp;
1240 1304
1241 /* 1305 /*
1242 * If the CPU passed through or entered a dynticks idle phase with 1306 * If the CPU passed through or entered a dynticks idle phase with
@@ -1249,34 +1313,25 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
1249 if (rcu_dynticks_in_eqs_since(rdp->dynticks, rdp->dynticks_snap)) { 1313 if (rcu_dynticks_in_eqs_since(rdp->dynticks, rdp->dynticks_snap)) {
1250 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti")); 1314 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
1251 rdp->dynticks_fqs++; 1315 rdp->dynticks_fqs++;
1316 rcu_gpnum_ovf(rnp, rdp);
1252 return 1; 1317 return 1;
1253 } 1318 }
1254 1319
1255 /* Compute and saturate jiffies_till_sched_qs. */
1256 jtsq = jiffies_till_sched_qs;
1257 rjtsc = rcu_jiffies_till_stall_check();
1258 if (jtsq > rjtsc / 2) {
1259 WRITE_ONCE(jiffies_till_sched_qs, rjtsc);
1260 jtsq = rjtsc / 2;
1261 } else if (jtsq < 1) {
1262 WRITE_ONCE(jiffies_till_sched_qs, 1);
1263 jtsq = 1;
1264 }
1265
1266 /* 1320 /*
1267 * Has this CPU encountered a cond_resched_rcu_qs() since the 1321 * Has this CPU encountered a cond_resched_rcu_qs() since the
1268 * beginning of the grace period? For this to be the case, 1322 * beginning of the grace period? For this to be the case,
1269 * the CPU has to have noticed the current grace period. This 1323 * the CPU has to have noticed the current grace period. This
1270 * might not be the case for nohz_full CPUs looping in the kernel. 1324 * might not be the case for nohz_full CPUs looping in the kernel.
1271 */ 1325 */
1272 rnp = rdp->mynode; 1326 jtsq = jiffies_till_sched_qs;
1273 ruqp = per_cpu_ptr(&rcu_dynticks.rcu_urgent_qs, rdp->cpu); 1327 ruqp = per_cpu_ptr(&rcu_dynticks.rcu_urgent_qs, rdp->cpu);
1274 if (time_after(jiffies, rdp->rsp->gp_start + jtsq) && 1328 if (time_after(jiffies, rdp->rsp->gp_start + jtsq) &&
1275 READ_ONCE(rdp->rcu_qs_ctr_snap) != per_cpu(rcu_dynticks.rcu_qs_ctr, rdp->cpu) && 1329 READ_ONCE(rdp->rcu_qs_ctr_snap) != per_cpu(rcu_dynticks.rcu_qs_ctr, rdp->cpu) &&
1276 READ_ONCE(rdp->gpnum) == rnp->gpnum && !rdp->gpwrap) { 1330 READ_ONCE(rdp->gpnum) == rnp->gpnum && !rdp->gpwrap) {
1277 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("rqc")); 1331 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("rqc"));
1332 rcu_gpnum_ovf(rnp, rdp);
1278 return 1; 1333 return 1;
1279 } else { 1334 } else if (time_after(jiffies, rdp->rsp->gp_start + jtsq)) {
1280 /* Load rcu_qs_ctr before store to rcu_urgent_qs. */ 1335 /* Load rcu_qs_ctr before store to rcu_urgent_qs. */
1281 smp_store_release(ruqp, true); 1336 smp_store_release(ruqp, true);
1282 } 1337 }
@@ -1285,6 +1340,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
1285 if (!(rdp->grpmask & rcu_rnp_online_cpus(rnp))) { 1340 if (!(rdp->grpmask & rcu_rnp_online_cpus(rnp))) {
1286 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("ofl")); 1341 trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("ofl"));
1287 rdp->offline_fqs++; 1342 rdp->offline_fqs++;
1343 rcu_gpnum_ovf(rnp, rdp);
1288 return 1; 1344 return 1;
1289 } 1345 }
1290 1346
@@ -1304,10 +1360,6 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
1304 * updates are only once every few jiffies, the probability of 1360 * updates are only once every few jiffies, the probability of
1305 * lossage (and thus of slight grace-period extension) is 1361 * lossage (and thus of slight grace-period extension) is
1306 * quite low. 1362 * quite low.
1307 *
1308 * Note that if the jiffies_till_sched_qs boot/sysfs parameter
1309 * is set too high, we override with half of the RCU CPU stall
1310 * warning delay.
1311 */ 1363 */
1312 rnhqp = &per_cpu(rcu_dynticks.rcu_need_heavy_qs, rdp->cpu); 1364 rnhqp = &per_cpu(rcu_dynticks.rcu_need_heavy_qs, rdp->cpu);
1313 if (!READ_ONCE(*rnhqp) && 1365 if (!READ_ONCE(*rnhqp) &&
@@ -1316,15 +1368,26 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
1316 WRITE_ONCE(*rnhqp, true); 1368 WRITE_ONCE(*rnhqp, true);
1317 /* Store rcu_need_heavy_qs before rcu_urgent_qs. */ 1369 /* Store rcu_need_heavy_qs before rcu_urgent_qs. */
1318 smp_store_release(ruqp, true); 1370 smp_store_release(ruqp, true);
1319 rdp->rsp->jiffies_resched += 5; /* Re-enable beating. */ 1371 rdp->rsp->jiffies_resched += jtsq; /* Re-enable beating. */
1320 } 1372 }
1321 1373
1322 /* 1374 /*
1323 * If more than halfway to RCU CPU stall-warning time, do 1375 * If more than halfway to RCU CPU stall-warning time, do a
1324 * a resched_cpu() to try to loosen things up a bit. 1376 * resched_cpu() to try to loosen things up a bit. Also check to
1377 * see if the CPU is getting hammered with interrupts, but only
1378 * once per grace period, just to keep the IPIs down to a dull roar.
1325 */ 1379 */
1326 if (jiffies - rdp->rsp->gp_start > rcu_jiffies_till_stall_check() / 2) 1380 if (jiffies - rdp->rsp->gp_start > rcu_jiffies_till_stall_check() / 2) {
1327 resched_cpu(rdp->cpu); 1381 resched_cpu(rdp->cpu);
1382 if (IS_ENABLED(CONFIG_IRQ_WORK) &&
1383 !rdp->rcu_iw_pending && rdp->rcu_iw_gpnum != rnp->gpnum &&
1384 (rnp->ffmask & rdp->grpmask)) {
1385 init_irq_work(&rdp->rcu_iw, rcu_iw_handler);
1386 rdp->rcu_iw_pending = true;
1387 rdp->rcu_iw_gpnum = rnp->gpnum;
1388 irq_work_queue_on(&rdp->rcu_iw, rdp->cpu);
1389 }
1390 }
1328 1391
1329 return 0; 1392 return 0;
1330} 1393}
@@ -1513,6 +1576,7 @@ static void print_cpu_stall(struct rcu_state *rsp)
1513{ 1576{
1514 int cpu; 1577 int cpu;
1515 unsigned long flags; 1578 unsigned long flags;
1579 struct rcu_data *rdp = this_cpu_ptr(rsp->rda);
1516 struct rcu_node *rnp = rcu_get_root(rsp); 1580 struct rcu_node *rnp = rcu_get_root(rsp);
1517 long totqlen = 0; 1581 long totqlen = 0;
1518 1582
@@ -1528,7 +1592,9 @@ static void print_cpu_stall(struct rcu_state *rsp)
1528 */ 1592 */
1529 pr_err("INFO: %s self-detected stall on CPU", rsp->name); 1593 pr_err("INFO: %s self-detected stall on CPU", rsp->name);
1530 print_cpu_stall_info_begin(); 1594 print_cpu_stall_info_begin();
1595 raw_spin_lock_irqsave_rcu_node(rdp->mynode, flags);
1531 print_cpu_stall_info(rsp, smp_processor_id()); 1596 print_cpu_stall_info(rsp, smp_processor_id());
1597 raw_spin_unlock_irqrestore_rcu_node(rdp->mynode, flags);
1532 print_cpu_stall_info_end(); 1598 print_cpu_stall_info_end();
1533 for_each_possible_cpu(cpu) 1599 for_each_possible_cpu(cpu)
1534 totqlen += rcu_segcblist_n_cbs(&per_cpu_ptr(rsp->rda, 1600 totqlen += rcu_segcblist_n_cbs(&per_cpu_ptr(rsp->rda,
@@ -1922,6 +1988,7 @@ static bool __note_gp_changes(struct rcu_state *rsp, struct rcu_node *rnp,
1922 rdp->core_needs_qs = need_gp; 1988 rdp->core_needs_qs = need_gp;
1923 zero_cpu_stall_ticks(rdp); 1989 zero_cpu_stall_ticks(rdp);
1924 WRITE_ONCE(rdp->gpwrap, false); 1990 WRITE_ONCE(rdp->gpwrap, false);
1991 rcu_gpnum_ovf(rnp, rdp);
1925 } 1992 }
1926 return ret; 1993 return ret;
1927} 1994}
@@ -3702,6 +3769,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp)
3702 rdp->cpu_no_qs.b.norm = true; 3769 rdp->cpu_no_qs.b.norm = true;
3703 rdp->rcu_qs_ctr_snap = per_cpu(rcu_dynticks.rcu_qs_ctr, cpu); 3770 rdp->rcu_qs_ctr_snap = per_cpu(rcu_dynticks.rcu_qs_ctr, cpu);
3704 rdp->core_needs_qs = false; 3771 rdp->core_needs_qs = false;
3772 rdp->rcu_iw_pending = false;
3773 rdp->rcu_iw_gpnum = rnp->gpnum - 1;
3705 trace_rcu_grace_period(rsp->name, rdp->gpnum, TPS("cpuonl")); 3774 trace_rcu_grace_period(rsp->name, rdp->gpnum, TPS("cpuonl"));
3706 raw_spin_unlock_irqrestore_rcu_node(rnp, flags); 3775 raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
3707} 3776}
@@ -3739,10 +3808,24 @@ static void rcutree_affinity_setting(unsigned int cpu, int outgoing)
3739 */ 3808 */
3740int rcutree_online_cpu(unsigned int cpu) 3809int rcutree_online_cpu(unsigned int cpu)
3741{ 3810{
3742 sync_sched_exp_online_cleanup(cpu); 3811 unsigned long flags;
3743 rcutree_affinity_setting(cpu, -1); 3812 struct rcu_data *rdp;
3813 struct rcu_node *rnp;
3814 struct rcu_state *rsp;
3815
3816 for_each_rcu_flavor(rsp) {
3817 rdp = per_cpu_ptr(rsp->rda, cpu);
3818 rnp = rdp->mynode;
3819 raw_spin_lock_irqsave_rcu_node(rnp, flags);
3820 rnp->ffmask |= rdp->grpmask;
3821 raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
3822 }
3744 if (IS_ENABLED(CONFIG_TREE_SRCU)) 3823 if (IS_ENABLED(CONFIG_TREE_SRCU))
3745 srcu_online_cpu(cpu); 3824 srcu_online_cpu(cpu);
3825 if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
3826 return 0; /* Too early in boot for scheduler work. */
3827 sync_sched_exp_online_cleanup(cpu);
3828 rcutree_affinity_setting(cpu, -1);
3746 return 0; 3829 return 0;
3747} 3830}
3748 3831
@@ -3752,6 +3835,19 @@ int rcutree_online_cpu(unsigned int cpu)
3752 */ 3835 */
3753int rcutree_offline_cpu(unsigned int cpu) 3836int rcutree_offline_cpu(unsigned int cpu)
3754{ 3837{
3838 unsigned long flags;
3839 struct rcu_data *rdp;
3840 struct rcu_node *rnp;
3841 struct rcu_state *rsp;
3842
3843 for_each_rcu_flavor(rsp) {
3844 rdp = per_cpu_ptr(rsp->rda, cpu);
3845 rnp = rdp->mynode;
3846 raw_spin_lock_irqsave_rcu_node(rnp, flags);
3847 rnp->ffmask &= ~rdp->grpmask;
3848 raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
3849 }
3850
3755 rcutree_affinity_setting(cpu, cpu); 3851 rcutree_affinity_setting(cpu, cpu);
3756 if (IS_ENABLED(CONFIG_TREE_SRCU)) 3852 if (IS_ENABLED(CONFIG_TREE_SRCU))
3757 srcu_offline_cpu(cpu); 3853 srcu_offline_cpu(cpu);
@@ -4200,8 +4296,7 @@ void __init rcu_init(void)
4200 for_each_online_cpu(cpu) { 4296 for_each_online_cpu(cpu) {
4201 rcutree_prepare_cpu(cpu); 4297 rcutree_prepare_cpu(cpu);
4202 rcu_cpu_starting(cpu); 4298 rcu_cpu_starting(cpu);
4203 if (IS_ENABLED(CONFIG_TREE_SRCU)) 4299 rcutree_online_cpu(cpu);
4204 srcu_online_cpu(cpu);
4205 } 4300 }
4206} 4301}
4207 4302
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index 8e1f285f0a70..46a5d1991450 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -103,6 +103,7 @@ struct rcu_node {
103 /* Online CPUs for next expedited GP. */ 103 /* Online CPUs for next expedited GP. */
104 /* Any CPU that has ever been online will */ 104 /* Any CPU that has ever been online will */
105 /* have its bit set. */ 105 /* have its bit set. */
106 unsigned long ffmask; /* Fully functional CPUs. */
106 unsigned long grpmask; /* Mask to apply to parent qsmask. */ 107 unsigned long grpmask; /* Mask to apply to parent qsmask. */
107 /* Only one bit will be set in this mask. */ 108 /* Only one bit will be set in this mask. */
108 int grplo; /* lowest-numbered CPU or group here. */ 109 int grplo; /* lowest-numbered CPU or group here. */
@@ -285,6 +286,10 @@ struct rcu_data {
285 286
286 /* 8) RCU CPU stall data. */ 287 /* 8) RCU CPU stall data. */
287 unsigned int softirq_snap; /* Snapshot of softirq activity. */ 288 unsigned int softirq_snap; /* Snapshot of softirq activity. */
289 /* ->rcu_iw* fields protected by leaf rcu_node ->lock. */
290 struct irq_work rcu_iw; /* Check for non-irq activity. */
291 bool rcu_iw_pending; /* Is ->rcu_iw pending? */
292 unsigned long rcu_iw_gpnum; /* ->gpnum associated with ->rcu_iw. */
288 293
289 int cpu; 294 int cpu;
290 struct rcu_state *rsp; 295 struct rcu_state *rsp;
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index e012b9be777e..4c857e583802 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -54,6 +54,7 @@ DEFINE_PER_CPU(char, rcu_cpu_has_work);
54 * This probably needs to be excluded from -rt builds. 54 * This probably needs to be excluded from -rt builds.
55 */ 55 */
56#define rt_mutex_owner(a) ({ WARN_ON_ONCE(1); NULL; }) 56#define rt_mutex_owner(a) ({ WARN_ON_ONCE(1); NULL; })
57#define rt_mutex_futex_unlock(x) WARN_ON_ONCE(1)
57 58
58#endif /* #else #ifdef CONFIG_RCU_BOOST */ 59#endif /* #else #ifdef CONFIG_RCU_BOOST */
59 60
@@ -530,7 +531,7 @@ void rcu_read_unlock_special(struct task_struct *t)
530 531
531 /* Unboost if we were boosted. */ 532 /* Unboost if we were boosted. */
532 if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) 533 if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex)
533 rt_mutex_unlock(&rnp->boost_mtx); 534 rt_mutex_futex_unlock(&rnp->boost_mtx);
534 535
535 /* 536 /*
536 * If this was the last task on the expedited lists, 537 * If this was the last task on the expedited lists,
@@ -911,8 +912,6 @@ void exit_rcu(void)
911 912
912#ifdef CONFIG_RCU_BOOST 913#ifdef CONFIG_RCU_BOOST
913 914
914#include "../locking/rtmutex_common.h"
915
916static void rcu_wake_cond(struct task_struct *t, int status) 915static void rcu_wake_cond(struct task_struct *t, int status)
917{ 916{
918 /* 917 /*
@@ -1507,7 +1506,7 @@ static void rcu_prepare_for_idle(void)
1507 rdtp->last_accelerate = jiffies; 1506 rdtp->last_accelerate = jiffies;
1508 for_each_rcu_flavor(rsp) { 1507 for_each_rcu_flavor(rsp) {
1509 rdp = this_cpu_ptr(rsp->rda); 1508 rdp = this_cpu_ptr(rsp->rda);
1510 if (rcu_segcblist_pend_cbs(&rdp->cblist)) 1509 if (!rcu_segcblist_pend_cbs(&rdp->cblist))
1511 continue; 1510 continue;
1512 rnp = rdp->mynode; 1511 rnp = rdp->mynode;
1513 raw_spin_lock_rcu_node(rnp); /* irqs already disabled. */ 1512 raw_spin_lock_rcu_node(rnp); /* irqs already disabled. */
@@ -1671,6 +1670,7 @@ static void print_cpu_stall_info_begin(void)
1671 */ 1670 */
1672static void print_cpu_stall_info(struct rcu_state *rsp, int cpu) 1671static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
1673{ 1672{
1673 unsigned long delta;
1674 char fast_no_hz[72]; 1674 char fast_no_hz[72];
1675 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); 1675 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu);
1676 struct rcu_dynticks *rdtp = rdp->dynticks; 1676 struct rcu_dynticks *rdtp = rdp->dynticks;
@@ -1685,11 +1685,15 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
1685 ticks_value = rsp->gpnum - rdp->gpnum; 1685 ticks_value = rsp->gpnum - rdp->gpnum;
1686 } 1686 }
1687 print_cpu_stall_fast_no_hz(fast_no_hz, cpu); 1687 print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
1688 pr_err("\t%d-%c%c%c: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u fqs=%ld %s\n", 1688 delta = rdp->mynode->gpnum - rdp->rcu_iw_gpnum;
1689 pr_err("\t%d-%c%c%c%c: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u fqs=%ld %s\n",
1689 cpu, 1690 cpu,
1690 "O."[!!cpu_online(cpu)], 1691 "O."[!!cpu_online(cpu)],
1691 "o."[!!(rdp->grpmask & rdp->mynode->qsmaskinit)], 1692 "o."[!!(rdp->grpmask & rdp->mynode->qsmaskinit)],
1692 "N."[!!(rdp->grpmask & rdp->mynode->qsmaskinitnext)], 1693 "N."[!!(rdp->grpmask & rdp->mynode->qsmaskinitnext)],
1694 !IS_ENABLED(CONFIG_IRQ_WORK) ? '?' :
1695 rdp->rcu_iw_pending ? (int)min(delta, 9UL) + '0' :
1696 "!."[!delta],
1693 ticks_value, ticks_title, 1697 ticks_value, ticks_title,
1694 rcu_dynticks_snap(rdtp) & 0xfff, 1698 rcu_dynticks_snap(rdtp) & 0xfff,
1695 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting, 1699 rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
index 5033b66d2753..27694561f769 100644
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -494,6 +494,7 @@ EXPORT_SYMBOL_GPL(do_trace_rcu_torture_read);
494#endif 494#endif
495 495
496int rcu_cpu_stall_suppress __read_mostly; /* 1 = suppress stall warnings. */ 496int rcu_cpu_stall_suppress __read_mostly; /* 1 = suppress stall warnings. */
497EXPORT_SYMBOL_GPL(rcu_cpu_stall_suppress);
497static int rcu_cpu_stall_timeout __read_mostly = CONFIG_RCU_CPU_STALL_TIMEOUT; 498static int rcu_cpu_stall_timeout __read_mostly = CONFIG_RCU_CPU_STALL_TIMEOUT;
498 499
499module_param(rcu_cpu_stall_suppress, int, 0644); 500module_param(rcu_cpu_stall_suppress, int, 0644);
@@ -575,7 +576,6 @@ DEFINE_STATIC_SRCU(tasks_rcu_exit_srcu);
575static int rcu_task_stall_timeout __read_mostly = RCU_TASK_STALL_TIMEOUT; 576static int rcu_task_stall_timeout __read_mostly = RCU_TASK_STALL_TIMEOUT;
576module_param(rcu_task_stall_timeout, int, 0644); 577module_param(rcu_task_stall_timeout, int, 0644);
577 578
578static void rcu_spawn_tasks_kthread(void);
579static struct task_struct *rcu_tasks_kthread_ptr; 579static struct task_struct *rcu_tasks_kthread_ptr;
580 580
581/** 581/**
@@ -600,7 +600,6 @@ void call_rcu_tasks(struct rcu_head *rhp, rcu_callback_t func)
600{ 600{
601 unsigned long flags; 601 unsigned long flags;
602 bool needwake; 602 bool needwake;
603 bool havetask = READ_ONCE(rcu_tasks_kthread_ptr);
604 603
605 rhp->next = NULL; 604 rhp->next = NULL;
606 rhp->func = func; 605 rhp->func = func;
@@ -610,11 +609,8 @@ void call_rcu_tasks(struct rcu_head *rhp, rcu_callback_t func)
610 rcu_tasks_cbs_tail = &rhp->next; 609 rcu_tasks_cbs_tail = &rhp->next;
611 raw_spin_unlock_irqrestore(&rcu_tasks_cbs_lock, flags); 610 raw_spin_unlock_irqrestore(&rcu_tasks_cbs_lock, flags);
612 /* We can't create the thread unless interrupts are enabled. */ 611 /* We can't create the thread unless interrupts are enabled. */
613 if ((needwake && havetask) || 612 if (needwake && READ_ONCE(rcu_tasks_kthread_ptr))
614 (!havetask && !irqs_disabled_flags(flags))) {
615 rcu_spawn_tasks_kthread();
616 wake_up(&rcu_tasks_cbs_wq); 613 wake_up(&rcu_tasks_cbs_wq);
617 }
618} 614}
619EXPORT_SYMBOL_GPL(call_rcu_tasks); 615EXPORT_SYMBOL_GPL(call_rcu_tasks);
620 616
@@ -853,27 +849,18 @@ static int __noreturn rcu_tasks_kthread(void *arg)
853 } 849 }
854} 850}
855 851
856/* Spawn rcu_tasks_kthread() at first call to call_rcu_tasks(). */ 852/* Spawn rcu_tasks_kthread() at core_initcall() time. */
857static void rcu_spawn_tasks_kthread(void) 853static int __init rcu_spawn_tasks_kthread(void)
858{ 854{
859 static DEFINE_MUTEX(rcu_tasks_kthread_mutex);
860 struct task_struct *t; 855 struct task_struct *t;
861 856
862 if (READ_ONCE(rcu_tasks_kthread_ptr)) {
863 smp_mb(); /* Ensure caller sees full kthread. */
864 return;
865 }
866 mutex_lock(&rcu_tasks_kthread_mutex);
867 if (rcu_tasks_kthread_ptr) {
868 mutex_unlock(&rcu_tasks_kthread_mutex);
869 return;
870 }
871 t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread"); 857 t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread");
872 BUG_ON(IS_ERR(t)); 858 BUG_ON(IS_ERR(t));
873 smp_mb(); /* Ensure others see full kthread. */ 859 smp_mb(); /* Ensure others see full kthread. */
874 WRITE_ONCE(rcu_tasks_kthread_ptr, t); 860 WRITE_ONCE(rcu_tasks_kthread_ptr, t);
875 mutex_unlock(&rcu_tasks_kthread_mutex); 861 return 0;
876} 862}
863core_initcall(rcu_spawn_tasks_kthread);
877 864
878/* Do the srcu_read_lock() for the above synchronize_srcu(). */ 865/* Do the srcu_read_lock() for the above synchronize_srcu(). */
879void exit_tasks_rcu_start(void) 866void exit_tasks_rcu_start(void)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index d17c5da523a0..9446b2e5eac5 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -505,8 +505,7 @@ void resched_cpu(int cpu)
505 struct rq *rq = cpu_rq(cpu); 505 struct rq *rq = cpu_rq(cpu);
506 unsigned long flags; 506 unsigned long flags;
507 507
508 if (!raw_spin_trylock_irqsave(&rq->lock, flags)) 508 raw_spin_lock_irqsave(&rq->lock, flags);
509 return;
510 resched_curr(rq); 509 resched_curr(rq);
511 raw_spin_unlock_irqrestore(&rq->lock, flags); 510 raw_spin_unlock_irqrestore(&rq->lock, flags);
512} 511}
@@ -4842,6 +4841,7 @@ int __sched _cond_resched(void)
4842 preempt_schedule_common(); 4841 preempt_schedule_common();
4843 return 1; 4842 return 1;
4844 } 4843 }
4844 rcu_all_qs();
4845 return 0; 4845 return 0;
4846} 4846}
4847EXPORT_SYMBOL(_cond_resched); 4847EXPORT_SYMBOL(_cond_resched);
@@ -5165,6 +5165,7 @@ void sched_show_task(struct task_struct *p)
5165 show_stack(p, NULL); 5165 show_stack(p, NULL);
5166 put_task_stack(p); 5166 put_task_stack(p);
5167} 5167}
5168EXPORT_SYMBOL_GPL(sched_show_task);
5168 5169
5169static inline bool 5170static inline bool
5170state_filter_match(unsigned long state_filter, struct task_struct *p) 5171state_filter_match(unsigned long state_filter, struct task_struct *p)
diff --git a/tools/testing/selftests/rcutorture/bin/config_override.sh b/tools/testing/selftests/rcutorture/bin/config_override.sh
index 49fa51726ce3..ef7fcbac3d42 100755
--- a/tools/testing/selftests/rcutorture/bin/config_override.sh
+++ b/tools/testing/selftests/rcutorture/bin/config_override.sh
@@ -42,7 +42,7 @@ else
42 exit 1 42 exit 1
43fi 43fi
44 44
45T=/tmp/config_override.sh.$$ 45T=${TMPDIR-/tmp}/config_override.sh.$$
46trap 'rm -rf $T' 0 46trap 'rm -rf $T' 0
47mkdir $T 47mkdir $T
48 48
diff --git a/tools/testing/selftests/rcutorture/bin/configcheck.sh b/tools/testing/selftests/rcutorture/bin/configcheck.sh
index 70fca318a82b..197deece7c7c 100755
--- a/tools/testing/selftests/rcutorture/bin/configcheck.sh
+++ b/tools/testing/selftests/rcutorture/bin/configcheck.sh
@@ -19,7 +19,7 @@
19# 19#
20# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 20# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
21 21
22T=/tmp/abat-chk-config.sh.$$ 22T=${TMPDIR-/tmp}/abat-chk-config.sh.$$
23trap 'rm -rf $T' 0 23trap 'rm -rf $T' 0
24mkdir $T 24mkdir $T
25 25
diff --git a/tools/testing/selftests/rcutorture/bin/configinit.sh b/tools/testing/selftests/rcutorture/bin/configinit.sh
index 3f81a1095206..51f66a7ce876 100755
--- a/tools/testing/selftests/rcutorture/bin/configinit.sh
+++ b/tools/testing/selftests/rcutorture/bin/configinit.sh
@@ -32,7 +32,7 @@
32# 32#
33# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 33# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
34 34
35T=/tmp/configinit.sh.$$ 35T=${TMPDIR-/tmp}/configinit.sh.$$
36trap 'rm -rf $T' 0 36trap 'rm -rf $T' 0
37mkdir $T 37mkdir $T
38 38
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-build.sh b/tools/testing/selftests/rcutorture/bin/kvm-build.sh
index 46752c164676..fb66d0173638 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-build.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-build.sh
@@ -35,7 +35,7 @@ then
35 exit 1 35 exit 1
36fi 36fi
37 37
38T=/tmp/test-linux.sh.$$ 38T=${TMPDIR-/tmp}/test-linux.sh.$$
39trap 'rm -rf $T' 0 39trap 'rm -rf $T' 0
40mkdir $T 40mkdir $T
41 41
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
index 0af36a721b9c..ab14b97c942c 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
@@ -38,7 +38,7 @@
38# 38#
39# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 39# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
40 40
41T=/tmp/kvm-test-1-run.sh.$$ 41T=${TMPDIR-/tmp}/kvm-test-1-run.sh.$$
42trap 'rm -rf $T' 0 42trap 'rm -rf $T' 0
43mkdir $T 43mkdir $T
44 44
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
index b55895fb10ed..ccd49e958fd2 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -30,7 +30,7 @@
30scriptname=$0 30scriptname=$0
31args="$*" 31args="$*"
32 32
33T=/tmp/kvm.sh.$$ 33T=${TMPDIR-/tmp}/kvm.sh.$$
34trap 'rm -rf $T' 0 34trap 'rm -rf $T' 0
35mkdir $T 35mkdir $T
36 36
@@ -222,7 +222,7 @@ do
222 exit 1 222 exit 1
223 fi 223 fi
224done 224done
225sort -k2nr $T/cfgcpu > $T/cfgcpu.sort 225sort -k2nr $T/cfgcpu -T="$T" > $T/cfgcpu.sort
226 226
227# Use a greedy bin-packing algorithm, sorting the list accordingly. 227# Use a greedy bin-packing algorithm, sorting the list accordingly.
228awk < $T/cfgcpu.sort > $T/cfgcpu.pack -v ncpus=$cpus ' 228awk < $T/cfgcpu.sort > $T/cfgcpu.pack -v ncpus=$cpus '
diff --git a/tools/testing/selftests/rcutorture/bin/parse-build.sh b/tools/testing/selftests/rcutorture/bin/parse-build.sh
index a6b57622c2e5..24fe5f822b28 100755
--- a/tools/testing/selftests/rcutorture/bin/parse-build.sh
+++ b/tools/testing/selftests/rcutorture/bin/parse-build.sh
@@ -28,7 +28,7 @@
28 28
29F=$1 29F=$1
30title=$2 30title=$2
31T=/tmp/parse-build.sh.$$ 31T=${TMPDIR-/tmp}/parse-build.sh.$$
32trap 'rm -rf $T' 0 32trap 'rm -rf $T' 0
33mkdir $T 33mkdir $T
34 34
diff --git a/tools/testing/selftests/rcutorture/bin/parse-torture.sh b/tools/testing/selftests/rcutorture/bin/parse-torture.sh
index e3c5f0705696..f12c38909b00 100755
--- a/tools/testing/selftests/rcutorture/bin/parse-torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/parse-torture.sh
@@ -27,7 +27,7 @@
27# 27#
28# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 28# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
29 29
30T=/tmp/parse-torture.sh.$$ 30T=${TMPDIR-/tmp}/parse-torture.sh.$$
31file="$1" 31file="$1"
32title="$2" 32title="$2"
33 33