From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH v4 1/5] getcpu_cache system call: cache CPU number of running thread Date: Mon, 29 Feb 2016 11:39:34 +0100 Message-ID: <3364335.Bqf8sAzlTS@wuerfel> References: <1456270120-7560-1-git-send-email-mathieu.desnoyers@efficios.com> <1082926946.10326.1456619994590.JavaMail.zimbra@efficios.com> <20160229103221.GI6356@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Return-path: In-Reply-To: <20160229103221.GI6356-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org> Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Peter Zijlstra Cc: Linus Torvalds , Ben Maurer , Thomas Gleixner , Ingo Molnar , Russell King , linux-api , Andrew Morton , Michael Kerrisk , Dave Watson , rostedt , Andy Lutomirski , Will Deacon , "Paul E. McKenney" , Chris Lameter , Andi Kleen , Josh Triplett , Paul Turner , Linux Kernel Mailing List , Catalin Marinas , Andrew Hunter , "H. Peter Anvin" , Mathieu Desnoyers List-Id: linux-api@vger.kernel.org On Monday 29 February 2016 11:32:21 Peter Zijlstra wrote: > On Sun, Feb 28, 2016 at 12:39:54AM +0000, Mathieu Desnoyers wrote: > > > /* This structure needs to be aligned cache line size. */ > > struct thread_local_abi { > > int32_t cpu_id; > > uint32_t rseq_seqnum; > > uint64_t rseq_post_commit_ip; > > /* Add new fields at the end. */ > > } __attribute__((packed)); > > I would really not use packed; that can lead to horrible layout. > > Suppose someone would add: > > uint32_t foo; > uint64_t bar; > > With packed, you get an unaligned uint64_t in there, which is horrible. > Without packed, you get a hole, which you can later fill. What's making things worse is that on some architectures, adding __packed will force access by bytes rather than just reading a 32-bit or 64-bit numbers directly, so it's slow and non-atomic. Arnd