Home
last modified time | relevance | path

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

12345678910>>...45

/linux/Documentation/RCU/
H A DwhatisRCU.rst3 What is RCU? -- "Read, Copy, Update"
6 Please note that the "What is RCU?" LWN series is an excellent place
7 to start learning about RCU:
9 | 1. What is RCU, Fundamentally? https://lwn.net/Articles/262464/
10 | 2. What is RCU? Part 2: Usage https://lwn.net/Articles/263130/
11 | 3. RCU part 3: the RCU API https://lwn.net/Articles/264090/
12 | 4. The RCU API, 2010 Edition https://lwn.net/Articles/418853/
14 | 5. The RCU API, 2014 Edition https://lwn.net/Articles/609904/
16 | 6. The RCU AP
776 quiz_25B. "TOY" EXAMPLE #2: CLASSIC RCU global() argument
784 quiz_35B. "TOY" EXAMPLE #2: CLASSIC RCU global() argument
793 6_whatisRCU5B. "TOY" EXAMPLE #2: CLASSIC RCU global() argument
[all...]
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 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 Drcu_dereference.rst7 important to correct use of things like RCU. To this end, the pointers
24 from your calls to rcu_dereference() and friends, thus keeping your RCU
28 to load an RCU-protected pointer, otherwise CONFIG_PROVE_RCU
80 - If you are using RCU to protect JITed functions, so that the
143 RCU-protected circular linked lists.
146 of an RCU read-side critical section, and the pointer
153 Within an RCU read-side critical section, there is little
185 That said, this situation can make certain RCU usage
188 of such an RCU usage bug is shown in the section titled
189 "EXAMPLE OF AMPLIFIED RCU-USAGE BUG".
[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/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
46 * list_for_each_rcu - Iterate over a list in an RCU-safe fashion
66 * Check during list traversal that we are within an RCU reader
76 "RCU-list traversed in non-reader section!"); \
82 "RCU-list traversed without holding the required lock!");\
110 * list_add_rcu - add a new entry to rcu-protected list
131 * list_add_tail_rcu - add a new entry to rcu-protected list
[all …]
H A Dirq-entry-common.h63 * arch_in_rcu_eqs - Architecture specific check for RCU extended quiescent
66 * Returns: true if the CPU is potentially in an RCU EQS, false otherwise.
70 * is safe to over-estimate at the cost of redundant RCU management work.
83 * interrupts enabled. Also with NO_HZ_FULL RCU might be idle.
86 * 2) Invoke context tracking if enabled to reactivate RCU
253 * interrupts disabled when this is invoked. Also tell RCU about it.
256 * 2) Invoke context tracking if enabled to adjust RCU state
289 * The function establishes state (lockdep, RCU (context tracking), tracing)
375 * The function establishes state (lockdep, RCU (context tracking), tracing) and
390 * RCU is watching or not. in irqentry_enter_from_kernel_mode()
[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
H A Dsrcutree.h262 * Note that both this_cpu_inc() and atomic_long_inc() are RCU read-side
267 * synchronize_rcu() or synchronize_rcu_expedited(), that is, RCU,
270 * The __srcu_read_unlock_fast() function also relies on this same RCU
273 * The key point behind this RCU trick is that if any part of a given
274 * RCU reader precedes the beginning of a given RCU grace period, then
275 * the entirety of that RCU reader and everything preceding it happens
276 * before the end of that same RCU grace period. Similarly, if any part
277 * of a given RCU reader follows the end of a given RCU grace period,
278 * then the entirety of that RCU reader and everything following it
279 * happens after the beginning of that same RCU grace period. Therefore,
[all …]
/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/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/io_uring/
H A Deventfd.c21 struct rcu_head rcu; member
28 static void io_eventfd_free(struct rcu_head *rcu) in io_eventfd_free() argument
30 struct io_ev_fd *ev_fd = container_of(rcu, struct io_ev_fd, rcu); in io_eventfd_free()
39 call_rcu(&ev_fd->rcu, io_eventfd_free); in io_eventfd_put()
42 static void io_eventfd_do_signal(struct rcu_head *rcu) in io_eventfd_do_signal() argument
44 struct io_ev_fd *ev_fd = container_of(rcu, struct io_ev_fd, rcu); in io_eventfd_do_signal()
61 call_rcu_hurry(&ev_fd->rcu, io_eventfd_do_signal); in __io_eventfd_signal()
82 guard(rcu)(); in io_eventfd_signal() local
/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.
/linux/Documentation/devicetree/bindings/mips/lantiq/
H A Drcu.txt1 Lantiq XWAY SoC RCU binding
4 This binding describes the RCU (reset controller unit) multifunction device,
7 The RCU register range is used for multiple purposes. Mostly one device
10 With this patch all accesses to the RCU registers will go through
17 "lantiq,xrx200-rcu", "simple-mfd", "syscon"
22 Example of the RCU bindings on a xRX200 SoC:
23 rcu0: rcu@203000 {
24 compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
/linux/Documentation/RCU/Design/Memory-Ordering/
H A DTree-RCU-Memory-Ordering.rst12 This document gives a rough visual overview of how Tree RCU's
15 What Is Tree RCU's Grace Period Memory Ordering Guarantee?
18 RCU grace periods provide extremely strong memory-ordering guarantees
20 Any code that happens after the end of a given RCU grace period is guaranteed
22 period that are within RCU read-side critical sections.
23 Similarly, any code that happens before the beginning of a given RCU grace
25 of that grace period that are within RCU read-side critical sections.
27 Note well that RCU-sched read-side critical sections include any region
33 RCU updaters use this guarantee by splitting their updates into
37 a linked RCU-protected data structure, and phase two frees that element.
[all …]
/linux/Documentation/litmus-tests/
H A DREADME70 RCU (/rcu directory)
75 ensure that an RCU reader will not see pre-initialization garbage.
77 RCU+sync+read.litmus
78 RCU+sync+free.litmus
79 Both the above litmus tests demonstrate the RCU grace period guarantee
80 that an RCU read-side critical section can never span a grace period.
/linux/rust/kernel/
H A Drevocable.rs10 use crate::{bindings, prelude::*, sync::rcu, types::Opaque};
44 /// Sample example as above, but explicitly using the rcu read side lock.
48 /// use kernel::sync::rcu;
56 /// let guard = rcu::read_lock();
100 let guard = rcu::read_lock(); in try_access()
103 // because the RCU read side lock prevents it from being dropped. in try_access()
115 /// remain accessible while the rcu read side guard is alive. In such cases, callers are not
118 pub fn try_access_with_guard<'a>(&'a self, _guard: &'a rcu::Guard) -> Option<&'a T> { in try_access_with_guard()
121 // valid because the RCU read side lock prevents it from being dropped. in try_access_with_guard()
230 /// holding the RCU read-side lock.
[all …]
/linux/net/batman-adv/
H A Dtypes.h214 /** @rcu: struct used for freeing in an RCU-safe manner */
215 struct rcu_head rcu; member
286 /** @rcu: struct used for freeing in an RCU-safe manner */
287 struct rcu_head rcu; member
356 /** @rcu: struct used for freeing in a RCU-safe manner */
357 struct rcu_head rcu; member
509 /** @rcu: struct used for freeing in an RCU-safe manner */
510 struct rcu_head rcu; member
567 /** @rcu: struct used for freeing in an RCU-safe manner */
568 struct rcu_head rcu; member
[all …]

12345678910>>...45