Home
last modified time | relevance | path

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

12345678910>>...102

/kernel/linux/linux-5.10/Documentation/RCU/
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 :ref:`Documentation/RCU/listRCU.rst <list_rcu_doc>` for more information on
15 using RCU with linked lists.
20 - Why would anyone want to use RCU?
22 The advantage of RCU's two-part approach is that RCU readers need
26 on modern CPUs is what gives RCU its performance advantages
27 in read-mostly situations. The fact that RCU readers need not
31 if the RCU readers give no indication when they are done?
[all …]
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? http://lwn.net/Articles/262464/
10 | 2. What is RCU? Part 2: Usage http://lwn.net/Articles/263130/
11 | 3. RCU part 3: the RCU API http://lwn.net/Articles/264090/
12 | 4. The RCU API, 2010 Edition http://lwn.net/Articles/418853/
14 | 5. The RCU API, 2014 Edition http://lwn.net/Articles/609904/
18 What is RCU?
20 RCU is a synchronization mechanism that was added to the Linux kernel
[all …]
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 …]
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.
31 Check for RCU read-side critical section.
[all …]
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 …]
Dstallwarn.rst4 Using RCU's CPU Stall Detector
7 This document first discusses what sorts of issues RCU's CPU stall
13 What Causes RCU CPU Stall Warnings?
16 So your kernel printed an RCU CPU stall warning. The next question is
17 "What caused it?" The following problems can result in RCU CPU stall
20 - A CPU looping in an RCU read-side critical section.
37 RCU CPU stall warning messages. Especially if you have added
40 - Anything that prevents RCU's grace-period kthreads from running.
48 happen to preempt a low-priority task in the middle of an RCU
51 in which case the next RCU grace period can never complete, which
[all …]
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.
84 What locking restriction must RCU callbacks respect?
91 Permitting call_rcu() to immediately invoke its arguments breaks RCU,
92 even on a UP system. So do not do it! Even on a UP system, the RCU
101 preemptable RCU?
[all …]
/kernel/linux/linux-6.6/kernel/rcu/
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 …]
DKconfig3 # RCU-related configuration options
6 menu "RCU Subsystem"
14 This option selects the RCU implementation that is
24 This option selects the RCU implementation that is
36 This option selects the RCU implementation that is
39 memory footprint of RCU.
42 bool "Make expert-level adjustments to RCU configuration"
46 expert-level adjustments to RCU configuration. By default,
50 obscure RCU options to be set up.
52 Say Y if you need to make expert-level adjustments to RCU.
[all …]
/kernel/linux/linux-5.10/kernel/rcu/
DKconfig3 # RCU-related configuration options
6 menu "RCU Subsystem"
12 This option selects the RCU implementation that is
22 This option selects the RCU implementation that is
34 This option selects the RCU implementation that is
37 memory footprint of RCU.
40 bool "Make expert-level adjustments to RCU configuration"
44 expert-level adjustments to RCU configuration. By default,
48 obscure RCU options to be set up.
50 Say Y if you need to make expert-level adjustments to RCU.
[all …]
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"
37 tests on the RCU infrastructure. The kernel module may be built
40 Say Y here if you want RCU performance tests to be built into
42 Say M if you want the RCU performance tests to build as a module.
46 tristate "torture tests for RCU"
[all …]
/kernel/linux/linux-6.6/Documentation/RCU/
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 …]
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 API, 2019 Edition https://lwn.net/Articles/777036/
21 | 1. Unraveling RCU Mysteries: Fundamentals https://www.linuxfoundation.org/webinars/unrav…
[all …]
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 …]
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 …]
Dstallwarn.rst4 Using RCU's CPU Stall Detector
7 This document first discusses what sorts of issues RCU's CPU stall
13 What Causes RCU CPU Stall Warnings?
16 So your kernel printed an RCU CPU stall warning. The next question is
17 "What caused it?" The following problems can result in RCU CPU stall
20 - A CPU looping in an RCU read-side critical section.
37 RCU CPU stall warning messages. Especially if you have added
40 - Anything that prevents RCU's grace-period kthreads from running.
48 happen to preempt a low-priority task in the middle of an RCU
51 in which case the next RCU grace period can never complete, which
[all …]
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 …]
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 …]
/kernel/linux/linux-5.10/tools/memory-model/
Dlinux-kernel.cat42 let gp = po ; [Sync-rcu | Sync-srcu] ; po?
47 let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
49 Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
98 (* RCU *)
106 * In the definition of rcu-fence below, the po term at the left-hand side
108 * out. They have been moved into the definitions of rcu-link and rb.
111 let rcu-gp = [Sync-rcu] (* Compare with gp *)
113 let rcu-rscsi = rcu-rscs^-1
118 * one but two non-rf relations, but only in conjunction with an RCU
121 let rcu-link = po? ; hb* ; pb* ; prop ; po
[all …]
/kernel/linux/linux-6.6/tools/memory-model/
Dlinux-kernel.cat54 let gp = po ; [Sync-rcu | Sync-srcu] ; po?
59 let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
61 Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
111 (* RCU *)
119 * In the definition of rcu-fence below, the po term at the left-hand side
121 * out. They have been moved into the definitions of rcu-link and rb.
124 let rcu-gp = [Sync-rcu] (* Compare with gp *)
126 let rcu-rscsi = rcu-rscs^-1
131 * one but two non-rf relations, but only in conjunction with an RCU
134 let rcu-link = po? ; hb* ; pb* ; prop ; po
[all …]
/kernel/linux/linux-6.6/Documentation/RCU/Design/Requirements/
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 …]
/kernel/linux/linux-5.10/Documentation/RCU/Design/Requirements/
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 …]
/kernel/linux/linux-6.6/kernel/
Dcontext_tracking.c6 * This is used by RCU to remove its dependency on the timer tick while a CPU
16 * RCU extended quiescent state bits imported from kernel/rcu/tree.c
26 #include <trace/events/rcu.h>
57 /* Turn on heavyweight RCU tasks trace readers on idle/user entry. */
66 /* Turn off heavyweight RCU tasks trace readers on idle/user exit. */
78 * RCU is watching prior to the call to this function and is no longer
86 * CPUs seeing atomic_add_return() must see prior RCU read-side in ct_kernel_exit_state()
92 // RCU is no longer watching. Better be in extended quiescent state! in ct_kernel_exit_state()
98 * called from an extended quiescent state, that is, RCU is not watching
107 * and we also must force ordering with the next RCU read-side in ct_kernel_enter_state()
[all …]
/kernel/linux/linux-6.6/include/linux/
Drcupdate.h52 // not-yet-completed RCU grace periods.
161 * Note a quasi-voluntary context switch for RCU-tasks's benefit.
231 * rcu_trace_implies_rcu_gp - does an RCU Tasks Trace grace period imply an RCU grace period?
233 * As an accident of implementation, an RCU Tasks Trace grace period also
234 * acts as an RCU grace period. However, this could change at any time.
243 * cond_resched_tasks_rcu_qs - Report potential quiescent states to RCU
246 * report potential quiescent states to RCU-tasks even if the cond_resched()
256 * rcu_softirq_qs_periodic - Report RCU and RCU-Tasks quiescent states
263 * provide both RCU and RCU-Tasks quiescent states. Note that this macro
266 * Because regions of code that have disabled softirq act as RCU read-side
[all …]
/kernel/linux/linux-5.10/include/linux/
Drcupdate.h122 * RCU_NONIDLE - Indicate idle-loop code that needs RCU readers
123 * @a: Code that RCU needs to pay attention to.
125 * RCU read-side critical sections are forbidden in the inner idle loop,
126 * that is, between the rcu_idle_enter() and the rcu_idle_exit() -- RCU
131 * will tell RCU that it needs to pay attention, invoke its argument
133 * and then tell RCU to go back to ignoring this CPU. It is permissible
147 * Note a quasi-voluntary context switch for RCU-tasks's benefit.
205 * cond_resched_tasks_rcu_qs - Report potential quiescent states to RCU
208 * report potential quiescent states to RCU-tasks even if the cond_resched()
227 #error "Unknown RCU implementation specified to kernel configuration"
[all …]

12345678910>>...102