This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: TSX lock elision for glibc v13


On 06/25/2013 12:11 AM, Andi Kleen wrote:
> On Mon, Jun 24, 2013 at 11:53:02PM -0400, Carlos O'Donell wrote:
>> On 06/24/2013 02:24 PM, Andi Kleen wrote:
>>> All open issues addressed. Some minor fast path optimizations.
>>> Should be ready for merging now.
>>
>> We really need to split this up into two different pieces.
>>
>> * Easy to merge changes that have no ABI/API.
> 
> You mean no header changes?
> 
> If you mean somehow implementing only half of elision, that is
> impossible. Elision is defined by the CPU and it either happens
> or or it doesn't happen, and when it happens it has elision semantics. 
> I cannot split it up.
> 
> I assume you mean header changes.

I mean no externally exposed changes that are visible to the user
as new types, new symbols, etc, that would require glibc to maintain
backwards compatibility forever.

You can make header changes, but they must be within the implementation
namespace e.g. __*.

>>
>> * Changes that make ABI/API changes that we will review
>>   more thorougly.
> 
> AFAIK all the ABI changes (that is header changes)
> are already in separate patches. Except for the the latest
> incrementals.

They are and they aren't. Some of the patches are intertwined
with others and contain superfluous information that is only
used by later patches that add ABI/API changes.

Why don't we try to trim things down to the minimal set we need
to enable elision for default mutexes with a configure switch,
and then shift our focus to the patches that really need review.

> Patches changing the headers.
> 
> e6ab78a Add a configure option to enable lock elision and disable by default
> 	no header  change
> a16a360 Add manual for lock elision
> 	no header change
> 164208b Fix tst-mutexpi8
> 	no header change
> d473c1a Extend the test suite for TSX and add some new tests to test elision
> 	no header change
> 56be976 Add lock elision to rwlocks
> 	main implementation of elision for rwlock, no header changes
> 60a4216 Only allow to enable/disable elision for a mutex when the CPU supports it
> 	no header changes, but i
> 478a306 Disable elision for PTHREAD_MUTEX_NORMAL mutexes
> 3851f89 Support setting elision in pthread_mutexattr_settype
> 	interface changes
> 1cac2aa Add elision to pthread_mutex_{try,timed,un,}lock
> 	Bulk of implementation, no new interface
> c8620b0 Add external interface changes: new lock types for pthread_mutex_t
> 	main file with header/api changes
> 5edb6fa Add the low level infrastructure for pthreads lock elision with TSX
> 	low level code, no header changes

Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]