<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head><title>A Tour Through TREE_RCU's Expedited Grace Periods</title>
        <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

<h2>Introduction</h2>

This document describes RCU's expedited grace periods.
Unlike RCU's normal grace periods, which accept long latencies to attain
high efficiency and minimal disturbance, expedited grace periods accept
lower efficiency and significant disturbance to attain shorter latencies.

<p>
There are two flavors of RCU (RCU-preempt and RCU-sched), with an earlier
third RCU-bh flavor having been implemented in terms of the other two.
Each of the two implementations is covered in its own section.

<ol>
<li>	<a href="#Expedited Grace Period Design">
	Expedited Grace Period Design</a>
<li>	<a href="#RCU-preempt Expedited Grace Periods">
	RCU-preempt Expedited Grace Periods</a>
<li>	<a href="#RCU-sched Expedited Grace Periods">
	RCU-sched Expedited Grace Periods</a>
<li>	<a href="#Expedited Grace Period and CPU Hotplug">
	Expedited Grace Period and CPU Hotplug</a>
<li>	<a href="#Expedited Grace Period Refinements">
	Expedited Grace Period Refinements</a>
</ol>

<h2><a name="Expedited Grace Period Design">
Expedited Grace Period Design</a></h2>

<p>
The expedited RCU grace periods cannot be accused of being subtle,
given that they for all intents and purposes hammer every CPU that
has not yet provided a quiescent state for the current expedited
grace period.
The one saving grace is that the hammer has grown a bit smaller
over time:  The old call to <tt>try_stop_cpus()</tt> has been
replaced with a set of calls to <tt>smp_call_function_single()</tt>,
each of which results in an IPI to the target CPU.
The corresponding handler function checks the CPU's state, motivating
a faster quiescent state where possible, and triggering a report
of that quiescent state.
As always for RCU, once everything has spent some time in a quiescent
state, the expedited grace period has completed.

<p>
The details of the <tt>smp_call_function_single()</tt> handler's
operation depend on the RCU flavor, as described in the following
sections.

<h2><a name="RCU-preempt Expedited Grace Periods">
RCU-preempt Expedited Grace Periods</a></h2>

<p>
The overall flow of the handling of a given CPU by an RCU-preempt
expedited grace period is shown in the following diagram:

<p><img src="ExpRCUFlow.svg" alt="ExpRCUFlow.svg" width="55%">

<p>
The solid arrows denote direct action, for example, a function call.
The dotted arrows denote indirect action, for example, an IPI
or a state that is reached after some time.

<p>
If a given CPU is offline or idle, <tt>synchronize_rcu_expedited()</tt>
will ignore it because idle and offline CPUs are already residing
in quiescent states.
Otherwise, the expedited grace period will use
<tt>smp_call_function_single()</tt> to send the CPU an IPI, which
is handled by <tt>rcu_exp_handler()</tt>.

<p>
However, because this is preemptible RCU, <tt>rcu_exp_handler()</tt>
can check to see if the CPU is currently running in an RCU read-side
critical section.
If not, the handler can immediately report a quiescent state.
Otherwise, it sets flags so that the outermost <tt>rcu_read_unlock()</tt>
invocation will provide the needed quiescent-state report.
This flag-setting avoids the previous forced preemption of all
CPUs that might have RCU read-side critical sections.
In addition, this flag-setting is done so as to avoid increasing
the overhead of the common-case fastpath through the scheduler.

<p>
Again because this is preemptible RCU, an RCU read-side critical section
can be preempted.
When that happens, RCU will enqueue the task, which will the continue to
block the current expedited grace period until it resumes and finds its
outermost <tt>rcu_read_unlock()</tt>.
The CPU will report a quiescent state just after enqueuing the task because
the CPU is no longer blocking the grace period.
It is instead the preempted task doing the blocking.
The list of blocked tasks is managed by <tt>rcu_preempt_ctxt_queue()</tt>,
which is called from <tt>rcu_preempt_note_context_switch()</tt>, which
in turn is called from <tt>rcu_note_context_switch()</tt>, which in
turn is called from the scheduler.

