Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756054AbcDGMEW (ORCPT ); Thu, 7 Apr 2016 08:04:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39488 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755557AbcDGMET (ORCPT ); Thu, 7 Apr 2016 08:04:19 -0400 Subject: Re: [RFC PATCH v6 1/5] Thread-local ABI system call: cache CPU number of running thread To: Peter Zijlstra References: <1459789313-4917-1-git-send-email-mathieu.desnoyers@efficios.com> <1459789313-4917-2-git-send-email-mathieu.desnoyers@efficios.com> <5702A037.60200@zytor.com> <492303698.44994.1459799188052.JavaMail.zimbra@efficios.com> <856357054.45028.1459802903401.JavaMail.zimbra@efficios.com> <5703E191.2040707@redhat.com> <20160405164722.GB3430@twins.programming.kicks-ass.net> <570621E5.7060306@redhat.com> <20160407103158.GP3430@twins.programming.kicks-ass.net> <570638D9.7010108@redhat.com> <20160407111938.GR3430@twins.programming.kicks-ass.net> Cc: Mathieu Desnoyers , "H. Peter Anvin" , Andrew Morton , Russell King , Thomas Gleixner , Ingo Molnar , linux-kernel@vger.kernel.org, linux-api , Paul Turner , Andrew Hunter , Andy Lutomirski , Andi Kleen , Dave Watson , Chris Lameter , Ben Maurer , rostedt , "Paul E. McKenney" , Josh Triplett , Linus Torvalds , Catalin Marinas , Will Deacon , Michael Kerrisk , Boqun Feng From: Florian Weimer X-Enigmail-Draft-Status: N1110 Message-ID: <57064CA9.101@redhat.com> Date: Thu, 7 Apr 2016 14:03:53 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160407111938.GR3430@twins.programming.kicks-ass.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1705 Lines: 45 On 04/07/2016 01:19 PM, Peter Zijlstra wrote: > On Thu, Apr 07, 2016 at 12:39:21PM +0200, Florian Weimer wrote: >> On 04/07/2016 12:31 PM, Peter Zijlstra wrote: >>> On Thu, Apr 07, 2016 at 11:01:25AM +0200, Florian Weimer wrote: >>>>> Because ideally this structure would be part of the initial (glibc) TCB >>>>> with fixed offset etc. >>>> >>>> This is not possible because we have layering violations and code >>>> assumes it knows the precise of the glibc TCB. I think Address >>>> Sanitizer is in this category. This means we cannot adjust the TCB size >>>> based on the kernel headers used to compile glibc, and there will have >>>> to be some indirection. >>> >>> So with the proposed fixed sized object it would work, right? >> >> I didn't see a proposal for a fixed size buffer, in the sense that the >> size of struct sockaddr_in is fixed. > > This thing proposed a single 64byte structure (with the possibility of > eventually adding more 64byte structures). Basically: > > struct tlabi { > union { > __u8[64] __foo; > struct { > /* fields go here */ > }; > }; > } __aligned__(64); That's not really ?fixed size? as far as an ABI is concerned, due to the possibility of future extensions. > People objected against the fixed size scheme, but it being possible to > get a fixed TCB offset and reduce indirections is a big win IMO. It's a difficult trade-off. It's not an indirection as such, it's avoid loading the dynamic TLS offset. Let me repeat that the ELF TLS GNU ABI has very limited support for static offsets at present, and it is difficult to make them available more widely without code generation at run time (in the form of text relocations, but still). Florian