• Paul E. McKenney's avatar
    rcu: Make idle entry report expedited quiescent states · 790da248
    Paul E. McKenney authored
    
    
    In non-preemptible kernels, an unfortunately timed expedited grace period
    can result in the rcu_exp_handler() IPI handler setting the rcu_data
    structure's cpu_no_qs.b.exp field just as the target CPU enters idle.
    There are situations in which this field will not be checked until after
    that CPU exits idle.  The resulting grace-period latency does not qualify
    as "expedited".
    
    This commit therefore checks this field upon non-preemptible idle entry in
    the rcu_preempt_deferred_qs() function.  It also qualifies the rcu_core()
    preempt_count() check with IS_ENABLED(CONFIG_PREEMPT_COUNT) to prevent
    false-positive quiescent states from count-free kernels.
    Reported-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    790da248
tree.c 152 KB