<table>
<tr><th>&nbsp;</th></tr>
<tr><th align="left">Quick Quiz:</th></tr>
<tr><td>
	Why not just have the expedited grace period check the
	state of all the CPUs?
	After all, that would avoid all those real-time-unfriendly IPIs.
</td></tr>
<tr><th align="left">Answer:</th></tr>
<tr><td bgcolor="#ffffff"><font color="ffffff">
	Because we want the RCU read-side critical sections to run fast,
	which means no memory barriers.
	Therefore, it is not possible to safely check the state from some
	other CPU.
	And even if it was possible to safely check the state, it would
	still be necessary to IPI the CPU to safely interact with the
	upcoming <tt>rcu_read_unlock()</tt> invocation, which means that
	the remote state testing would not help the worst-case
	latency that real-time applications care about.

	<p><font color="ffffff">One way to prevent your real-time
	application from getting hit with these IPIs is to
	build your kernel with <tt>CONFIG_NO_HZ_FULL=y</tt>.
	RCU would then perceive the CPU running your application
	as being idle, and it would be able to safely detect that
	state without needing to IPI the CPU.
</font></td></tr>
<tr><td>&nbsp;</td></tr>
</table>

<p>
Please note that this is just the overall flow:
Additional complications can arise due to races with CPUs going idle
or offline, among other things.

<h2><a name="RCU-sched Expedited Grace Periods">
RCU-sched Expedited Grace Periods</a></h2>

<p>
The overall flow of the handling of a given CPU by an RCU-sched
expedited grace period is shown in the following diagram:

<p><img src="ExpSchedFlow.svg" alt="ExpSchedFlow.svg" width="55%">

<p>
As with RCU-preempt, RCU-sched's
<tt>synchronize_sched_expedited()</tt> ignores offline and
idle CPUs, again because they are in remotely detectable
quiescent states.
However, because the
<tt>rcu_read_lock_sched()</tt> and <tt>rcu_read_unlock_sched()</tt>
leave no trace of their invocation, in general it is not possible to tell
whether or not the current CPU is in an RCU read-side critical section.
The best that RCU-sched's <tt>rcu_exp_handler()</tt> can do is to check
for idle, on the off-chance that the CPU went idle while the IPI
was in flight.
If the CPU is idle, then <tt>rcu_exp_handler()</tt> reports
the quiescent state.

<p> Otherwise, the handler forces a future context switch by setting the
NEED_RESCHED flag of the current task's thread flag and the CPU preempt
counter.
At the time of the context switch, the CPU reports the quiescent state.
Should the CPU go offline first, it will report the quiescent state
at that time.

<h2><a name="Expedited Grace Period and CPU Hotplug">
Expedited Grace Period and CPU Hotplug</a></h2>

<p>
The expedited nature of expedited grace periods require a much tighter
interaction with CPU hotplug operations than is required for normal
grace periods.
In addition, attempting to IPI offline CPUs will result in splats, but
failing to IPI online CPUs can result in too-short grace periods.
Neither option is acceptable in production kernels.

<p>
The interaction between expedited grace periods and CPU hotplug operations
is carried out at several levels:

<ol>
<li>	The number of CPUs that have ever been online is tracked
	by the <tt>rcu_state</tt> structure's <tt>-&gt;ncpus</tt>
	field.
	The <tt>rcu_state</tt> structure's <tt>-&gt;ncpus_snap</tt>
	field tracks the number of CPUs that have ever been online
	at the beginning of an RCU expedited grace period.
	Note that this number never decreases, at least in the absence
	of a time machine.
