All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Grundler <grundler@parisc-linux.org>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: John David Anglin <dave@hiauly1.hia.nrc.ca>,
	parisc-linux@parisc-linux.org
Subject: Re: [parisc-linux] coherent ops and mb() revisited
Date: Wed, 8 Sep 2004 10:52:10 -0600	[thread overview]
Message-ID: <20040908165210.GA10316@colo.lackof.org> (raw)
In-Reply-To: <1094571019.2068.101.camel@mulgrave>

On Tue, Sep 07, 2004 at 11:30:17AM -0400, James Bottomley wrote:
> > Maybe I'm just confused again. I was thinking gcc could move instructions
> > between the asm("ldcw") and mb(). And the same thing between
> > mb() and "lock = 1".
> 
> It can, in a restricted fashion (the asm volatile ensures this
> restriction).  But that's OK.  What we want is that when we complete the
> spin_lock code, the spin is locked and memory clobbered.  That's why the
> only necessary mb() is at the end.

yes - I understand that part and agree the current code is correct.

> > In other words, I'm worried about the "distance" bewteen lock/unlock
> > ops is greater than the "distance" between two mb() that contain
> > the critical section of code.
> 
> Well, the point about using an optimising compiler is that you're
> supposed to give it the information necessary to do its job.  In this
> case, the correct information is that a is volatile. 

Yeah - there is a tradeoff between optimizing the pipeline between
cases where the lock is contended and where it is not. The compiler
does not have that info unless it could consume Profile info.
(ie "Profile Based Optimization").
I was thinking we should favor the contended case to make it
less painful. I've changed my mind and will not push this patch.

> And further, after
> it's finished the spin lock code we prevent no reordering leaks and
> clobber memory.

Yes - no argument about correctness of current code.

> > Erm, how?
> > Our mb() definition uses asm(:::"memory").
> > Is that different from using "memory" in the actual bit of assembly?
> 
> Because in your implementation you have the barrier in the middle of a
> loop; that means it's crossed many times in the contended case.  In mine
> it's only crossed once.

But the _ldcw() is part of a tight "while" loop.
What's the penalty for "crossing" the barrier?
I don't see one.

BTW, do you think we should use coherent loads/stores for locks?
That's the other aspect of the patch that I think jda would like
to see incorporated.

thanks,
grant
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

  reply	other threads:[~2004-09-08 16:52 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-05  1:38 [parisc-linux] coherent ops and mb() revisited Grant Grundler
2004-09-05  2:56 ` James Bottomley
2004-09-05  6:27   ` John David Anglin
2004-09-05 14:36     ` James Bottomley
2004-09-06  4:19       ` Grant Grundler
2004-09-06  9:24         ` John David Anglin
2004-09-06 14:15         ` James Bottomley
2004-09-07 15:17           ` Grant Grundler
2004-09-07 15:30             ` James Bottomley
2004-09-08 16:52               ` Grant Grundler [this message]
2004-09-08 17:11                 ` James Bottomley
2004-09-10 16:11                   ` Grant Grundler

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=20040908165210.GA10316@colo.lackof.org \
    --to=grundler@parisc-linux.org \
    --cc=James.Bottomley@SteelEye.com \
    --cc=dave@hiauly1.hia.nrc.ca \
    --cc=parisc-linux@parisc-linux.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.