From: compudj@krystal.dyndns.org (Mathieu Desnoyers)
Subject: [ltt-dev] (forw) [rostedt@goodmis.org: Re: [PATCH 0/2] jump label: 2.6.38 updates]
Date: Mon, 14 Feb 2011 17:31:48 -0500 [thread overview]
Message-ID: <BLU0-SMTP12932843100F2D29B3825B96D00@phx.gbl> (raw)
In-Reply-To: <20110214215854.GA3016@Krystal>
I'm also thinking that the combination of rcu_cmpxchg_pointer() and
rcu_dereference() are problematic, because we use ll/sc for the cmpxchg
without the matching lwz on the read-side. We should probably also use a
matching stw for rcu_assign_pointer if we want to support this case.
Mathieu
* Mathieu Desnoyers (mathieu.desnoyers at polymtl.ca) wrote:
> Hi Paul,
>
> Please see the message below. It looks like the liburcu
> uatomic_read()/uatomic_set() implementations would need to be moved to
> lwz/stw if what Steven says below is true. It seems to be in sync with
> what is done in the libatomic ops implementation.
>
> Thoughts ?
>
> Mathieu
>
> ----- Forwarded message from Steven Rostedt <rostedt at goodmis.org> -----
>
> Date: Mon, 14 Feb 2011 16:39:36 -0500
> To: Peter Zijlstra <peterz at infradead.org>
> Cc: Will Newton <will.newton at gmail.com>, Jason Baron <jbaron at redhat.com>,
> Mathieu Desnoyers <mathieu.desnoyers at polymtl.ca>, hpa at zytor.com,
> mingo at elte.hu, tglx at linutronix.de, andi at firstfloor.org,
> roland at redhat.com, rth at redhat.com, masami.hiramatsu.pt at hitachi.com,
> fweisbec at gmail.com, avi at redhat.com, davem at davemloft.net,
> sam at ravnborg.org, ddaney at caviumnetworks.com, michael at ellerman.id.au,
> linux-kernel at vger.kernel.org, Mike Frysinger <vapier at gentoo.org>,
> Chris Metcalf <cmetcalf at tilera.com>, dhowells <dhowells at redhat.com>,
> Martin Schwidefsky <schwidefsky at de.ibm.com>,
> "heiko.carstens" <heiko.carstens at de.ibm.com>,
> benh <benh at kernel.crashing.org>
> X-Mailer: Evolution 2.30.3
> From: Steven Rostedt <rostedt@goodmis.org>
> Subject: Re: [PATCH 0/2] jump label: 2.6.38 updates
>
> On Mon, 2011-02-14 at 16:29 -0500, Steven Rostedt wrote:
>
> > > while (atomic_read(&foo) != n)
> > > cpu_relax();
> > >
> > > and the problem is that cpu_relax() doesn't know which particular
> > > cacheline to flush in order to make things go faster, hm?
> >
> > But what about any global variable? Can't we also just have:
> >
> > while (global != n)
> > cpu_relax();
> >
> > ?
>
> Matt Fleming answered this for me on IRC, and I'll share the answer here
> (for those that are dying to know ;)
>
> Seems that the atomic_inc() uses ll/sc operations that do not affect the
> cache. Thus the problem is only with atomic_read() as
>
> while(atomic_read(&foo) != n)
> cpu_relax();
>
> Will just check the cache version of foo. But because ll/sc skips the
> cache, the foo will never update. That is, atomic_inc() and friends do
> not touch the cache, and the CPU spinning in this loop will is only
> checking the cache, and will spin forever.
>
> Thus it is not about global, as global is updated by normal means and
> will update the caches. atomic_t is updated via the ll/sc that ignores
> the cache and causes all this to break down. IOW... broken hardware ;)
>
> Matt, feel free to correct this if it is wrong.
>
> -- Steve
>
> --
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
next parent reply other threads:[~2011-02-14 22:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20110214215854.GA3016@Krystal>
2011-02-14 22:31 ` Mathieu Desnoyers [this message]
[not found] ` <BLU0-SMTP6548178D7381CA100E917D96D00@phx.gbl>
2011-02-14 23:07 ` Paul E. McKenney
2011-02-14 23:23 ` Mathieu Desnoyers
[not found] ` <BLU0-SMTP509A901A2FDAAEBE1F11FE96D00@phx.gbl>
2011-02-15 0:46 ` Paul E. McKenney
2011-02-15 1:16 ` Mathieu Desnoyers
2011-02-14 21:58 Mathieu Desnoyers
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=BLU0-SMTP12932843100F2D29B3825B96D00@phx.gbl \
--to=compudj@krystal.dyndns.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox