• Paul E. McKenney's avatar
    rcu: Control grace-period delays directly from value · 8d7dc928
    Paul E. McKenney authored
    In a misguided attempt to avoid an #ifdef, the use of the
    gp_init_delay module parameter was conditioned on the corresponding
    RCU_TORTURE_TEST_SLOW_INIT Kconfig variable, using IS_ENABLED() at
    the point of use in the code.  This meant that the compiler always saw
    the delay, which meant that RCU_TORTURE_TEST_SLOW_INIT_DELAY had to be
    unconditionally defined.  This in turn caused "make oldconfig" to ask
    pointless questions about the value of RCU_TORTURE_TEST_SLOW_INIT_DELAY
    in cases where it was not even used.
    
    This commit avoids these pointless questions by defining gp_init_delay
    under #ifdef.  In one branch, gp_init_delay is initialized to
    RCU_TORTURE_TEST_SLOW_INIT_DELAY and is also a module parameter (thus
    allowing boot-time modification), and in the other branch gp_init_delay
    is a const variable initialized by default to zero.
    
    This approach also simplifies the code at the delay point by eliminating
    the IS_DEFINED().  Because gp_init_delay is constant zero in the no-delay
    case intended for production use, the "gp_init_delay > 0" check causes
    the delay to become dead code, as desired in this case.  In addition,
    this commit replaces magic constant "10" with the preprocessor variable
    PER_RCU_NODE_PERIOD, which controls the number of grace periods that
    are allowed to elapse at full speed before a delay is inserted.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by:
    Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    8d7dc928
tree.c 128 KB