From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, hch@infradead.org,
mmlnx@us.ibm.com, dipankar@in.ibm.com, dsmith@redhat.com
Subject: Re: [patch 1/2] Linux Kernel Markers - Support Multiple Probes
Date: Mon, 17 Dec 2007 09:40:23 -0800 [thread overview]
Message-ID: <20071217174023.GA4829@linux.vnet.ibm.com> (raw)
In-Reply-To: <20071204194506.GA1431@Krystal>
On Tue, Dec 04, 2007 at 02:45:06PM -0500, Mathieu Desnoyers wrote:
> * Andrew Morton (akpm@linux-foundation.org) wrote:
> > On Tue, 4 Dec 2007 14:21:00 -0500
> > Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> wrote:
> >
> > > > > + */
> > > > > +void marker_probe_cb(const struct marker *mdata, void *call_private,
> > > > > + const char *fmt, ...)
> > > > > +{
> > > > > + va_list args;
> > > > > + char ptype;
> > > > > +
> > > > > + preempt_disable();
> > > >
> > > > What are the preempt_disable()s doing in here?
> > > >
> > > > Unless I missed something obvious, a comment is needed here (at least).
> > > >
> > >
> > > They make sure the teardown of the callbacks can be done correctly when
> > > they are in modules and they insure RCU read coherency. Will add
> > > comment.
> >
> > So shouldn't it be using rcu_read_lock()? If that does not suit, should we
> > be adding new rcu primitives rather than open-coding and adding dependencies?
>
> Hrm, yes, good point. Since there seems to be extra magic under
> __acquire(RCU); and rcu_read_acquire();, the the fact that I use
> rcu_barrier() for synchronization, we should. I'll change it.
(Sorry to show up so late... It has been a bit crazy of late...)
The __acquire(RCU) and rcu_read_acquire() are strictly for the benefit
of sparse -- they allow it to detect mismatched rcu_read_lock() and
rcu_read_unlock() pairs. (Restricted to a single function, but so
it goes.)
I don't claim to fully understand this code, so may be way off base.
However, it looks like you are relying on stop_machine(), which in
turn interacts with preempt_disable(), but -not- necessarily with
rcu_read_lock(). Now, your rcu_barrier() call -does- interact with
rcu_read_lock() correctly, but either you need the preempt_disable()s
to interact correctly with stop_machine(), or you need to update the
comments calling out dependency on stop_machine().
Or it might be that the RCU API needs a bit of expanding. For example,
if you absolutely must use call_rcu(), and you also must absolutely
rely on stop_machine(), this might indicate that we need to add a
call_rcu_sched() as an asynchronous counterpart to synchronize_sched().
This would also require an rcu_sched_barrier() as well, to allow safe
unloading of modules using call_rcu_sched().
Or am I missing something?
Thanx, Paul
next prev parent reply other threads:[~2007-12-17 17:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-04 18:18 [patch 0/2] Linux Kernel Markers updates Mathieu Desnoyers
2007-12-04 18:18 ` [patch 1/2] Linux Kernel Markers - Support Multiple Probes Mathieu Desnoyers
2007-12-04 18:55 ` Christoph Hellwig
2007-12-04 20:03 ` Frank Ch. Eigler
2007-12-04 19:06 ` Andrew Morton
2007-12-04 19:21 ` Mathieu Desnoyers
2007-12-04 19:39 ` Andrew Morton
2007-12-04 19:45 ` Mathieu Desnoyers
2007-12-17 17:40 ` Paul E. McKenney [this message]
2007-12-20 14:25 ` Mathieu Desnoyers
2007-12-21 17:18 ` Paul E. McKenney
2007-12-17 18:45 ` Paul E. McKenney
2007-12-20 15:09 ` Mathieu Desnoyers
2007-12-04 18:18 ` [patch 2/2] Linux Kernel Markers - Create modpost file Mathieu Desnoyers
2007-12-04 18:57 ` Christoph Hellwig
2007-12-04 19:10 ` Andrew Morton
2007-12-04 19:15 ` Mathieu Desnoyers
2007-12-04 19:22 ` Christoph Hellwig
2007-12-04 21:34 ` Roland McGrath
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=20071217174023.GA4829@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=dipankar@in.ibm.com \
--cc=dsmith@redhat.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mmlnx@us.ibm.com \
/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.