• Paul E. McKenney's avatar
    rcu: Report QS for outermost PREEMPT=n rcu_read_unlock() for strict GPs · aa40c138
    Paul E. McKenney authored
    The CONFIG_PREEMPT=n instance of rcu_read_unlock is even more
    aggressively than that of CONFIG_PREEMPT=y in deferring reporting
    quiescent states to the RCU core.  This is just what is wanted in normal
    use because it reduces overhead, but the resulting delay is not what
    is wanted for kernels built with CONFIG_RCU_STRICT_GRACE_PERIOD=y.
    This commit therefore adds an rcu_read_unlock_strict() function that
    checks for exceptional conditions, and reports the newly started
    quiescent state if it is safe to do so, also doing a spin-delay if
    requested via rcutree.rcu_unlock_delay.  This commit also adds a call
    to rcu_read_unlock_strict() from the CONFIG_PREEMPT=n instance of
    __rcu_read_unlock().
    
    [ paulmck: Fixed bug located by kernel test robot <lkp@intel.com> ]
    Reported-by Jann Horn <jannh@google.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    aa40c138
tree.c 142 KB