• Paul E. McKenney's avatar
    rcu: Attempt QS when CPU discovers GP for strict GPs · 1a2f5d57
    Paul E. McKenney authored
    A given CPU normally notes a new grace period during one RCU_SOFTIRQ,
    but avoids reporting the corresponding quiescent state until some later
    RCU_SOFTIRQ.  This leisurly approach improves efficiency by increasing
    the number of update requests served by each grace period, but is not
    what is needed for kernels built with CONFIG_RCU_STRICT_GRACE_PERIOD=y.
    
    This commit therefore adds a new rcu_strict_gp_check_qs() function
    which, in CONFIG_RCU_STRICT_GRACE_PERIOD=y kernels, simply enters and
    immediately exist an RCU read-side critical section.  If the CPU is
    in a quiescent state, the rcu_read_unlock() will attempt to report an
    immediate quiescent state.  This rcu_strict_gp_check_qs() function is
    invoked from note_gp_changes(), so that a CPU just noticing a new grace
    period might immediately report a quiescent state for that grace period.
    
    Reported-by Jann Horn <jannh@google.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    1a2f5d57
tree.c 141 KB