All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
To: paulmck@linux.vnet.ibm.com, Josh Triplett <josh@joshtriplett.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Lai Jiangshan <laijs@cn.fujitsu.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] rcu: declare rcu_data variables in the section they are defined in
Date: Tue, 05 May 2015 08:40:55 +0800	[thread overview]
Message-ID: <55481197.7070905@m4x.org> (raw)
In-Reply-To: <20150504203325.GE5381@linux.vnet.ibm.com>

On 05/05/2015 04:33 AM, Paul E. McKenney wrote:
> On Sun, May 03, 2015 at 12:27:02PM -0700, Josh Triplett wrote:
>> On Sun, May 03, 2015 at 05:57:53PM +0800, Nicolas Iooss wrote:
>>> Commit 11bbb235c26f ("rcu: Use DEFINE_PER_CPU_SHARED_ALIGNED for
>>> rcu_data") replaced DEFINE_PER_CPU by DEFINE_PER_CPU_SHARED_ALIGNED in
>>> the definition of rcu_sched and rcu_bh without updating
>>> kernel/rcu/tree.h.
>>>
>>> This makes clang report a section mismatch (-Wsection warning) when
>>> building LLVMLinux because the variables are declared in .data..percpu
>>> but defined in .data..percpu..shared_aligned.
>>>
>>> Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
>>
>> Good catch.
>> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> 
> Agreed, good catch!  But don't we also need to worry about
> rcu_preempt_data?

Yes, I missed it because I didn't know that allyesconfig/allmodconfig
does not select CONFIG_PREEMPT (it selects CONFIG_PREEMPT_NONE instead).

> Also, given that tree_trace.c now uses iterators
> rather than direct access via the per-CPU variables, wouldn't the
> following be more appropriate?  (-Very- lightly tested.)

This doesn't work with CONFIG_TREE_RCU_TRACE, because
kernel/rcu/tree_trace.c uses rcu_preempt_state (in v4.1-rc2).  I've
successfully built an allmodconfig+CONFIG_PREEMPT kernel for x86_64 with
the following patch (I have not tested the result).

Anyway, thanks for your quick replies.

Nicolas

--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -91,7 +91,7 @@ static const char *tp_##sname##_varname __used
__tracepoint_string = sname##_var

 #define RCU_STATE_INITIALIZER(sname, sabbr, cr) \
 DEFINE_RCU_TPS(sname) \
-DEFINE_PER_CPU_SHARED_ALIGNED(struct rcu_data, sname##_data); \
+static DEFINE_PER_CPU_SHARED_ALIGNED(struct rcu_data, sname##_data); \
 struct rcu_state sname##_state = { \
 	.level = { &sname##_state.node[0] }, \
 	.rda = &sname##_data, \
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -519,14 +519,11 @@ extern struct list_head rcu_struct_flavors;
  * RCU implementation internal declarations:
  */
 extern struct rcu_state rcu_sched_state;
-DECLARE_PER_CPU(struct rcu_data, rcu_sched_data);

 extern struct rcu_state rcu_bh_state;
-DECLARE_PER_CPU(struct rcu_data, rcu_bh_data);

 #ifdef CONFIG_PREEMPT_RCU
 extern struct rcu_state rcu_preempt_state;
-DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data);
 #endif /* #ifdef CONFIG_PREEMPT_RCU */

 #ifdef CONFIG_RCU_BOOST


  reply	other threads:[~2015-05-05  0:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-03  9:57 [PATCH] rcu: declare rcu_data variables in the section they are defined in Nicolas Iooss
2015-05-03 19:27 ` Josh Triplett
2015-05-04 20:33   ` Paul E. McKenney
2015-05-05  0:40     ` Nicolas Iooss [this message]
2015-05-05  5:55       ` Paul E. McKenney
2015-05-05 13:57         ` [PATCH] rcu: make rcu_*_data variables static Nicolas Iooss
2015-05-05 23:25           ` josh
2015-05-06  6:09             ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55481197.7070905@m4x.org \
    --to=nicolas.iooss_linux@m4x.org \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.