Home
last modified time | relevance | path

Searched full:rcu (Results 1 – 25 of 1168) sorted by relevance

12345678910>>...47

/linux/kernel/rcu/
H A DKconfig.debug3 # RCU-related debugging configuration options
6 menu "RCU Debugging"
12 bool "RCU list lockdep debugging"
16 Enable RCU lockdep checking for list usages. By default it is
17 turned off since there are several list RCU users that still
27 tristate "performance tests for RCU"
33 tests on the RCU infrastructure. The kernel module may be built
36 Say Y here if you want RCU performance tests to be built into
38 Say M if you want the RCU performance tests to build as a module.
42 tristate "torture tests for RCU"
[all …]
H A Dupdate.c50 #include "rcu.h"
68 * rcu_read_lock_held_common() - might we be in RCU-sched read-side critical section?
77 * RCU-sched read-side critical section. In absence of
78 * CONFIG_DEBUG_LOCK_ALLOC, this assumes we are in an RCU-sched read-side
80 * of preemption (including disabling irqs) counts as an RCU-sched
82 * that required that they be called within an RCU-sched read-side
88 * Note that if the CPU is in the idle loop from an RCU point of view (ie:
91 * rcu_read_lock(). The reason for this is that RCU ignores CPUs that are
93 * so such a CPU is effectively never in an RCU read-side critical section
94 * regardless of what RCU primitives it invokes. This state of affairs is
[all …]
H A Dtree_stall.h3 * RCU CPU stall warnings for normal RCU grace periods
19 /* panic() on RCU Stall sysctl. */
101 /* Don't do RCU CPU stall warnings during long sysrq printouts. */
114 /* Don't print RCU CPU stall warnings during a kernel panic. */
141 panic("RCU Stall\n"); in panic_on_rcu_stall()
162 // Interaction with RCU grace periods
179 /* Zero ->ticks_this_gp and snapshot the number of RCU softirq handlers. */
209 * Handler for the irq_work request posted about halfway into the RCU CPU
230 // Printing RCU CPU stall warnings
235 * Dump detailed information for all tasks blocking the current RCU
[all …]
H A Dtree_plugin.h42 * Check the RCU kernel configuration parameters and print informative
54 pr_info("\tHierarchical RCU autobalancing is disabled.\n"); in rcu_bootup_announce_oddness()
120 * Tell them what RCU they are running.
124 pr_info("Preemptible hierarchical RCU implementation.\n"); in rcu_bootup_announce()
135 * Queues a task preempted within an RCU-preempt read-side critical
157 * their RCU read-side critical sections. At that point, the ->gp_tasks
174 /* RCU better not be waiting on newly onlined CPUs! */ in rcu_preempt_ctxt_queue()
282 * Record a preemptible-RCU quiescent state for the specified CPU.
285 * grace period need not wait on any RCU read-side critical section that
287 * in an RCU rea
[all...]
H A Dtree.c15 * Documentation/RCU
18 #define pr_fmt(fmt) "rcu: " fmt
70 #include "rcu.h"
134 * RCU can assume that there is but one task, allowing RCU to (for example)
136 * is RCU_SCHEDULER_INIT, RCU must actually do all the hard work required
138 * boot-time false positives from lockdep-RCU error checking. Finally, it
139 * transitions from RCU_SCHEDULER_INIT to RCU_SCHEDULER_RUNNING after RCU
148 * is capable of creating new tasks. So RCU processing (for example,
149 * creating tasks for RCU priority boosting) must be delayed until after
151 * currently delay invocation of any RCU callbacks until after this point.
[all …]
/linux/Documentation/RCU/
H A Drcu.rst3 RCU Concepts
6 The basic idea behind RCU (read-copy update) is to split destructive
11 since dropped their references. For example, an RCU-protected deletion
14 information on using RCU with linked lists.
19 - Why would anyone want to use RCU?
21 The advantage of RCU's two-part approach is that RCU readers need
25 on modern CPUs is what gives RCU its performance advantages
26 in read-mostly situations. The fact that RCU readers need not
30 if the RCU readers give no indication when they are done?
32 Just as with spinlocks, RCU readers are not permitted to
[all …]
H A DRTFP.txt4 This document describes RCU-related publications, and is followed by
6 be found at http://www.rdrop.com/users/paulmck/RCU/. For others, browsers
9 The first thing resembling RCU was published in 1980, when Kung and Lehman
23 serialization, which is an RCU-like mechanism that relies on the presence
31 (In contrast, implementation of RCU is permitted only in software licensed
35 At first glance, this has nothing to do with RCU, but nevertheless
37 RCU implementation in DYNIX/ptx. In 1988, Barbara Liskov published
66 synchronization [HMassalinPhD]. RCU makes extremely heavy use of
91 1995 also saw the first publication of DYNIX/ptx's RCU mechanism
98 mechanism, which is quite similar to RCU [Gamsa99]. These operating
[all …]
H A Dlockdep.rst4 RCU and lockdep checking
7 All flavors of RCU have lockdep checking available, so that lockdep is
8 aware of when each task enters and leaves any flavor of RCU read-side
9 critical section. Each flavor of RCU is tracked separately (but note
11 tracking to include RCU state, which can sometimes help when debugging
14 In addition, RCU provides the following primitives that check lockdep's
17 rcu_read_lock_held() for normal RCU.
18 rcu_read_lock_bh_held() for RCU-bh.
19 rcu_read_lock_sched_held() for RCU-sched.
20 rcu_read_lock_any_held() for any of normal RCU, RCU-bh, and RCU-sched.
[all …]
H A Dchecklist.rst4 Review Checklist for RCU Patches
9 that make use of RCU. Violating any of the rules listed below will
14 0. Is RCU being applied to a read-mostly situation? If the data
17 performance measurements show that RCU is nonetheless the right
18 tool for the job. Yes, RCU does reduce read-side overhead by
20 of RCU will do much more reading than updating.
22 Another exception is where performance is not an issue, and RCU
27 Yet another exception is where the low real-time latency of RCU's
30 One final exception is where RCU readers are used to prevent
40 RCU does allow *readers* to run (almost) naked, but *writers* must
[all …]
H A DUP.rst3 RCU on Uniprocessor Systems
18 Suppose that an RCU-based algorithm scans a linked list containing
40 Suppose that an RCU-based algorithm again scans a linked list containing
45 RCU usage, since call_rcu() must wait for a grace period to elapse.
48 underlying RCU, namely that call_rcu() defers invoking its arguments until
49 all RCU read-side critical sections currently executing have completed.
85 What locking restriction must RCU callbacks respect?
89 It is important to note that userspace RCU implementations *do*
93 Nevertheless, people writing userspace RCU implementations are strongly
100 Permitting call_rcu() to immediately invoke its arguments breaks RCU,
[all …]
H A Dlockdep-splat.rst4 Lockdep-RCU Splat
7 Lockdep-RCU was added to the Linux kernel in early 2010
9 misuses of the RCU API, most notably using one of the rcu_dereference()
10 family to access an RCU-protected pointer without the proper protection.
11 When such misuse is detected, an lockdep-RCU splat is emitted.
13 The usual cause of a lockdep-RCU splat is someone accessing an
14 RCU-protected data structure without either (1) being in the right kind of
15 RCU read-side critical section or (2) holding the right update-side lock.
20 So let's look at an example RCU lockdep splat from 3.0-rc5, one that
24 WARNING: suspicious RCU usage
[all …]
H A Dtorture.rst4 RCU Torture Test Operation
11 The CONFIG_RCU_TORTURE_TEST config option is available for all RCU
26rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_…
27rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0…
28 rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0
29 rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0
30rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 1554…
31rcu-torture:--- End of test: SUCCESS: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_n…
36 the RCU torture test. The printk()s use KERN_ALERT, so they should
41 automatic determination as to whether RCU operated correctly.
[all …]
/linux/tools/memory-model/
H A Dlinux-kernel.cat64 let gp = po ; [Sync-rcu | Sync-srcu] ; po?
69 let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
71 Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
121 (* RCU *)
129 * In the definition of rcu-fence below, the po term at the left-hand side
131 * out. They have been moved into the definitions of rcu-link and rb.
134 let rcu-gp = [Sync-rcu] (* Compare with gp *)
136 let rcu
[all...]
H A Dlinux-kernel.bell29 'rcu-lock (*rcu_read_lock*) ||
30 'rcu-unlock (*rcu_read_unlock*) ||
31 'sync-rcu (*synchronize_rcu*) ||
56 (* Compute matching pairs of nested Rcu-lock and Rcu-unlock *)
57 let rcu-rscs = let rec
58 unmatched-locks = Rcu-lock \ domain(matched)
59 and unmatched-unlocks = Rcu-unlock \ range(matched)
69 flag ~empty Rcu-lock \ domain(rcu
[all...]
/linux/Documentation/RCU/Design/Requirements/
H A DRequirements.rst2 A Tour Through RCU's Requirements
18 Read-copy update (RCU) is a synchronization mechanism that is often used
19 as a replacement for reader-writer locking. RCU is unusual in that
20 updaters do not block readers, which means that RCU's read-side
23 this concurrency between RCU readers and updaters does raise the
24 question of exactly what RCU readers are doing, which in turn raises the
25 question of exactly what RCU's requirements are.
27 This document therefore summarizes RCU's requirements, and can be
28 thought of as an informal, high-level specification for RCU. It is
29 important to understand that RCU's specification is primarily empirical
[all …]
/linux/Documentation/devicetree/bindings/phy/
H A Dlantiq,vrx200-pcie-phy.yaml45 lantiq,rcu:
47 description: phandle to the RCU syscon
49 lantiq,rcu-endian-offset:
51 description: the offset of the endian registers for this PHY instance in the RCU syscon
53 lantiq,rcu-big-endian-mask:
73 - lantiq,rcu
74 - lantiq,rcu-endian-offset
75 - lantiq,rcu-big-endian-mask
84 lantiq,rcu = <&rcu0>;
85 lantiq,rcu-endian-offset = <0x4c>;
[all …]
/linux/tools/rcu/
H A Drcu-cbs.py4 # Dump out the number of RCU callbacks outstanding.
6 # On older kernels having multiple flavors of RCU, this dumps out the
9 # Usage: sudo drgn rcu-cbs.py
22 rdp0 = prog.variable('rcu_preempt_data', 'kernel/rcu/tree.c');
29 'kernel/rcu/tree.c');
34 rdp0 = prog.variable('rcu_data', 'kernel/rcu/tree.c');
39 # Sum up RCU callbacks.
44 # print("CPU " + str(cpu) + " RCU callbacks: " + str(len));
46 print("Number of RCU callbacks in flight: " + str(sum));
/linux/include/linux/
H A Drculist.h8 * RCU-protected list version
14 * INIT_LIST_HEAD_RCU - Initialize a list_head visible to RCU readers
29 * return the ->next pointer of a list_head in an rcu safe
34 * Return the ->prev pointer of a list_head in an rcu safe way. Don't
56 * Check during list traversal that we are within an RCU reader
66 "RCU-list traversed in non-reader section!"); \
72 "RCU-list traversed without holding the required lock!");\
100 * list_add_rcu - add a new entry to rcu-protected list
121 * list_add_tail_rcu - add a new entry to rcu-protected list
147 * the entry is in an undefined state. It is useful for RCU based
[all …]
H A Drcupdate_wait.h6 * RCU synchronization types and methods:
14 * Structure allowing asynchronous waiting on RCU.
42 * This macro waits concurrently for multiple types of RCU grace periods.
44 * on concurrent RCU and RCU-tasks grace periods. Waiting on a given SRCU
51 * invocation of call_rcu() and that of the corresponding RCU callback
54 * The first argument tells Tiny RCU's _wait_rcu_gp() not to
55 * bother waiting for RCU. The reason for this is because anywhere
71 // Has the current task blocked within its current RCU read-side
/linux/Documentation/translations/it_IT/RCU/
H A Dtorture.rst6 Le operazioni RCU per le verifiche *torture*
13 RCU. L'opzione creerà un modulo rcutorture che potrete caricare per avviare le
26rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_…
27rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0…
28 rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0
29 rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0
30rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 1554…
31rcu-torture:--- End of test: SUCCESS: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_n…
47 * "ver": Il numero di volte dall'avvio che il processo scrittore di RCU ha
52 illuderti che RCU stia funzionando mentre invece non è il caso. :-/
[all …]
/linux/Documentation/RCU/Design/Data-Structures/
H A DData-Structures.rst12 This document describes RCU's major data structures and their relationship
18 RCU is for all intents and purposes a large state machine, and its
19 data structures maintain the state in such a way as to allow RCU readers
20 to execute extremely quickly, while also processing the RCU grace periods
22 The efficiency and scalability of RCU updaters is provided primarily
35 If the actual hardware has only 16 CPUs, RCU will adjust itself
88 32-bit system), then RCU will automatically add more levels to the tree.
90 65,536 CPUs, RCU would configure the ``rcu_node`` tree as follows:
94 RCU currently permits up to a four-level tree, which on a 64-bit system
102 and scalability benefits of partitioning, even though RCU grace-period
[all …]
/linux/Documentation/RCU/Design/Expedited-Grace-Periods/
H A DExpedited-Grace-Periods.rst8 This document describes RCU's expedited grace periods.
9 Unlike RCU's normal grace periods, which accept long latencies to attain
13 There are two flavors of RCU (RCU-preempt and RCU-sched), with an earlier
14 third RCU-bh flavor having been implemented in terms of the other two.
20 The expedited RCU grace periods cannot be accused of being subtle,
31 As always for RCU, once everything has spent some time in a quiescent
35 operation depend on the RCU flavor, as described in the following
38 RCU-preempt Expedited Grace Periods
41 ``CONFIG_PREEMPTION=y`` kernels implement RCU-preempt.
42 The overall flow of the handling of a given CPU by an RCU-preempt
[all …]
/linux/kernel/bpf/
H A Dbpf_local_storage.c115 /* rcu tasks trace callback for bpf_ma == false */
116 static void __bpf_local_storage_free_trace_rcu(struct rcu_head *rcu) in __bpf_local_storage_free_trace_rcu() argument
120 /* If RCU Tasks Trace grace period implies RCU grace period, do in __bpf_local_storage_free_trace_rcu()
123 local_storage = container_of(rcu, struct bpf_local_storage, rcu); in __bpf_local_storage_free_trace_rcu()
127 kfree_rcu(local_storage, rcu); in __bpf_local_storage_free_trace_rcu()
130 static void bpf_local_storage_free_rcu(struct rcu_head *rcu) in bpf_local_storage_free_rcu() argument
134 local_storage = container_of(rcu, struct bpf_local_storage, rcu); in bpf_local_storage_free_rcu()
138 static void bpf_local_storage_free_trace_rcu(struct rcu_head *rcu) in bpf_local_storage_free_trace_rcu() argument
141 bpf_local_storage_free_rcu(rcu); in bpf_local_storage_free_trace_rcu()
143 call_rcu(rcu, bpf_local_storage_free_rcu); in bpf_local_storage_free_trace_rcu()
[all …]
/linux/tools/memory-model/Documentation/
H A Dexplanation.txt30 22. RCU RELATIONS: rcu-link, rcu-gp, rcu-rscsi, rcu-order, rcu-fence, and rb
929 Rcu: This requires that RCU read-side critical sections and
930 grace periods obey the rules of RCU, in particular, the
940 "rcu" and "plain-coherence" axioms are specific to the LKMM.
1513 RCU RELATIONS: rcu-link, rcu-gp, rcu-rscsi, rcu-order, rcu-fence, and rb
1516 RCU (Read-Copy-Update) is a powerful synchronization mechanism. It
1525 As far as memory models are concerned, RCU's main feature is its
1543 Here is a simple example of RCU in action:
1574 In the kernel's implementations of RCU, the requirements for stores
1576 suitable places in the RCU-related code. Thus, if a critical section
[all …]
/linux/kernel/trace/
H A Dtrace_preemptirq.c21 * tooling: these calls will only happen with RCU enabled, which can
24 * On older architectures, RCU may not be watching in idle. In that
25 * case, wake up RCU to watch while calling the tracepoint. These
55 * used in the low level entry code where the ordering vs. RCU is important
57 * tracking into a RCU on and a RCU off section.
86 * used in the low level entry code where the ordering vs. RCU is important
88 * tracking into a RCU on and a RCU off section.

12345678910>>...47