linux/Documentation/RCU
Paul E. McKenney 2036d94a7b rcu: Rework detection of use of RCU by offline CPUs
Because newly offlined CPUs continue executing after completing the
CPU_DYING notifiers, they legitimately enter the scheduler and use
RCU while appearing to be offline.  This calls for a more sophisticated
approach as follows:

1.	RCU marks the CPU online during the CPU_UP_PREPARE phase.

2.	RCU marks the CPU offline during the CPU_DEAD phase.

3.	Diagnostics regarding use of read-side RCU by offline CPUs use
	RCU's accounting rather than the cpu_online_map.  (Note that
	__call_rcu() still uses cpu_online_map to detect illegal
	invocations within CPU_DYING notifiers.)

4.	Offline CPUs are prevented from hanging the system by
	force_quiescent_state(), which pays attention to cpu_online_map.
	Some additional work (in a later commit) will be needed to
	guarantee that force_quiescent_state() waits a full jiffy before
	assuming that a CPU is offline, for example, when called from
	idle entry.  (This commit also makes the one-jiffy wait
	explicit, since the old-style implicit wait can now be defeated
	by RCU_FAST_NO_HZ and by rcutorture.)

This approach avoids the false positives encountered when attempting to
use more exact classification of CPU online/offline state.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2012-02-21 09:06:07 -08:00
..
00-INDEX rcu: Remove conditional compilation for RCU CPU stall warnings 2011-05-05 23:16:54 -07:00
NMI-RCU.txt rcu: Fix RCU's NMI documentation 2011-09-28 21:36:44 -07:00
RTFP.txt rcu: Bring RTFP.txt up to date. 2012-02-21 09:03:21 -08:00
UP.txt rcu: Add synchronize_sched_expedited() rcutorture doc + updates 2009-07-03 10:02:29 +02:00
arrayRCU.txt
checklist.txt rcu: Add documentation for raw SRCU read-side primitives 2011-12-11 10:31:41 -08:00
listRCU.txt Doc: Fix wrong API example usage of call_rcu(). 2009-04-02 01:33:50 -07:00
lockdep-splat.txt rcu: Document interpretation of RCU-lockdep splats 2011-09-28 21:38:28 -07:00
lockdep.txt rcu: Update documentation for additional RCU lockdep functions 2011-09-28 21:38:25 -07:00
rcu.txt rcu: Add documentation for raw SRCU read-side primitives 2011-12-11 10:31:41 -08:00
rcubarrier.txt rcu: Add synchronize_sched_expedited() rcutorture doc + updates 2009-07-03 10:02:29 +02:00
rculist_nulls.txt netfilter: nf_conntrack: nf_conntrack_alloc() fixes 2009-07-16 14:03:40 +02:00
rcuref.txt doc/RCU: fix pseudocode in rcuref.txt 2008-09-10 08:36:07 +02:00
stallwarn.txt rcu: Update stall-warning documentation 2012-02-21 09:03:52 -08:00
torture.txt rcu: Add CPU-stall capability to rcutorture 2012-02-21 09:03:52 -08:00
trace.txt rcu: Rework detection of use of RCU by offline CPUs 2012-02-21 09:06:07 -08:00
whatisRCU.txt docs: Additional LWN links to RCU API 2011-12-11 10:32:23 -08:00