• P
    rcu: Eliminate RCU_FAST_NO_HZ grace-period hang · f535a607
    Paul E. McKenney 提交于
    With the new implementation of RCU_FAST_NO_HZ, it was possible to hang
    RCU grace periods as follows:
    
    o	CPU 0 attempts to go idle, cycles several times through the
    	rcu_prepare_for_idle() loop, then goes dyntick-idle when
    	RCU needs nothing more from it, while still having at least
    	on RCU callback pending.
    
    o	CPU 1 goes idle with no callbacks.
    
    Both CPUs can then stay in dyntick-idle mode indefinitely, preventing
    the RCU grace period from ever completing, possibly hanging the system.
    
    This commit therefore prevents CPUs that have RCU callbacks from entering
    dyntick-idle mode.  This approach also eliminates the need for the
    end-of-grace-period IPIs used previously.
    Signed-off-by: NPaul E. McKenney <paul.mckenney@linaro.org>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    f535a607
rcutree_plugin.h 60.7 KB