Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Nov 2003 12:36:42 -0500 (EST)
From:      Daniel Eischen <eischen@vigrid.com>
To:        Marcel Moolenaar <marcel@xcllnt.net>
Cc:        davidxu@freebsd.org
Subject:   Re: KSE/ia64 broken
Message-ID:  <Pine.GSO.4.10.10311151223450.5390-100000@pcnet5.pcnet.com>
In-Reply-To: <20031115031906.GA52831@dhcp01.pn.xcllnt.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 14 Nov 2003, Marcel Moolenaar wrote:

> Gang,
> 
> The following change broke KSE on ia64:
> 
> --------
> revision 1.18
> date: 2003/11/08 06:07:04;  author: davidxu;  state: Exp;  lines: +16 -17
> Use THR lock instead of KSE lock to avoid scheduler be blocked in spinlock.
>  
> Reviewed by: deischen
> --------
> 
> We seem to be clobbering the thread structure instead of writing
> to the mailbox. This happens at initialization. Can it be that
> the change assumes PER_KSE and doesxn't work for PER_THREAD?

I _think_ this may be because rltd-elf (at least for ia64) calls
malloc with the rtld lock held.  I'm not sure how to test this
theory.

The rtld lock uses a KSE lock because it is not always called
within the context of a thread.  We try to be careful in libpthread
to only call malloc()/free() either at initialization (when there
are no threads) or within the context of a thread.  This allows
us to make the malloc lock (currently a spinlock) a thread-based
lock.  KSE locks have the disadvantage of blocking the KSE
from running any other threads.  So moving spinlocks to thread
locks improves performance.

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10311151223450.5390-100000>