• Paul E. McKenney's avatar
    sched,rcu: Make cond_resched() provide RCU quiescent state · f79c3ad6
    Paul E. McKenney authored
    There is some confusion as to which of cond_resched() or
    cond_resched_rcu_qs() should be added to long in-kernel loops.
    This commit therefore eliminates the decision by adding RCU quiescent
    states to cond_resched().  This commit also simplifies the code that
    used to interact with cond_resched_rcu_qs(), and that now interacts with
    cond_resched(), to reduce its overhead.  This reduction is necessary to
    allow the heavier-weight cond_resched_rcu_qs() mechanism to be invoked
    everywhere that cond_resched() is invoked.
    
    Part of that reduction in overhead converts the jiffies_till_sched_qs
    kernel parameter to read-only at runtime, thus eliminating the need for
    bounds checking.
    Reported-by: default avatarMichal Hocko <mhocko@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    [ paulmck: Keep PREEMPT=n cond_resched a no-op, per Peter Zijlstra. ]
    f79c3ad6
tree.c 130 KB