<li>	The identities of the CPUs that have ever been online is
	tracked by the <tt>rcu_node</tt> structure's
	<tt>-&gt;expmaskinitnext</tt> field.
	The <tt>rcu_node</tt> structure's <tt>-&gt;expmaskinit</tt>
	field tracks the identities of the CPUs that were online
	at least once at the beginning of the most recent RCU
	expedited grace period.
	The <tt>rcu_state</tt> structure's <tt>-&gt;ncpus</tt> and
	<tt>-&gt;ncpus_snap</tt> fields are used to detect when
	new CPUs have come online for the first time, that is,
	when the <tt>rcu_node</tt> structure's <tt>-&gt;expmaskinitnext</tt>
	field has changed since the beginning of the last RCU
	expedited grace period, which triggers an update of each
	<tt>rcu_node</tt> structure's <tt>-&gt;expmaskinit</tt>
	field from its <tt>-&gt;expmaskinitnext</tt> field.
<li>	Each <tt>rcu_node</tt> structure's <tt>-&gt;expmaskinit</tt>
	field is used to initialize that structure's
	<tt>-&gt;expmask</tt> at the beginning of each RCU
	expedited grace period.
	This means that only those CPUs that have been online at least
	once will be considered for a given grace period.
<li>	Any CPU that goes offline will clear its bit in its leaf
	<tt>rcu_node</tt> structure's <tt>-&gt;qsmaskinitnext</tt>
	field, so any CPU with that bit clear can safely be ignored.
	However, it is possible for a CPU coming online or going offline
	to have this bit set for some time while <tt>cpu_online</tt>
	returns <tt>false</tt>.
<li>	For each non-idle CPU that RCU believes is currently online, the grace
	period invokes <tt>smp_call_function_single()</tt>.
	If this succeeds, the CPU was fully online.
	Failure indicates that the CPU is in the process of coming online
	or going offline, in which case it is necessary to wait for a
	short time period and try again.
	The purpose of this wait (or series of waits, as the case may be)
	is to permit a concurrent CPU-hotplug operation to complete.
<li>	In the case of RCU-sched, one of the last acts of an outgoing CPU
	is to invoke <tt>rcu_report_dead()</tt>, which
	reports a quiescent state for that CPU.
	However, this is likely paranoia-induced redundancy. <!-- @@@ -->
</ol>

<table>
<tr><th>&nbsp;</th></tr>
<tr><th align="left">Quick Quiz:</th></tr>
<tr><td>
	Why all the dancing around with multiple counters and masks
	tracking CPUs that were once online?
	Why not just have a single set of masks tracking the currently
	online CPUs and be done with it?
</td></tr>
<tr><th align="left">Answer:</th></tr>
<tr><td bgcolor="#ffffff"><font color="ffffff">
	Maintaining single set of masks tracking the online CPUs <i>sounds</i>
	easier, at least until you try working out all the race conditions
	between grace-period initialization and CPU-hotplug operations.
	For example, suppose initialization is progressing down the
	tree while a CPU-offline operation is progressing up the tree.
	This situation can result in bits set at the top of the tree
	that have no counterparts at the bottom of the tree.
	Those bits will never be cleared, which will result in
	grace-period hangs.
	In short, that way lies madness, to say nothing of a great many
	bugs, hangs, and deadlocks.

	<p><font color="ffffff">
	In contrast, the current multi-mask multi-counter scheme ensures
	that grace-period initialization will always see consistent masks
	up and down the tree, which brings significant simplifications
	over the single-mask method.

	<p><font color="ffffff">
	This is an instance of
	<a href="http://www.cs.columbia.edu/~library/TR-repository/reports/reports-1992/cucs-039-92.ps.gz"><font color="ffffff">
	deferring work in order to avoid synchronization</a>.
	Lazily recording CPU-hotplug events at the beginning of the next
	grace period greatly simplifies maintenance of the CPU-tracking
	bitmasks in the <tt>rcu_node</tt> tree.
</font></td></tr>
<tr><td>&nbsp;</td></tr>
</table>

<h2><a name="Expedited Grace Period Refinements">
Expedited Grace Period Refinements</a></h2>

<ol>
<li>	<a href="#Idle-CPU Checks">Idle-CPU checks</a>.
<li>	<a href="#Batching via Sequence Counter">
	Batching via sequence counter</a>.
