• Paul E. McKenney's avatar
    rcu: Allow nesting of rcu_idle_enter() and rcu_idle_exit() · 29e37d81
    Paul E. McKenney authored
    
    
    Use of RCU in the idle loop is incorrect, quite a few instances of
    just that have made their way into mainline, primarily event tracing.
    The problem with RCU read-side critical sections on CPUs that RCU believes
    to be idle is that RCU is completely ignoring the CPU, along with any
    attempts and RCU read-side critical sections.
    
    The approaches of eliminating the offending uses and of pushing the
    definition of idle down beyond the offending uses have both proved
    impractical.  The new approach is to encapsulate offending uses of RCU
    with rcu_idle_exit() and rcu_idle_enter(), but this requires nesting
    for code that is invoked both during idle and and during normal execution.
    Therefore, this commit modifies rcu_idle_enter() and rcu_idle_exit() to
    permit nesting.
    Signed-off-by: default avatarPaul E. McKenney <paul.mckenney@linaro.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
    Acked-by: Deepthi Dhar...
    29e37d81
rcu.h 3.81 KB