linux/Documentation/RCU/Design/Requirements
Paul E. McKenney 6efebf8499 doc: CPU-hotplug notifiers cannot invoke synchronize_srcu() or srcu_barrier()
SRCU's synchronize_srcu() may not be invoked from CPU-hotplug notifiers,
due to the fact that SRCU grace periods make use of timers and the
possibility of timers being temporarily stranded on the outgoing CPU.
This stranding of timers means that timers posted to the outgoing CPU
will not fire until late in the CPU-hotplug process.  The problem is
that if a notifier is waiting on an SRCU grace period, that grace period
is waiting on a timer, and that timer is stranded on the outgoing CPU,
then the notifier will never be awakened, in other words, deadlock has
occurred.  This same situation of course also prohibits srcu_barrier()
from being invoked from CPU-hotplug notifiers.

This commit therefore updates the requirements to include this restriction.

Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
2019-01-25 15:34:18 -08:00
..
GPpartitionReaders1.svg documentation: Record RCU requirements 2015-12-05 12:19:07 -08:00
ReadersPartitionGP1.svg documentation: Record RCU requirements 2015-12-05 12:19:07 -08:00
Requirements.html doc: CPU-hotplug notifiers cannot invoke synchronize_srcu() or srcu_barrier() 2019-01-25 15:34:18 -08:00