<li>	<a href="#Funnel Locking and Wait/Wakeup">
	Funnel locking and wait/wakeup</a>.
<li>	<a href="#Use of Workqueues">Use of Workqueues</a>.
<li>	<a href="#Stall Warnings">Stall warnings</a>.
<li>	<a href="#Mid-Boot Operation">Mid-boot operation</a>.
</ol>

<h3><a name="Idle-CPU Checks">Idle-CPU Checks</a></h3>

<p>
Each expedited grace period checks for idle CPUs when initially forming
the mask of CPUs to be IPIed and again just before IPIing a CPU
(both checks are carried out by <tt>sync_rcu_exp_select_cpus()</tt>).
If the CPU is idle at any time between those two times, the CPU will
not be IPIed.
Instead, the task pushing the grace period forward will include the
idle CPUs in the mask passed to <tt>rcu_report_exp_cpu_mult()</tt>.

<p>
For RCU-sched, there is an additional check:
If the IPI has interrupted the idle loop, then
<tt>rcu_exp_handler()</tt> invokes <tt>rcu_report_exp_rdp()</tt>
to report the corresponding quiescent state.

<p>
For RCU-preempt, there is no specific check for idle in the
IPI handler (<tt>rcu_exp_handler()</tt>), but because
RCU read-side critical sections are not permitted within the
idle loop, if <tt>rcu_exp_handler()</tt> sees that the CPU is within
RCU read-side critical section, the CPU cannot possibly be idle.
Otherwise, <tt>rcu_exp_handler()</tt> invokes
<tt>rcu_report_exp_rdp()</tt> to report the corresponding quiescent
state, regardless of whether or not that quiescent state was due to
the CPU being idle.

<p>
In summary, RCU expedited grace periods check for idle when building
the bitmask of CPUs that must be IPIed, just before sending each IPI,
and (either explicitly or implicitly) within the IPI handler.

<h3><a name="Batching via Sequence Counter">
Batching via Sequence Counter</a></h3>

<p>
If each grace-period request was carried out separately, expedited
grace periods would have abysmal scalability and
problematic high-load characteristics.
Because each grace-period operation can serve an unlimited number of
updates, it is important to <i>batch</i> requests, so that a single
expedited grace-period operation will cover all requests in the
corresponding batch.

<p>
This batching is controlled by a sequence counter named
<tt>-&gt;expedited_sequence</tt> in the <tt>rcu_state</tt> structure.
This counter has an odd value when there is an expedited grace period
in progress and an even value otherwise, so that dividing the counter
value by two gives the number of completed grace periods.
During any given update request, the counter must transition from
even to odd and then back to even, thus indicating that a grace
period has elapsed.
Therefore, if the initial value of the counter is <tt>s</tt>,
the updater must wait until the counter reaches at least the
value <tt>(s+3)&amp;~0x1</tt>.
This counter is managed by the following access functions:

<ol>
<li>	<tt>rcu_exp_gp_seq_start()</tt>, which marks the start of
	an expedited grace period.
<li>	<tt>rcu_exp_gp_seq_end()</tt>, which marks the end of an
	expedited grace period.
<li>	<tt>rcu_exp_gp_seq_snap()</tt>, which obtains a snapshot of
	the counter.
<li>	<tt>rcu_exp_gp_seq_done()</tt>, which returns <tt>true</tt>
	if a full expedited grace period has elapsed since the
	corresponding call to <tt>rcu_exp_gp_seq_snap()</tt>.
</ol>

<p>
Again, only one request in a given batch need actually carry out
a grace-period operation, which means there must be an efficient
way to identify which of many concurrent reqeusts will initiate
the grace period, and that there be an efficient way for the
remaining requests to wait for that grace period to complete.
However, that is the topic of the next section.

<h3><a name="Funnel Locking and Wait/Wakeup">
Funnel Locking and Wait/Wakeup</a></h3>

