}
/*
---- --- * Helper function for call_rcu() and friends. The cpu argument will
---- --- * normally be -1, indicating "currently running CPU". It may specify
---- --- * a CPU only if that CPU is a no-CBs CPU. Currently, only rcu_barrier()
---- --- * is expected to specify a CPU.
++++ +++ * Check and if necessary update the leaf rcu_node structure's
++++ +++ * ->cbovldmask bit corresponding to the current CPU based on that CPU's
++++ +++ * number of queued RCU callbacks. The caller must hold the leaf rcu_node
++++ +++ * structure's ->lock.
+ */
++++ +++static void check_cb_ovld_locked(struct rcu_data *rdp, struct rcu_node *rnp)
++++ +++{
++++ +++ raw_lockdep_assert_held_rcu_node(rnp);
++++ +++ if (qovld_calc <= 0)
++++ +++ return; // Early boot and wildcard value set.
++++ +++ if (rcu_segcblist_n_cbs(&rdp->cblist) >= qovld_calc)
++++ +++ WRITE_ONCE(rnp->cbovldmask, rnp->cbovldmask | rdp->grpmask);
++++ +++ else
++++ +++ WRITE_ONCE(rnp->cbovldmask, rnp->cbovldmask & ~rdp->grpmask);
++++ +++}
++++ +++
++++ +++/*
++++ +++ * Check and if necessary update the leaf rcu_node structure's
++++ +++ * ->cbovldmask bit corresponding to the current CPU based on that CPU's
++++ +++ * number of queued RCU callbacks. No locks need be held, but the
++++ +++ * caller must have disabled interrupts.
++++ +++ *
++++ +++ * Note that this function ignores the possibility that there are a lot
++++ +++ * of callbacks all of which have already seen the end of their respective
++++ +++ * grace periods. This omission is due to the need for no-CBs CPUs to
++++ +++ * be holding ->nocb_lock to do this check, which is too heavy for a
++++ +++ * common-case operation.
+ ++ +++ */
++++ +++static void check_cb_ovld(struct rcu_data *rdp)
++++ +++{
++++ +++ struct rcu_node *const rnp = rdp->mynode;
++++ +++
++++ +++ if (qovld_calc <= 0 ||
++++ +++ ((rcu_segcblist_n_cbs(&rdp->cblist) >= qovld_calc) ==
++++ +++ !!(READ_ONCE(rnp->cbovldmask) & rdp->grpmask)))
++++ +++ return; // Early boot wildcard value or already set correctly.
++++ +++ raw_spin_lock_rcu_node(rnp);
++++ +++ check_cb_ovld_locked(rdp, rnp);
++++ +++ raw_spin_unlock_rcu_node(rnp);
++++ +++}
++++ +++
++++ +++/* Helper function for call_rcu() and friends. */
static void
__call_rcu(struct rcu_head *head, rcu_callback_t func)
{