From: Paul E. McKenney Date: Mon, 17 Mar 2014 04:36:25 +0000 (-0700) Subject: sched,rcu: Make cond_resched() report RCU quiescent states X-Git-Tag: omap-for-v3.16/fixes-against-rc1~39^2~26^2^2~2^3~15 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac1bea85781e9004da9b3e8a4b097c18492d857c;p=pandora-kernel.git sched,rcu: Make cond_resched() report RCU quiescent states Given a CPU running a loop containing cond_resched(), with no other tasks runnable on that CPU, RCU will eventually report RCU CPU stall warnings due to lack of quiescent states. Fortunately, every call to cond_resched() is a perfectly good quiescent state. Unfortunately, invoking rcu_note_context_switch() is a bit heavyweight for cond_resched(), especially given the need to disable preemption, and, for RCU-preempt, interrupts as well. This commit therefore maintains a per-CPU counter that causes cond_resched(), cond_resched_lock(), and cond_resched_softirq() to call rcu_note_context_switch(), but only about once per 256 invocations. This ratio was chosen in keeping with the relative time constants of RCU grace periods. Signed-off-by: Paul E. McKenney Reviewed-by: Josh Triplett --- Reading git-diff-tree failed