/linux/kernel/rcu/ |
H A 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 …]
|
H A D | update.c | 50 #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 D | tree_plugin.h | 42 * 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 D | tree_stall.h | 3 * RCU CPU stall warnings for normal RCU grace periods 19 /* panic() on RCU Stall sysctl. */ 130 /* Don't do RCU CPU stall warnings during long sysrq printouts. */ 143 /* Don't print RCU CPU stall warnings during a kernel panic. */ 177 panic("RCU Stall\n"); in panic_on_rcu_stall() 198 // Interaction with RCU grace periods 215 /* Zero ->ticks_this_gp and snapshot the number of RCU softirq handlers. */ 245 * Handler for the irq_work request posted about halfway into the RCU CPU 266 // Printing RCU CPU stall warnings 271 * Dump detailed information for all tasks blocking the current RCU [all …]
|
H A D | tree.c | 15 * 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 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 …]
|
H A 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 …]
|
H A D | lockdep-splat.rst | 4 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 D | rcu_dereference.rst | 7 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 D | linux-kernel.cat | 64 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 D | linux-kernel.bell | 29 '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/include/linux/ |
H A D | rcupdate.h | 50 // not-yet-completed RCU grace periods. 158 * Note a quasi-voluntary context switch for RCU-tasks's benefit. 228 * rcu_trace_implies_rcu_gp - does an RCU Tasks Trace grace period imply an RCU grace period? 230 * As an accident of implementation, an RCU Tasks Trace grace period also 231 * acts as an RCU grace period. However, this could change at any time. 240 * cond_resched_tasks_rcu_qs - Report potential quiescent states to RCU 243 * report potential quiescent states to RCU-tasks even if the cond_resched() 253 * rcu_softirq_qs_periodic - Report RCU and RCU-Tasks quiescent states 260 * provide both RCU and RCU-Tasks quiescent states. Note that this macro 263 * Because regions of code that have disabled softirq act as RCU read-side [all …]
|
H A D | rcupdate_wait.h | 6 * 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/devicetree/bindings/phy/ |
H A D | lantiq,vrx200-pcie-phy.yaml | 45 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 D | rcu-cbs.py | 4 # 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/Documentation/translations/it_IT/RCU/ |
H A D | torture.rst | 6 Le operazioni RCU per le verifiche *torture* 13 RCU. L'opzione creerà un modulo rcutorture che potrete caricare per avviare le 26 …rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_… 27 …rcu-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 30 …rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 1554… 31 …rcu-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 D | Data-Structures.rst | 12 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 D | Expedited-Grace-Periods.rst | 8 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 D | bpf_local_storage.c | 115 /* 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/kernel/trace/ |
H A D | trace_preemptirq.c | 21 * 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/tools/memory-model/Documentation/ |
H A D | explanation.txt | 30 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/Documentation/devicetree/bindings/mips/lantiq/ |
H A D | rcu.txt | 1 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/io_uring/ |
H A D | eventfd.c | 21 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() 60 call_rcu_hurry(&ev_fd->rcu, io_eventfd_do_signal); in __io_eventfd_signal() 83 guard(rcu)(); [all...] |
/linux/Documentation/RCU/Design/Memory-Ordering/ |
H A D | Tree-RCU-Memory-Ordering.rst | 12 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/kernel/entry/ |
H A D | common.c | 91 * RCU is watching or not. in irqentry_enter() 106 * Unconditionally invoke ct_irq_enter() so RCU state stays in irqentry_enter() 115 * If RCU is not watching then the same careful in irqentry_enter() 131 * If RCU is watching then RCU only wants to check whether it needs in irqentry_enter() 133 * already contains a warning when RCU is not watching, so no point in irqentry_enter() 163 /* Sanity check RCU and thread stack */ in raw_irqentry_exit_cond_resched() 194 * If RCU was not watching on entry this needs to be done in irqentry_exit() 196 * and RCU as the return to user mode path. in irqentry_exit() 218 * IRQ flags state is correct already. Just tell RCU if it in irqentry_exit()
|