From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932106AbdC1J1v (ORCPT ); Tue, 28 Mar 2017 05:27:51 -0400 Received: from merlin.infradead.org ([205.233.59.134]:40466 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932065AbdC1J1t (ORCPT ); Tue, 28 Mar 2017 05:27:49 -0400 Date: Tue, 28 Mar 2017 11:27:12 +0200 From: Peter Zijlstra To: Ingo Molnar Cc: Dmitry Vyukov , Mark Rutland , Andrey Ryabinin , Ingo Molnar , Will Deacon , Andrew Morton , kasan-dev , "linux-mm@kvack.org" , "x86@kernel.org" , LKML , Linus Torvalds , Thomas Gleixner , "H. Peter Anvin" Subject: Re: [PATCH 2/3] asm-generic, x86: wrap atomic operations Message-ID: <20170328092712.bk32k5iteqqm6pgh@hirez.programming.kicks-ass.net> References: <6bb1c71b87b300d04977c34f0cd8586363bc6170.1489519233.git.dvyukov@google.com> <20170324065203.GA5229@gmail.com> <20170324105700.GB20282@gmail.com> <20170328075232.GA19590@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170328075232.GA19590@gmail.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 28, 2017 at 09:52:32AM +0200, Ingo Molnar wrote: > No, regular C code. > > I don't see the point of generating all this code via CPP - it's certainly not > making it more readable to me. I.e. this patch I commented on is a step backwards > for readability. Note that much of the atomic stuff we have today is all CPP already. x86 is the exception because its 'weird', but most other archs are almost pure CPP -- check Alpha for example, or asm-generic/atomic.h. Also, look at linux/atomic.h, its a giant maze of CPP. The CPP help us generate functions, reduces endless copy/paste (which induces random differences -- read bugs) and construct variants depending on the architecture input. Yes, the CPP is a pain, but writing all that out explicitly is more of a pain. I've not yet looked too hard at these patches under consideration; and I really wish we could get the compiler to do the right thing here, but reducing the endless copy/paste that's otherwise the result of this, is something I've found to be very valuable. Not to mention that adding additional atomic ops got trivial (the set is now near complete, so that's not much of an argument anymore -- but it was, its what kept me sane sanitizing the atomic ops across all our 25+ architectures).