<p>
The natural way to sort out which of a batch of updaters will initiate
the expedited grace period is to use the <tt>rcu_node</tt> combining
tree, as implemented by the <tt>exp_funnel_lock()</tt> function.
The first updater corresponding to a given grace period arriving
at a given <tt>rcu_node</tt> structure records its desired grace-period
sequence number in the <tt>-&gt;exp_seq_rq</tt> field and moves up
to the next level in the tree.
Otherwise, if the <tt>-&gt;exp_seq_rq</tt> field already contains
the sequence number for the desired grace period or some later one,
the updater blocks on one of four wait queues in the
<tt>-&gt;exp_wq[]</tt> array, using the second-from-bottom
and third-from bottom bits as an index.
An <tt>-&gt;exp_lock</tt> field in the <tt>rcu_node</tt> structure
synchronizes access to these fields.

<p>
An empty <tt>rcu_node</tt> tree is shown in the following diagram,
with the white cells representing the <tt>-&gt;exp_seq_rq</tt> field
and the red cells representing the elements of the
<tt>-&gt;exp_wq[]</tt> array.

<p><img src="Funnel0.svg" alt="Funnel0.svg" width="75%">

<p>
The next diagram shows the situation after the arrival of Task&nbsp;A
and Task&nbsp;B at the leftmost and rightmost leaf <tt>rcu_node</tt>
structures, respectively.
The current value of the <tt>rcu_state</tt> structure's
<tt>-&gt;expedited_sequence</tt> field is zero, so adding three and
clearing the bottom bit results in the value two, which both tasks
record in the <tt>-&gt;exp_seq_rq</tt> field of their respective
<tt>rcu_node</tt> structures:

<p><img src="Funnel1.svg" alt="Funnel1.svg" width="75%">

<p>
Each of Tasks&nbsp;A and&nbsp;B will move up to the root
<tt>rcu_node</tt> structure.
Suppose that Task&nbsp;A wins, recording its desired grace-period sequence
number and resulting in the state shown below:

<p><img src="Funnel2.svg" alt="Funnel2.svg" width="75%">

<p>
Task&nbsp;A now advances to initiate a new grace period, while Task&nbsp;B
moves up to the root <tt>rcu_node</tt> structure, and, seeing that
its desired sequence number is already recorded, blocks on
<tt>-&gt;exp_wq[1]</tt>.

<table>
<tr><th>&nbsp;</th></tr>
<tr><th align="left">Quick Quiz:</th></tr>
<tr><td>
	Why <tt>-&gt;exp_wq[1]</tt>?
	Given that the value of these tasks' desired sequence number is
	two, so shouldn't they instead block on <tt>-&gt;exp_wq[2]</tt>?
</td></tr>
<tr><th align="left">Answer:</th></tr>
<tr><td bgcolor="#ffffff"><font color="ffffff">
	No.

	<p><font color="ffffff">
	Recall that the bottom bit of the desired sequence number indicates
	whether or not a grace period is currently in progress.
	It is therefore necessary to shift the sequence number right one
	bit position to obtain the number of the grace period.
	This results in <tt>-&gt;exp_wq[1]</tt>.
</font></td></tr>
<tr><td>&nbsp;</td></tr>
</table>

<p>
If Tasks&nbsp;C and&nbsp;D also arrive at this point, they will compute the
same desired grace-period sequence number, and see that both leaf
<tt>rcu_node</tt> structures already have that value recorded.
They will therefore block on their respective <tt>rcu_node</tt>
structures' <tt>-&gt;exp_wq[1]</tt> fields, as shown below:

<p><img src="Funnel3.svg" alt="Funnel3.svg" width="75%">

<p>
Task&nbsp;A now acquires the <tt>rcu_state</tt> structure's
<tt>-&gt;exp_mutex</tt> and initiates the grace period, which
increments <tt>-&gt;expedited_sequence</tt>.
Therefore, if Tasks&nbsp;E and&nbsp;F arrive, they will compute
a desired sequence number of 4 and will record this value as
shown below:

<p><img src="Funnel4.svg" alt="Funnel4.svg" width="75%">

