Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp737406pxb; Thu, 9 Sep 2021 10:47:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxe/HOJLmFnXPdrlijb+VF1VTTNt/MCBPN2EcR0NTaspAB0coHt1VrbSadn+9UW3Svl0oUl X-Received: by 2002:a92:d752:: with SMTP id e18mr3356566ilq.254.1631209657539; Thu, 09 Sep 2021 10:47:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631209657; cv=none; d=google.com; s=arc-20160816; b=Ary0GmDdEIDimbkhQqGmSUiRAaT7nPGXple6/X4rZ3LmMHWhn//ZDf9u8IpCB3YbuU zcqBmAkecUSpSLm/sJVvVFVHCuWomml8HYRlG6ptVsi1+WvHNXDGsUsbyqFYnH2poXv2 k/R5LwpycViYhEeaeDaNYThxpmxMkHdNjfnfu16ZGh6B+TNS8Z9QcymnrI6F0JOwHXY2 OjgSTJLH2W4rtMcYGWXJDYcCte2vhRyLVAd0r8Lz0uOSK3ojnFJhfg4YF6KEKUIRNE8Y lI5y6wUqtw5fkky80LaZjKeDEhBWGq9xZv63iTnb1c1BQm7CvF6MEZTpp217OIhCDOqm HrYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=ViNPrziTiaLIDRr2F31UgW/8zBbU0kg9m376kTP1OXA=; b=ionIZTEMfOFfyku5NKQD9VWUkh4Rm+SMJHFT8L1jTy2I5u7DBQTR60vyyrEu+grvK7 u7Zn65oOiuoEsEdRpREu9nx4LuAWsh3m/pI0FoAA+qjPSjj48IGmi9NvWETKTssTWsj0 U7YxvU6H1vip/hoXfRDUmINiRQnf3NnCUKVZc4PlzhNLtrbO5+F2YO0QuGNJUz75R17p /cCk2yIw9LSf9KRT9jaApPH5m/NdVKx49lOYDgBOqFIHSH5VlKn21OzdLvHYJIkLtDSS 7ZtOw6+DzXEeUJZYhFUIf+Mwa0901PITnpb8AGzbrHzss/E/DB9ughZMjHdbmBhJ3VUQ lX5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ldEcV60i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 11si2576254ilq.55.2021.09.09.10.47.24; Thu, 09 Sep 2021 10:47:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ldEcV60i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241252AbhIIRrq (ORCPT + 99 others); Thu, 9 Sep 2021 13:47:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:51260 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237196AbhIIRrp (ORCPT ); Thu, 9 Sep 2021 13:47:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4A5F26054F; Thu, 9 Sep 2021 17:46:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1631209595; bh=js15J023TyH829AxpxuuUA93HVF3TVCxlO1BDa2L04g=; h=Date:From:To:Cc:Subject:Reply-To:References:In-Reply-To:From; b=ldEcV60i+JRT+51KV96F0x1jO4Oi1vaccwjlAEwe/u695CN1eNQ9dyWfrePp4jr3Y tNAdM/4+yj4P8l/kXFfuuduEYo2t4cCytqK9BAdQHnO0lTfT3hY13brLfo7vVxLuU6 AG1OKi9VeFefrMQ8sgVLPML47tTy0+YT3LsV7X+wWDFfpJzcskplAyYSxfD/Q/41iD NQO8jSfOxBdNfeWEj0+saI0W7X1SOI34W9eGHw988SkuTmTzint1MmiMR0MRW7m3X5 bBm9rd7494gG/OuTXVIR3cKHr6Zv6nMCMH4V0f2lB11Xky+g1GWcqhUdsrHPfDJZtB 8TWCnCUwTCqOQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 0A88B5C0DC8; Thu, 9 Sep 2021 10:46:35 -0700 (PDT) Date: Thu, 9 Sep 2021 10:46:35 -0700 From: "Paul E. McKenney" To: Will Deacon Cc: Peter Zijlstra , Linus Torvalds , Alan Stern , Alexander Shishkin , Peter Anvin , Andrea Parri , Ingo Molnar , Vince Weaver , Thomas Gleixner , Jiri Olsa , Arnaldo Carvalho de Melo , Linux Kernel Mailing List , Stephane Eranian , linux-tip-commits@vger.kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, dlustig@nvidia.com, mpe@ellerman.id.au, npiggin@gmail.com Subject: Re: [tip:locking/core] tools/memory-model: Add extra ordering for locks and remove it for ordinary release/acquire Message-ID: <20210909174635.GA2229215@paulmck-ThinkPad-P17-Gen-1> Reply-To: paulmck@kernel.org References: <20180926182920.27644-2-paulmck@linux.ibm.com> <20210908144217.GA603644@rowland.harvard.edu> <20210909133535.GA9722@willie-the-truck> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210909133535.GA9722@willie-the-truck> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [+ Nick Piggin] On Thu, Sep 09, 2021 at 02:35:36PM +0100, Will Deacon wrote: > [+Palmer, PaulW, Daniel and Michael] > > On Thu, Sep 09, 2021 at 09:25:30AM +0200, Peter Zijlstra wrote: > > On Wed, Sep 08, 2021 at 09:08:33AM -0700, Linus Torvalds wrote: > > > > > So if this is purely a RISC-V thing, > > > > Just to clarify, I think the current RISC-V thing is stonger than > > PowerPC, but maybe not as strong as say ARM64, but RISC-V memory > > ordering is still somewhat hazy to me. > > > > Specifically, the sequence: > > > > /* critical section s */ > > WRITE_ONCE(x, 1); > > FENCE RW, W > > WRITE_ONCE(s.lock, 0); /* store S */ > > AMOSWAP %0, 1, r.lock /* store R */ > > FENCE R, RW > > WRITE_ONCE(y, 1); > > /* critical section r */ > > > > fully separates section s from section r, as in RW->RW ordering > > (possibly not as strong as smp_mb() though), while on PowerPC it would > > only impose TSO ordering between sections. > > > > The AMOSWAP is a RmW and as such matches the W from the RW->W fence, > > similarly it marches the R from the R->RW fence, yielding an: > > > > RW-> W > > RmW > > R ->RW > > > > ordering. It's the stores S and R that can be re-ordered, but not the > > sections themselves (same on PowerPC and many others). > > > > Clarification from a RISC-V enabled person would be appreciated. > > > > > then I think it's entirely reasonable to > > > > > > spin_unlock(&r); > > > spin_lock(&s); > > > > > > cannot be reordered. > > > > I'm obviously completely in favour of that :-) > > I don't think we should require the accesses to the actual lockwords to > be ordered here, as it becomes pretty onerous for relaxed LL/SC > architectures where you'd end up with an extra barrier either after the > unlock() or before the lock() operation. However, I remain absolutely in > favour of strengthening the ordering of the _critical sections_ guarded by > the locks to be RCsc. If by this you mean the critical sections when observed only by other critical sections for a given lock, then everyone is already there. However... > Last time this came up, I think the RISC-V folks were generally happy to > implement whatever was necessary for Linux [1]. The thing that was stopping > us was Power (see CONFIG_ARCH_WEAK_RELEASE_ACQUIRE), wasn't it? I think > Michael saw quite a bit of variety in the impact on benchmarks [2] across > different machines. So the question is whether newer Power machines are less > affected to the degree that we could consider making this change again. Last I knew, on Power a pair of critical sections for a given lock could be observed out of order (writes from the earlier critical section vs. reads from the later critical section), but only by CPUs not holding that lock. Also last I knew, tightening this would require upgrading some of the locking primitives' lwsync instructions to sync instructions. But I know very little about Power 10. Adding Nick on CC for his thoughts. Thanx, Paul > Will > > [1] https://lore.kernel.org/lkml/11b27d32-4a8a-3f84-0f25-723095ef1076@nvidia.com/ > [2] https://lore.kernel.org/lkml/87tvp3xonl.fsf@concordia.ellerman.id.au/