| /kernel/linux/linux-5.10/Documentation/RCU/ |
| D | rcu.rst | 3 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 …]
|
| D | whatisRCU.rst | 3 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 …]
|
| D | RTFP.txt | 4 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 …]
|
| D | lockdep.rst | 4 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 …]
|
| D | checklist.rst | 4 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 …]
|
| D | stallwarn.rst | 4 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 …]
|
| D | UP.rst | 3 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/ |
| D | Kconfig.debug | 3 # 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 …]
|
| D | Kconfig | 3 # 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/ |
| D | Kconfig | 3 # 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 …]
|
| D | Kconfig.debug | 3 # 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/ |
| D | rcu.rst | 3 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 …]
|
| D | whatisRCU.rst | 3 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 …]
|
| D | RTFP.txt | 4 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 …]
|
| D | lockdep.rst | 4 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 …]
|
| D | stallwarn.rst | 4 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 …]
|
| D | checklist.rst | 4 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 …]
|
| D | UP.rst | 3 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/ |
| D | linux-kernel.cat | 42 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/ |
| D | linux-kernel.cat | 54 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/ |
| D | Requirements.rst | 2 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/ |
| D | Requirements.rst | 2 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/ |
| D | context_tracking.c | 6 * 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/ |
| D | rcupdate.h | 52 // 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/ |
| D | rcupdate.h | 122 * 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 …]
|