Merge branch 'for_3.4/fixes/pm' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / Documentation / RCU / checklist.txt
index bff2d8be1e18ca0593274e2596d58181095b71cc..5c8d74968090544ae570105b00a96561ea4acd6c 100644 (file)
@@ -180,6 +180,20 @@ over a rather long period of time, but improvements are always welcome!
        operations that would not normally be undertaken while a real-time
        workload is running.
 
+       In particular, if you find yourself invoking one of the expedited
+       primitives repeatedly in a loop, please do everyone a favor:
+       Restructure your code so that it batches the updates, allowing
+       a single non-expedited primitive to cover the entire batch.
+       This will very likely be faster than the loop containing the
+       expedited primitive, and will be much much easier on the rest
+       of the system, especially to real-time workloads running on
+       the rest of the system.
+
+       In addition, it is illegal to call the expedited forms from
+       a CPU-hotplug notifier, or while holding a lock that is acquired
+       by a CPU-hotplug notifier.  Failing to observe this restriction
+       will result in deadlock.
+
 7.     If the updater uses call_rcu() or synchronize_rcu(), then the
        corresponding readers must use rcu_read_lock() and
        rcu_read_unlock().  If the updater uses call_rcu_bh() or