]> www.infradead.org Git - linux.git/commitdiff
rcu: Account for rcu_all_qs() in cond_resched()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 5 Nov 2017 13:51:43 +0000 (05:51 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 4 Dec 2017 18:29:00 +0000 (10:29 -0800)
If cond_resched() returns false, then it has already invoked
rcu_all_qs().  This is also invoked (now redundantly) by
rcu_note_voluntary_context_switch().  This commit therefore changes
cond_resched_rcu_qs() to invoke rcu_note_voluntary_context_switch_lite()
instead of rcu_note_voluntary_context_switch() to avoid the redundant
invocation of rcu_all_qs().

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/rcupdate.h

index a6ddc42f87a5786d08dda84f023f1ed879a74f22..7bd8b5a6db10d0e7e61b48784182aa6d8bbe79f1 100644 (file)
@@ -197,7 +197,7 @@ static inline void exit_tasks_rcu_finish(void) { }
 #define cond_resched_rcu_qs() \
 do { \
        if (!cond_resched()) \
-               rcu_note_voluntary_context_switch(current); \
+               rcu_note_voluntary_context_switch_lite(current); \
 } while (0)
 
 /*