Normally, CPUs pass through quiescent states which are duly recorded, so that grace periods end in a timely manner. However, any of the following three conditions can prevent CPUs from passing through quiescent states:
In each of these cases, RCU needs to take action on behalf of the
non-responding CPU.
The following sections describe the functions that take such action.
Section
describes the functions that record and recall the dynticks-idle
grace-period number (in order to avoid incorrectly applying a dynticks-idle
quiescent state to the wrong grace period),
Section
describes functions that detect offline and holdout CPUs,
Section
covers rcu_process_dyntick(), which scans for holdout CPUs, and
Section
describes force_quiescent_state(), which drives the process of
detecting extended quiescent states and forcing quiescent states on
holdout CPUs.