From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755282AbcBBMNK (ORCPT ); Tue, 2 Feb 2016 07:13:10 -0500 Received: from mail-ob0-f175.google.com ([209.85.214.175]:36074 "EHLO mail-ob0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755080AbcBBMNI (ORCPT ); Tue, 2 Feb 2016 07:13:08 -0500 Date: Tue, 2 Feb 2016 20:12:30 +0800 From: Boqun Feng To: Will Deacon Cc: "Paul E. McKenney" , Peter Zijlstra , "Maciej W. Rozycki" , David Daney , =?iso-8859-1?Q?M=E5ns_Rullg=E5rd?= , Ralf Baechle , linux-kernel@vger.kernel.org, torvalds@linux-foundation.org Subject: Re: [RFC][PATCH] mips: Fix arch_spin_unlock() Message-ID: <20160202121230.GE1239@fixme-laptop.cn.ibm.com> References: <20160127152158.GJ2390@arm.com> <20160127233836.GQ4503@linux.vnet.ibm.com> <20160128095718.GC30928@arm.com> <20160128223131.GV4503@linux.vnet.ibm.com> <20160129095958.GA4541@arm.com> <20160129102253.GG4503@linux.vnet.ibm.com> <20160201135621.GD6828@arm.com> <20160202035458.GF6719@linux.vnet.ibm.com> <20160202051904.GC1239@fixme-laptop.cn.ibm.com> <20160202114559.GA10166@arm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="qftxBdZWiueWNAVY" Content-Disposition: inline In-Reply-To: <20160202114559.GA10166@arm.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --qftxBdZWiueWNAVY Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Feb 02, 2016 at 11:45:59AM +0000, Will Deacon wrote: > On Tue, Feb 02, 2016 at 01:19:04PM +0800, Boqun Feng wrote: > > On Mon, Feb 01, 2016 at 07:54:58PM -0800, Paul E. McKenney wrote: > > > On Mon, Feb 01, 2016 at 01:56:22PM +0000, Will Deacon wrote: > > > > On Fri, Jan 29, 2016 at 02:22:53AM -0800, Paul E. McKenney wrote: > > > > > On Fri, Jan 29, 2016 at 09:59:59AM +0000, Will Deacon wrote: > > > > Locally transitive chain termination: > > > >=20 > > > > (i.e. these can't be used to extend a chain) > > >=20 > > > Agreed. > > >=20 > > > > > o smp_store_release() -> lockless_dereference() (???) > > > > > o rcu_assign_pointer() -> rcu_dereference() > > > > > o smp_store_release() -> READ_ONCE(); if > >=20 > > Just want to make sure, this one is actually: > >=20 > > o smp_store_release() -> READ_ONCE(); if ; > >=20 > > right? Because control dependency only orders READ->WRITE. > >=20 > > If so, do we also need to take the following pairing into consideration? > >=20 > > o smp_store_release() -> READ_ONCE(); if ;smp_rmb(); > >=20 > > >=20 > > > I am OK with the first and last, but I believe that the middle one > > > has real use cases. So the rcu_assign_pointer() -> rcu_dereference() > > > case needs to be locally transitive. > > >=20 > >=20 > > Hmm... I don't think we should differ rcu_dereference() and > > lockless_dereference(). One reason: list_for_each_entry_rcu() are using > > lockless_dereference() right now, which means we used to think > > rcu_dereference() and lockless_dereference() are interchangeable, right? > >=20 > > Besides, Will, what's the reason of having a locally transitive chain > > termination? Because on some architectures RELEASE->DEPENDENCY pairs may > > not be locally transitive? >=20 > Well, the following ISA2 test is permitted on ARM: >=20 >=20 > P0: > Wx=3D1 > WyRel=3D1 // rcu_assign_pointer >=20 > P1: > Ry=3D1 // rcu_dereference What if a dependency is added here? Same result? > WzRel=3D1 // rcu_assign_pointer >=20 > P2: > Rz=3D1 // rcu_dereference > > Rx=3D0 >=20 >=20 > Make one of the rcu_dereferences an ACQUIRE and the behaviour is > forbidden. >=20 > Paul: what use-cases did you have in mind? >=20 > Will --qftxBdZWiueWNAVY Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABCAAGBQJWsJ0nAAoJEEl56MO1B/q4k8QIAKRRPBZPV/BQohXh2ibGPpev xDjgWB1SsO64njkHOh7elszAJuX3Yo+ynX4phBR6NvQgcjSAcdsxLxNRJTvHcmXb Jls4WB5VxNpzK33wGVRqforWZIFnkQLTksLw8w0QxAZ/8t/faFNbMGvZBGyTwXaO Ttw1EcmmMjIgxev/TQY8Jf/OBmr7f6VGcnzo4A3j+zWV8sF9JzS4RTmwaK7sctcQ osSYkM92c45nApegUwCBRxomlhVYJ0vFqINCYSMA/9AijL5kYykS97F70L/fZOUK fdWk5zGp+vbjXWYdZJgFv0qb6CET1P0zhcQK73N1Bp/PuqFTER8B1UFtTGzOYGk= =HXgk -----END PGP SIGNATURE----- --qftxBdZWiueWNAVY--