Skip to content

Commit

Permalink
srcu: Remove checks preventing offline CPUs from calling srcu_read_lo…
Browse files Browse the repository at this point in the history
…ck()

SRCU has its own statemachine and no longer relies on normal RCU.
Its read-side critical section can now be used by an offline CPU, so this
commit removes the check and the comments, reverting the SRCU portion
of c0d6d01 (rcu: Check for illegal use of RCU from offlined CPUs).

It also makes the code match the comments in whatisRCU.txt:

g.	Do you need read-side critical sections that are respected
	even though they are in the middle of the idle loop, during
	user-mode execution, or on an offlined CPU?  If so, SRCU is the
	only choice that will work for you.

[ paulmck: There is at least one remaining issue, namely use of lockdep
	   with tracing enabled. ]

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
  • Loading branch information
Lai Jiangshan authored and Paul E. McKenney committed Feb 7, 2013
1 parent ab4d298 commit 3bc97a7
Showing 1 changed file with 0 additions and 5 deletions.
5 changes: 0 additions & 5 deletions include/linux/srcu.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,18 +163,13 @@ void srcu_barrier(struct srcu_struct *sp);
* power mode. This way we can notice an extended quiescent state to
* other CPUs that started a grace period. Otherwise we would delay any
* grace period as long as we run in the idle task.
*
* Similarly, we avoid claiming an SRCU read lock held if the current
* CPU is offline.
*/
static inline int srcu_read_lock_held(struct srcu_struct *sp)
{
if (!debug_lockdep_rcu_enabled())
return 1;
if (rcu_is_cpu_idle())
return 0;
if (!rcu_lockdep_current_cpu_online())
return 0;
return lock_is_held(&sp->dep_map);
}

Expand Down

0 comments on commit 3bc97a7

Please sign in to comment.