From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Greg Smith <gsmith@nc.rr.com>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [OT] ppc64 serialization problem
Date: Wed, 29 Mar 2006 15:21:01 +1100 [thread overview]
Message-ID: <1143606061.3585.9.camel@localhost.localdomain> (raw)
In-Reply-To: <1143605294.3075.87.camel@localhost.localdomain>
On Tue, 2006-03-28 at 23:08 -0500, Greg Smith wrote:
> 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.
Could you try to make a small program that reproduces the problem
instead ?
> 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.
I doubt it, but I need more informations.
> 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:21 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
2006-03-29 4:21 ` Benjamin Herrenschmidt [this message]
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=1143606061.3585.9.camel@localhost.localdomain \
--to=benh@kernel.crashing.org \
--cc=gsmith@nc.rr.com \
--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).