rcu: Move PREEMPT_RCU preemption to switch_to() invocation
authorPaul E. McKenney <paul.mckenney@linaro.org>
Tue, 27 Mar 2012 23:02:08 +0000 (16:02 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 2 May 2012 21:43:23 +0000 (14:43 -0700)
commit616c310e83b872024271c915c1b9ab505b9efad9
tree1339bc7b3bef920b4641a5af2f182e9dfa2a6632
parent66f75a5d028beaf67c931435fdc3e7823125730c
rcu: Move PREEMPT_RCU preemption to switch_to() invocation

Currently, PREEMPT_RCU readers are enqueued upon entry to the scheduler.
This is inefficient because enqueuing is required only if there is a
context switch, and entry to the scheduler does not guarantee a context
switch.

The commit therefore moves the enqueuing to immediately precede the
call to switch_to() from the scheduler.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/um/drivers/mconsole_kern.c
include/linux/rcupdate.h
include/linux/rcutiny.h
include/linux/sched.h
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h
kernel/sched/core.c