<p>
Tasks&nbsp;E and&nbsp;F will propagate up the <tt>rcu_node</tt>
combining tree, with Task&nbsp;F blocking on the root <tt>rcu_node</tt>
structure and Task&nbsp;E wait for Task&nbsp;A to finish so that
it can start the next grace period.
The resulting state is as shown below:

<p><img src="Funnel5.svg" alt="Funnel5.svg" width="75%">

<p>
Once the grace period completes, Task&nbsp;A
starts waking up the tasks waiting for this grace period to complete,
increments the <tt>-&gt;expedited_sequence</tt>,
acquires the <tt>-&gt;exp_wake_mutex</tt> and then releases the
<tt>-&gt;exp_mutex</tt>.
This results in the following state:

<p><img src="Funnel6.svg" alt="Funnel6.svg" width="75%">

<p>
Task&nbsp;E can then acquire <tt>-&gt;exp_mutex</tt> and increment
<tt>-&gt;expedited_sequence</tt> to the value three.
If new tasks&nbsp;G and&nbsp;H arrive and moves up the combining tree at the
same time, the state will be as follows:

<p><img src="Funnel7.svg" alt="Funnel7.svg" width="75%">

<p>
Note that three of the root <tt>rcu_node</tt> structure's
waitqueues are now occupied.
However, at some point, Task&nbsp;A will wake up the
tasks blocked on the <tt>-&gt;exp_wq</tt> waitqueues, resulting
in the following state:

<p><img src="Funnel8.svg" alt="Funnel8.svg" width="75%">

<p>
Execution will continue with Tasks&nbsp;E and&nbsp;H completing
their grace periods and carrying out their wakeups.

<table>
<tr><th>&nbsp;</th></tr>
<tr><th align="left">Quick Quiz:</th></tr>
<tr><td>
	What happens if Task&nbsp;A takes so long to do its wakeups
	that Task&nbsp;E's grace period completes?
</td></tr>
<tr><th align="left">Answer:</th></tr>
<tr><td bgcolor="#ffffff"><font color="ffffff">
	Then Task&nbsp;E will block on the <tt>-&gt;exp_wake_mutex</tt>,
	which will also prevent it from releasing <tt>-&gt;exp_mutex</tt>,
	which in turn will prevent the next grace period from starting.
	This last is important in preventing overflow of the
	<tt>-&gt;exp_wq[]</tt> array.
</font></td></tr>
<tr><td>&nbsp;</td></tr>
</table>

<h3><a name="Use of Workqueues">Use of Workqueues</a></h3>

<p>
In earlier implementations, the task requesting the expedited
grace period also drove it to completion.
This straightforward approach had the disadvantage of needing to
account for POSIX signals sent to user tasks,
so more recent implemementations use the Linux kernel's
<a href="https://www.kernel.org/doc/Documentation/core-api/workqueue.rst">workqueues</a>.

