This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: TSX lock elision for glibc v13
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: Andi Kleen <andi at firstfloor dot org>
- Cc: libc-alpha at sourceware dot org, Torvald Riegel <triegel at redhat dot com>
- Date: Wed, 26 Jun 2013 17:49:14 -0400
- Subject: Re: TSX lock elision for glibc v13
- References: <1372098290-29147-1-git-send-email-andi at firstfloor dot org> <51C9141E dot 4080802 at redhat dot com> <20130625041145 dot GW6123 at two dot firstfloor dot org>
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.