Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1136602imd; Thu, 1 Nov 2018 10:45:10 -0700 (PDT) X-Google-Smtp-Source: AJdET5d2dlJcR7n1SssxU4cbXtO7J9hrEDYFt/Fn+F5wE5Bnel122yp/X8Fk7bdohMjJW3M1G5rX X-Received: by 2002:a17:902:7d8f:: with SMTP id a15-v6mr1270390plm.111.1541094310429; Thu, 01 Nov 2018 10:45:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541094310; cv=none; d=google.com; s=arc-20160816; b=o7FvuP6yRtpxhr0QLPU0FHm7Ac9RMabWUVAQS6eNQxarIpto5xT5ZzAOLOX6+k0KYA ZYSJFy4DG4dMDhXJRH2QwZuUOt36xDPgDFLjoCrmBgeAaTLb7WLMMKfZ/LgzRDyGXZ0U /h882rQuv404/eSEodpznnGLQllTYnbd7GPKK8T9l1+llzyyu3cjOftqjj+wpaUSGUYv ko07Rf767wqFO7+Js/YOJvXIMJzgxWdFN3D9PAe313aD+gmcLOKdO6ndbZQ7iiwvjDvU PzlxrH31D+DVG2FzvICjnyqxVhVxGCBDadqkJaitTbFIfABGNtcZZ/Sw/xLsQ4zSZ24p tmOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:user-agent:in-reply-to :content-disposition:mime-version:references:reply-to:subject:cc:to :from:date; bh=IPmXP8hsYqteb8oiNtzInckuzc8H7sxkJzts9+sjR0s=; b=zPL8wa9BGn2Zw3L0OG573obSwl9n9elgmtJjCz29qfg/CCvk87ZPIzK/b08awZcdw0 /6vmNEpau1dzHr/SazmcAskrLC2g+oZQ7MpXKNisF1lZmL3D20+Jtld7KFVxCOWwajVp wlfsohPSHk/I3dw5Na0i+axr77uvXH4EGi/ewpmpwrcb1C2GBQK3OxOSlQFuZAzU6m9T +ck1gDEojFrlyQYgO+6tgohjFLaLthmuHBMiz45U55UY61GB0aRwXjpD2Uw+R/gUT5Ot e2zO5KKfC0ul9yR6CyEgqY3M9CSNDlgqrGjMxrlWb/Lk0N+0X0m0cvDX1eM6bbxtydJO T/Ww== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m72-v6si4800039pga.114.2018.11.01.10.44.55; Thu, 01 Nov 2018 10:45:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728030AbeKBCrl (ORCPT + 99 others); Thu, 1 Nov 2018 22:47:41 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:58500 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728014AbeKBCrl (ORCPT ); Thu, 1 Nov 2018 22:47:41 -0400 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA1HXwcg136111 for ; Thu, 1 Nov 2018 13:43:44 -0400 Received: from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ng49y50nx-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 01 Nov 2018 13:43:43 -0400 Received: from localhost by e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 1 Nov 2018 17:43:42 -0000 Received: from b01cxnp22034.gho.pok.ibm.com (9.57.198.24) by e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 1 Nov 2018 17:43:34 -0000 Received: from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp22034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id wA1HhX6E3932446 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 1 Nov 2018 17:43:33 GMT Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1C43DB205F; Thu, 1 Nov 2018 17:43:33 +0000 (GMT) Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D19B7B2064; Thu, 1 Nov 2018 17:43:32 +0000 (GMT) Received: from paulmck-ThinkPad-W541 (unknown [9.70.82.141]) by b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 1 Nov 2018 17:43:32 +0000 (GMT) Received: by paulmck-ThinkPad-W541 (Postfix, from userid 1000) id 2DF8416C0598; Thu, 1 Nov 2018 10:43:33 -0700 (PDT) Date: Thu, 1 Nov 2018 10:43:33 -0700 From: "Paul E. McKenney" To: Peter Zijlstra Cc: Eric Dumazet , Trond Myklebust , "mark.rutland@arm.com" , "linux-kernel@vger.kernel.org" , "ralf@linux-mips.org" , "jlayton@kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "bfields@fieldses.org" , "linux-mips@linux-mips.org" , "linux@roeck-us.net" , "linux-nfs@vger.kernel.org" , "akpm@linux-foundation.org" , "will.deacon@arm.com" , "boqun.feng@gmail.com" , "paul.burton@mips.com" , "anna.schumaker@netapp.com" , "jhogan@kernel.org" , "netdev@vger.kernel.org" , "davem@davemloft.net" , "arnd@arndb.de" , "paulus@samba.org" , "mpe@ellerman.id.au" , "benh@kernel.crashing.org" , aryabinin@virtuozzo.com, dvyukov@google.com Subject: Re: [RFC PATCH] lib: Introduce generic __cmpxchg_u64() and use it where needed Reply-To: paulmck@linux.ibm.com References: <20181031213240.zhh7dfcm47ucuyfl@pburton-laptop> <20181031220253.GA15505@roeck-us.net> <20181031233235.qbedw3pinxcuk7me@pburton-laptop> <4e2438a23d2edf03368950a72ec058d1d299c32e.camel@hammerspace.com> <20181101131846.biyilr2msonljmij@lakrids.cambridge.arm.com> <20181101145926.GE3178@hirez.programming.kicks-ass.net> <20181101163212.GF3159@hirez.programming.kicks-ass.net> <20181101171432.GH3178@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181101171432.GH3178@hirez.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 x-cbid: 18110117-0072-0000-0000-000003C0DA37 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009966; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000268; SDB=6.01111192; UDB=6.00575832; IPR=6.00891283; MB=3.00023993; MTD=3.00000008; XFM=3.00000015; UTC=2018-11-01 17:43:40 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18110117-0073-0000-0000-000049F69FF0 Message-Id: <20181101174333.GV4170@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-11-01_12:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=839 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1811010149 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Nov 01, 2018 at 06:14:32PM +0100, Peter Zijlstra wrote: > On Thu, Nov 01, 2018 at 09:59:38AM -0700, Eric Dumazet wrote: > > On 11/01/2018 09:32 AM, Peter Zijlstra wrote: > > > > >> Anyhow, if the atomic maintainers are willing to stand up and state for > > >> the record that the atomic counters are guaranteed to wrap modulo 2^n > > >> just like unsigned integers, then I'm happy to take Paul's patch. > > > > > > I myself am certainly relying on it. > > > > Could we get uatomic_t support maybe ? > > Whatever for; it'd be the exact identical same functions as for > atomic_t, except for a giant amount of code duplication to deal with the > new type. > > That is; today we merged a bunch of scripts that generates most of > atomic*_t, so we could probably script uatomic*_t wrappers with minimal > effort, but it would add several thousand lines of code to each compile > for absolutely no reason what so ever. > > > This reminds me of this sooooo silly patch :/ > > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=adb03115f4590baa280ddc440a8eff08a6be0cb7 > > Yes, that's stupid. UBSAN is just wrong there. It would be good for UBSAN to treat atomic operations as guaranteed 2s complement with no UB for signed integer overflow. After all, if even the C standard is willing to do this... Ah, but don't we disable interrupts and fall back to normal arithmetic for UP systems? Hmmm... We do so for atomic_add_return() even on x86, it turns out: static __always_inline int arch_atomic_add_return(int i, atomic_t *v) { return i + xadd(&v->counter, i); } So UBSAN actually did have a point. :-( Thanx, Paul