<p>
The requesting task still does counter snapshotting and funnel-lock
processing, but the task reaching the top of the funnel lock
does a <tt>schedule_work()</tt> (from <tt>_synchronize_rcu_expedited()</tt>
so that a workqueue kthread does the actual grace-period processing.
Because workqueue kthreads do not accept POSIX signals, grace-period-wait
processing need not allow for POSIX signals.

In addition, this approach allows wakeups for the previous expedited
grace period to be overlapped with processing for the next expedited
grace period.
Because there are only four sets of waitqueues, it is necessary to
ensure that the previous grace period's wakeups complete before the
next grace period's wakeups start.
This is handled by having the <tt>-&gt;exp_mutex</tt>
guard expedited grace-period processing and the
<tt>-&gt;exp_wake_mutex</tt> guard wakeups.
The key point is that the <tt>-&gt;exp_mutex</tt> is not released
until the first wakeup is complete, which means that the
<tt>-&gt;exp_wake_mutex</tt> has already been acquired at that point.
This approach ensures that the previous grace period's wakeups can
be carried out while the current grace period is in process, but
that these wakeups will complete before the next grace period starts.
This means that only three waitqueues are required, guaranteeing that
the four that are provided are sufficient.

<h3><a name="Stall Warnings">Stall Warnings</a></h3>

<p>
Expediting grace periods does nothing to speed things up when RCU
readers take too long, and therefore expedited grace periods check
for stalls just as normal grace periods do.

<table>
<tr><th>&nbsp;</th></tr>
<tr><th align="left">Quick Quiz:</th></tr>
<tr><td>
	But why not just let the normal grace-period machinery
	detect the stalls, given that a given reader must block
	both normal and expedited grace periods?
</td></tr>
<tr><th align="left">Answer:</th></tr>
<tr><td bgcolor="#ffffff"><font color="ffffff">
	Because it is quite possible that at a given time there
	is no normal grace period in progress, in which case the
	normal grace period cannot emit a stall warning.
</font></td></tr>
<tr><td>&nbsp;</td></tr>
</table>

The <tt>synchronize_sched_expedited_wait()</tt> function loops waiting
for the expedited grace period to end, but with a timeout set to the
current RCU CPU stall-warning time.
If this time is exceeded, any CPUs or <tt>rcu_node</tt> structures
blocking the current grace period are printed.
Each stall warning results in another pass through the loop, but the
second and subsequent passes use longer stall times.

<h3><a name="Mid-Boot Operation">Mid-boot operation</a></h3>

<p>
The use of workqueues has the advantage that the expedited
grace-period code need not worry about POSIX signals.
Unfortunately, it has the
corresponding disadvantage that workqueues cannot be used until
they are initialized, which does not happen until some time after
the scheduler spawns the first task.
Given that there are parts of the kernel that really do want to
execute grace periods during this mid-boot &ldquo;dead zone&rdquo;,
expedited grace periods must do something else during thie time.

<p>
What they do is to fall back to the old practice of requiring that the
requesting task drive the expedited grace period, as was the case
before the use of workqueues.
However, the requesting task is only required to drive the grace period
during the mid-boot dead zone.
Before mid-boot, a synchronous grace period is a no-op.
Some time after mid-boot, workqueues are used.

<p>
Non-expedited non-SRCU synchronous grace periods must also operate
normally during mid-boot.
This is handled by causing non-expedited grace periods to take the
expedited code path during mid-boot.

<p>
The current code assumes that there are no POSIX signals during
the mid-boot dead zone.
However, if an overwhelming need for POSIX signals somehow arises,
appropriate adjustments can be made to the expedited stall-warning code.
One such adjustment would reinstate the pre-workqueue stall-warning
checks, but only during the mid-boot dead zone.

<p>
With this refinement, synchronous grace periods can now be used from
task context pretty much any time during the life of the kernel.
That is, aside from some points in the suspend, hibernate, or shutdown
code path.

<h3><a name="Summary">
Summary</a></h3>

<p>
Expedited grace periods use a sequence-number approach to promote
batching, so that a single grace-period operation can serve numerous
requests.
A funnel lock is used to efficiently identify the one task out of
a concurrent group that will request the grace period.
All members of the group will block on waitqueues provided in
the <tt>rcu_node</tt> structure.
The actual grace-period processing is carried out by a workqueue.

<p>
CPU-hotplug operations are noted lazily in order to prevent the need
for tight synchronization between expedited grace periods and
CPU-hotplug operations.
The dyntick-idle counters are used to avoid sending IPIs to idle CPUs,
at least in the common case.
RCU-preempt and RCU-sched use different IPI handlers and different
code to respond to the state changes carried out by those handlers,
but otherwise use common code.

<p>
Quiescent states are tracked using the <tt>rcu_node</tt> tree,
and once all necessary quiescent states have been reported,
all tasks waiting on this expedited grace period are awakened.
A pair of mutexes are used to allow one grace period's wakeups
to proceed concurrently with the next grace period's processing.

<p>
This combination of mechanisms allows expedited grace periods to
run reasonably efficiently.
However, for non-time-critical tasks, normal grace periods should be
used instead because their longer duration permits much higher
degrees of batching, and thus much lower per-request overheads.

</body></html>
