• Byungchul Park's avatar
    rcu: Improve rcu_note_voluntary_context_switch() reporting · 07f27570
    Byungchul Park authored
    We expect a quiescent state of TASKS_RCU when cond_resched_tasks_rcu_qs()
    is called, no matter whether it actually be scheduled or not. However,
    it currently doesn't report the quiescent state when the task enters
    into __schedule() as it's called with preempt = true. So make it report
    the quiescent state unconditionally when cond_resched_tasks_rcu_qs() is
    called.
    
    And in TINY_RCU, even though the quiescent state of rcu_bh also should
    be reported when the tick interrupt comes from user, it doesn't. So make
    it reported.
    
    Lastly in TREE_RCU, rcu_note_voluntary_context_switch() should be
    reported when the tick interrupt comes from not only user but also idle,
    as an extended quiescent state.
    Signed-off-by: default avatarByungchul Park <byungchul.park@lge.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    [ paulmck: Simplify rcutiny portion given no RCU-tasks for !PREEMPT. ]
    07f27570
tree.c 131 KB