From: David Mosberger <davidm@napali.hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] Re: ia64_spinlock_contention and NEW_LOCK
Date: Thu, 13 Mar 2003 19:16:26 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590709806081@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590709806055@msgid-missing>
>>>>> On Thu, 13 Mar 2003 08:18:49 +1100, Keith Owens <kaos@sgi.com> said:
Keith> On Wed, 12 Mar 2003 09:27:14 -0800,
Keith> David Mosberger <davidm@napali.hpl.hp.com> wrote:
>> This is wrong:
>> + .prologue
>> + .altrp b7
>> + .save ar.pfs, r29
>> + mov b7=r28 // my "return" address
>> + mov r29=0 // dummy ar.pfs, pretend zero frame size
>> You have a 1-instruction window where the unwind info is wrong.
>> Single-stepping with the latest Ski beta and using the "cstack"
>> command, you should be able to see the problem.
Keith> I know, but do not see any way around it.
It should be easy to fix: save ar.pfs in a scratch register, then use
br.call/brl.call to invoke the ia64_spinlock_contention. Then
everything will work out properly.
>> In general, I'm quite nervous about doing such trickery underneath the
>> compiler. Would you be interested in trying out the alternative of
>> simply using __sync_val_compare_and_swap(), likely()/unlikely() and
>> making ia64_spinlock_contention() a normal procedure? I'd rather
>> pester the compiler folks than live with code that's bound to bite us
>> in the future. ;-)
Keith> My biggest concern with calling any C code from spinlock contention is
Keith> the potential for unbounded recursion. If the C code does anything
Keith> that uses a spinlock (including printk) then we could end up back in
Keith> the contention code and blow the stack. The asm code is tricky but
Keith> safe.
I see your point, but I don't think it's a very strong argument. In
any case, as long as GCC doesn't do shrink-wrapping, a pure C solution
may not be practical anyhow.
--david
next prev parent reply other threads:[~2003-03-13 19:16 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-12 10:19 [Linux-ia64] Re: ia64_spinlock_contention and NEW_LOCK Keith Owens
2003-03-12 10:35 ` Keith Owens
2003-03-12 17:27 ` David Mosberger
2003-03-12 21:18 ` Keith Owens
2003-03-12 21:51 ` Keith Owens
2003-03-13 19:16 ` David Mosberger [this message]
2003-03-13 21:59 ` Keith Owens
2003-03-13 22:14 ` David Mosberger
2003-03-13 22:20 ` Keith Owens
2003-03-13 22:26 ` David Mosberger
2003-03-13 22:42 ` Keith Owens
2003-03-13 22:46 ` David Mosberger
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=marc-linux-ia64-105590709806081@msgid-missing \
--to=davidm@napali.hpl.hp.com \
--cc=linux-ia64@vger.kernel.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.