• Li Zhong's avatar
    rcu: Move TINY_RCU quiescent state out of extended quiescent state · 22a76726
    Li Zhong authored
    TINY_RCU's rcu_idle_enter_common() invokes rcu_sched_qs() in order
    to inform the RCU core of the quiescent state implied by idle entry.
    Of course, idle is also an extended quiescent state, so that the call
    to rcu_sched_qs() speeds up RCU's invoking of any callbacks that might
    be queued.  This speed-up is important when entering into dyntick-idle
    mode -- if there are no further scheduling-clock interrupts, the callbacks
    might never be invoked, which could result in a system hang.
    
    However, processing callbacks does event tracing, which in turn
    implies RCU read-side critical sections, which are illegal in extended
    quiescent states.  This patch therefore moves the call to rcu_sched_qs()
    so that it precedes the point at which we inform lockdep that RCU has
    entered an extended quiescent state.
    Signed-off-by: default avatarLi Zhong <zhong@linux.vnet.ibm.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    22a76726
rcutiny.c 10.3 KB