All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC] rcu: Don't disable preemption for Tiny and Tree RCU readers
@ 2015-07-31  4:37 Paul E. McKenney
  0 siblings, 0 replies; only message in thread
From: Paul E. McKenney @ 2015-07-31  4:37 UTC (permalink / raw)
  To: josh; +Cc: linux-kernel

rcu: Don't disable preemption for Tiny and Tree RCU readers

Because preempt_disable() maps to barrier() for non-debug builds,
it forces the compiler to spill and reload registers.  Because Tree
RCU and Tiny RCU now only appear in CONFIG_PREEMPT=n builds, these
barrier() instances generate needless extra code for each instance of
rcu_read_lock() and rcu_read_unlock().  This extra code slows down Tree
RCU and bloats Tiny RCU (though probably not significantly).

This commit therefore removes the preempt_disable() and preempt_enable()
from the non-preemptible implementations of __rcu_read_lock() and
__rcu_read_unlock(), respectively.

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

diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 78af46c98e55..927c5e60c1dd 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -298,12 +298,14 @@ void synchronize_rcu(void);
 
 static inline void __rcu_read_lock(void)
 {
-	preempt_disable();
+	if (!IS_ENABLED(CONFIG_TINY_RCU))
+		preempt_disable();
 }
 
 static inline void __rcu_read_unlock(void)
 {
-	preempt_enable();
+	if (!IS_ENABLED(CONFIG_TINY_RCU))
+		preempt_enable();
 }
 
 static inline void synchronize_rcu(void)


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-07-31  4:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-31  4:37 [PATCH RFC] rcu: Don't disable preemption for Tiny and Tree RCU readers Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.