update.c (dd84cfff3cc3b79c9d616f85bd1178df135cbd1a) | update.c (e67198cc05b8ecbb7b8e2d8ef9fb5c8d26821873) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Read-Copy Update mechanism for mutual exclusion 4 * 5 * Copyright IBM Corporation, 2001 6 * 7 * Authors: Dipankar Sarma <dipankar@in.ibm.com> 8 * Manfred Spraul <manfred@colorfullife.com> --- 71 unchanged lines hidden (view full) --- 80 * read-side critical section. This is useful for debug checks in functions 81 * that required that they be called within an RCU-sched read-side 82 * critical section. 83 * 84 * Check debug_lockdep_rcu_enabled() to prevent false positives during boot 85 * and while lockdep is disabled. 86 * 87 * Note that if the CPU is in the idle loop from an RCU point of view (ie: | 1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Read-Copy Update mechanism for mutual exclusion 4 * 5 * Copyright IBM Corporation, 2001 6 * 7 * Authors: Dipankar Sarma <dipankar@in.ibm.com> 8 * Manfred Spraul <manfred@colorfullife.com> --- 71 unchanged lines hidden (view full) --- 80 * read-side critical section. This is useful for debug checks in functions 81 * that required that they be called within an RCU-sched read-side 82 * critical section. 83 * 84 * Check debug_lockdep_rcu_enabled() to prevent false positives during boot 85 * and while lockdep is disabled. 86 * 87 * Note that if the CPU is in the idle loop from an RCU point of view (ie: |
88 * that we are in the section between rcu_idle_enter() and rcu_idle_exit()) | 88 * that we are in the section between ct_idle_enter() and ct_idle_exit()) |
89 * then rcu_read_lock_held() sets ``*ret`` to false even if the CPU did an 90 * rcu_read_lock(). The reason for this is that RCU ignores CPUs that are 91 * in such a section, considering these as in extended quiescent state, 92 * so such a CPU is effectively never in an RCU read-side critical section 93 * regardless of what RCU primitives it invokes. This state of affairs is 94 * required --- we need to keep an RCU-free window in idle where the CPU may 95 * possibly enter into low power mode. This way we can notice an extended 96 * quiescent state to other CPUs that started a grace period. Otherwise --- 519 unchanged lines hidden --- | 89 * then rcu_read_lock_held() sets ``*ret`` to false even if the CPU did an 90 * rcu_read_lock(). The reason for this is that RCU ignores CPUs that are 91 * in such a section, considering these as in extended quiescent state, 92 * so such a CPU is effectively never in an RCU read-side critical section 93 * regardless of what RCU primitives it invokes. This state of affairs is 94 * required --- we need to keep an RCU-free window in idle where the CPU may 95 * possibly enter into low power mode. This way we can notice an extended 96 * quiescent state to other CPUs that started a grace period. Otherwise --- 519 unchanged lines hidden --- |