Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp929314pxj; Fri, 11 Jun 2021 15:47:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMBVVL3G2fui6yPokNAulmIC7+YEkiCdulK0w3aRVITsZi6cW57BSL6n0bqTkGdc1D8Go0 X-Received: by 2002:a17:906:998c:: with SMTP id af12mr5646636ejc.510.1623451635183; Fri, 11 Jun 2021 15:47:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623451635; cv=none; d=google.com; s=arc-20160816; b=nfv7CCiiH7qd7elUWJZbA0GFrORoUc3r82sArTcd7wyszyq2o0Dvix6gwk8mJkieRR Y4QIa3FJhGs7RCV2Y4uUkWl/TcRiDsQK4X4YUnAtUhU8YKux9kWaqp6mhz+MC7lFIDlK 0ObnMrxMmpCIVyLvrpYIA+vx7gJADuERoL+3tNNqIfsfLTh7jJVZElGJ5O23T7qH0e7P f59gqhLAKy4QENKbtp20X+RUXVvDyfkD6ee02H9+z4ORZPTKajssTHQvNMkEvcOLE/QS +LaU9hI4w42jhTgdN1Y9yfbgyM9AhUcWU7A5XZFEeBkDD/ybeoVvwxh22o5KniS5iAaq luVw== 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:message-id:subject:cc:to:from:date:dkim-signature; bh=PSvfJoMbbIErM/gAJvFbCq+R9eTEkPYUhXD0XwatGJQ=; b=syq9dHXVIr5e/NnkqucHMFqTrSWIYYi8GbA46Fv+iWgrg/GkaHYKW58ZL4W33XGEH/ e5LCmgu+15NJft5WGCI8ky79VOJBuNEIN6X2fyFUXMjYgGq7w81DE4T5npVfSwBiss37 T3Bie0Zk4GGW8iD6CDGkHZlVdkvPLLobNra7TRvU4rfyqDu2psBmQ/twmF7UVaNivHys RY/+M4A0evMphFD+p/dJ1roWg6BQL73dcX6VFwZS0/ugKeUq4qUzQ2Jfyk3NcPC2txwa gB7mVBcx6S3qELYpDSvkzG8fiSx7lLAhTTqq7ft7m5YbBVeeqNNdR0xaLFQOYA83HSKt yPHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=paViCY1h; 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 q20si6639649ejb.185.2021.06.11.15.46.51; Fri, 11 Jun 2021 15:47:15 -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=paViCY1h; 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 S230265AbhFKWrY (ORCPT + 99 others); Fri, 11 Jun 2021 18:47:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:52460 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229572AbhFKWrS (ORCPT ); Fri, 11 Jun 2021 18:47:18 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D0320613EA; Fri, 11 Jun 2021 22:45:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1623451520; bh=2K9nrc6/h8SZXxfW0xUQmBfYCLsB3Ze2QObsjGHOoJ8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=paViCY1hdXy88QZBVkqfHE4gPzF64nFt8/jBqTNllLxKy9h4R2rultKlhaom4xIWC CgPdLhQwGiTZoLbYY3mCCf1EZ5Yz4hUGHLlCK9UFFsujYMSWrydh506gZou5Qp6d3K 7EexHVXCAFWIU2TdPHp7qtMKQOWJ8lyRCNO7MQGR7lVF1qKRdFEg8o1irlFOX2O/kS SJRqXG5dXLoX2xiIMovIEaE8v3SQRR/Kn9Cf8ZP8+Da0OEPogiV+aFDzL9HpaBEdSQ aW2WvqLFCsCQ2u2mmpkdEKUuJ4WPxJHsY+SGzK74RVCcrBIu61DuF1tabOpyL+eOC5 XSTsypPwyM2wQ== Date: Sat, 12 Jun 2021 00:45:17 +0200 From: Frederic Weisbecker To: "Paul E. McKenney" Cc: LKML , Neeraj Upadhyay , Boqun Feng , Uladzislau Rezki , Joel Fernandes Subject: Re: [PATCH] rcu/doc: Add a quick quiz to explain further why we need smp_mb__after_unlock_lock() Message-ID: <20210611224517.GA150081@lothringen> References: <20210610155029.130812-1-frederic@kernel.org> <20210610165710.GT4397@paulmck-ThinkPad-P17-Gen-1> <20210611103432.GA143096@lothringen> <20210611172514.GG4397@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210611172514.GG4397@paulmck-ThinkPad-P17-Gen-1> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 11, 2021 at 10:25:14AM -0700, Paul E. McKenney wrote: > On Fri, Jun 11, 2021 at 12:34:32PM +0200, Frederic Weisbecker wrote: > Glad to help, and I will reach out to you should someone make the mistake > of insisting that I write something in French. ;-) If that can help, we still have frenglish for neutral territories such as airports. Not easy to master though... > > > > ++-----------------------------------------------------------------------+ > > > + > > > This approach must be extended to include idle CPUs, which need > > > RCU's grace-period memory ordering guarantee to extend to any > > > RCU read-side critical sections preceding and following the current > > How about like this? > > +-----------------------------------------------------------------------+ > | **Quick Quiz**: | > +-----------------------------------------------------------------------+ > | But the chain of rcu_node-structure lock acquisitions guarantees | > | that new readers will see all of the updater's pre-grace-period | > | accesses and also guarantees that the updater's post-grace-period | > | accesses will see all of the old reader's accesses. So why do we | > | need all of those calls to smp_mb__after_unlock_lock()? | > +-----------------------------------------------------------------------+ > | **Answer**: | > +-----------------------------------------------------------------------+ > | Because we must provide ordering for RCU's polling grace-period | > | primitives, for example, get_state_synchronize_rcu() and | > | poll_state_synchronize_rcu(). Consider this code:: | > | | > | CPU 0 CPU 1 | > | ---- ---- | > | WRITE_ONCE(X, 1) WRITE_ONCE(Y, 1) | > | g = get_state_synchronize_rcu() smp_mb() | > | while (!poll_state_synchronize_rcu(g)) r1 = READ_ONCE(X) | > | continue; | > | r0 = READ_ONCE(Y) | > | | > | RCU guarantees that the outcome r0 == 0 && r1 == 0 will not | > | happen, even if CPU 1 is in an RCU extended quiescent state | > | (idle or offline) and thus won't interact directly with the RCU | > | core processing at all. | > +-----------------------------------------------------------------------+ Very good, thanks a lot :o)