From: Greg Smith <gsmith@nc.rr.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [OT] ppc64 serialization problem
Date: Tue, 28 Mar 2006 23:08:14 -0500 [thread overview]
Message-ID: <1143605294.3075.87.camel@localhost.localdomain> (raw)
In-Reply-To: <1143601903.3585.2.camel@localhost.localdomain>
Very fair questions!!
Actually the code was
pthread_mutex_lock(&lock);
u32 |= bitB;
TRACE("A", u32, ...);
TRACE("B", u32, ...);
pthread_mutex_unlock(&lock);
where TRACE is a function call (entering a trace entry to an in-storage
wrap-around table). So for the "A" call, u32 could have come directly
from a register and for "B" from the storage location. I'll have the
user (actually a fellow developer) send me the assembly listing to make
sure.
He has tested SLES9 (kernel 2.6.5, glibc 2.3.3, gcc 3.3.3) and Debian
(kernel 2.6.16, glibc 2.3.6, gcc 4.0.3).
The TRACE occurs while the lock is held.
Now the interesting part.
I suggested he try u64 instead of u32. That works!!
He is suspecting a recent firmware upgrade may have something to do with
the problem.
Thank you,
Greg Smith
On Wed, 2006-03-29 at 14:11 +1100, Benjamin Herrenschmidt wrote:
> On Tue, 2006-03-28 at 20:58 -0500, Greg Smith wrote:
> > We have a multi-threaded app running on a p520 in 64 bit mode.
> >
> > Thread A does
> >
> > pthread_mutex_lock(&lock);
> > u32 &= ~bitA;
> > pthread_mutex_unlock(&lock);
> >
> > and Thread B does
> >
> > pthread_mutex_lock(&lock);
> > u32 |= bitB;
> > A = u32;
> > B = u32;
> > pthread_mutex_unlock(&lock);
> >
> > On rare occasions, values A and B will differ! In the examples that I
> > have seen, there is contention with `lock'. This phenomenon does not
> > occur on ppc32 or a number of other architectures that we support.
>
> How did you actually "look" at A and B ? is that also protected by the
> lock ?
>
> > I confess I do not know the linux version nor the glibc version nor what
> > pthreads implementation is being used. I'll find that out shortly.
>
> That's fairly important to know those yes.
>
> > What I am curious about is where the problem might lie
> > (kernel/lib/pthreads/app) so I can ask the right people.
> >
> > Thank you for your patience,
> > Greg Smith
next prev parent reply other threads:[~2006-03-29 4:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-29 1:58 [OT] ppc64 serialization problem Greg Smith
2006-03-29 3:11 ` Benjamin Herrenschmidt
2006-03-29 4:08 ` Greg Smith [this message]
2006-03-29 4:21 ` Benjamin Herrenschmidt
2006-03-29 4:07 ` Paul Mackerras
2006-03-29 18:20 ` Greg Smith
2006-03-29 18:32 ` Olaf Hering
2006-03-29 18:42 ` Ivan Warren
2006-03-29 21:29 ` Ivan Warren
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=1143605294.3075.87.camel@localhost.localdomain \
--to=gsmith@nc.rr.com \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@ozlabs.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;
as well as URLs for NNTP newsgroup(s).