From: Joel Fernandes <joel@joelfernandes.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "Paul E. McKenney" <paulmck@linux.ibm.com>,
linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Amol Grover <frextrite@gmail.com>
Subject: Re: [for-next][PATCH 4/4] ftrace: Add comment to why rcu_dereference_sched() is open coded
Date: Wed, 5 Feb 2020 09:19:15 -0500 [thread overview]
Message-ID: <20200205141915.GA194021@google.com> (raw)
In-Reply-To: <20200205063349.4c3df2c0@oasis.local.home>
On Wed, Feb 05, 2020 at 06:33:49AM -0500, Steven Rostedt wrote:
>
> Paul and Joel,
>
> Care to ack this patch (or complain about it ;-) ?
>
> -- Steve
>
>
> On Wed, 05 Feb 2020 05:49:33 -0500
> Steven Rostedt <rostedt@goodmis.org> wrote:
>
> > From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
> >
> > Because the function graph tracer can execute in sections where RCU is not
> > "watching", the rcu_dereference_sched() for the has needs to be open coded.
> > This is fine because the RCU "flavor" of the ftrace hash is protected by
> > its own RCU handling (it does its own little synchronization on every CPU
> > and does not rely on RCU sched).
> >
> > Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > ---
> > kernel/trace/trace.h | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
> > index 022def96d307..8c52f5de9384 100644
> > --- a/kernel/trace/trace.h
> > +++ b/kernel/trace/trace.h
> > @@ -975,6 +975,11 @@ static inline int ftrace_graph_addr(struct ftrace_graph_ent *trace)
> >
> > preempt_disable_notrace();
> >
> > + /*
> > + * Have to open code "rcu_dereference_sched()" because the
> > + * function graph tracer can be called when RCU is not
> > + * "watching".
> > + */
> > hash = rcu_dereference_protected(ftrace_graph_hash, !preemptible());
> >
> > if (ftrace_hash_empty(hash)) {
> > @@ -1022,6 +1027,11 @@ static inline int ftrace_graph_notrace_addr(unsigned long addr)
> >
> > preempt_disable_notrace();
> >
> > + /*
> > + * Have to open code "rcu_dereference_sched()" because the
> > + * function graph tracer can be called when RCU is not
> > + * "watching".
> > + */
> > notrace_hash = rcu_dereference_protected(ftrace_graph_notrace_hash,
> > !preemptible());
> >
Could you paste the stack here when RCU is not watching? In trace event code
IIRC we call rcu_enter_irqs_on() to have RCU temporarily watch, since that
code can be called from idle loop. Should we doing the same here as well?
thanks,
- Joel
next prev parent reply other threads:[~2020-02-05 14:19 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 10:49 [for-next][PATCH 0/4] tracing: Hopefully last update for 5.6 Steven Rostedt
2020-02-05 10:49 ` [for-next][PATCH 1/4] bootconfig: Only load bootconfig if "bootconfig" is on the kernel cmdline Steven Rostedt
2020-02-05 10:49 ` [for-next][PATCH 2/4] tracing: Annotate ftrace_graph_hash pointer with __rcu Steven Rostedt
2020-02-05 10:49 ` [for-next][PATCH 3/4] tracing: Annotate ftrace_graph_notrace_hash " Steven Rostedt
2020-02-05 10:49 ` [for-next][PATCH 4/4] ftrace: Add comment to why rcu_dereference_sched() is open coded Steven Rostedt
2020-02-05 11:33 ` Steven Rostedt
2020-02-05 14:19 ` Joel Fernandes [this message]
2020-02-05 14:28 ` Steven Rostedt
2020-02-05 15:42 ` Joel Fernandes
2020-02-05 15:49 ` Steven Rostedt
2020-02-05 16:08 ` Joel Fernandes
2020-02-05 21:54 ` Joel Fernandes
2020-02-05 21:59 ` Joel Fernandes
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=20200205141915.GA194021@google.com \
--to=joel@joelfernandes.org \
--cc=akpm@linux-foundation.org \
--cc=frextrite@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=paulmck@linux.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.