From: Paul E. McKenney Date: Thu, 4 Sep 2014 19:21:41 +0000 (-0700) Subject: rcu: Use DEFINE_PER_CPU_SHARED_ALIGNED for rcu_data X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=11bbb235c26f93b7c69e441452e44adbf6ed6996;p=linux-beck.git rcu: Use DEFINE_PER_CPU_SHARED_ALIGNED for rcu_data The rcu_data per-CPU variable has a number of fields that are atomically manipulated, potentially by any CPU. This situation can result in false sharing with per-CPU variables that have the misfortune of being allocated adjacent to rcu_data in memory. This commit therefore changes the DEFINE_PER_CPU() to DEFINE_PER_CPU_SHARED_ALIGNED() in order to avoid this false sharing. Reported-by: Christoph Lameter Signed-off-by: Paul E. McKenney Reviewed-by: Christoph Lameter Reviewed-by: Pranith Kumar --- diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index c0673c56fb1a..ab6fcfb4fe11 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -105,7 +105,7 @@ struct rcu_state sname##_state = { \ .name = RCU_STATE_NAME(sname), \ .abbr = sabbr, \ }; \ -DEFINE_PER_CPU(struct rcu_data, sname##_data) +DEFINE_PER_CPU_SHARED_ALIGNED(struct rcu_data, sname##_data) RCU_STATE_INITIALIZER(rcu_sched, 's', call_rcu_sched); RCU_STATE_INITIALIZER(rcu_bh, 'b', call_rcu_bh);