Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp3737667rwb; Mon, 16 Jan 2023 12:11:53 -0800 (PST) X-Google-Smtp-Source: AMrXdXtaDCwxuyxAljK9MIEabIc/PflmtcZIkO+RLWn46JyKzOzXdwD290zAet/L+HvVI7abMM2M X-Received: by 2002:a05:6402:5110:b0:499:8849:5fb3 with SMTP id m16-20020a056402511000b0049988495fb3mr668818edd.31.1673899913781; Mon, 16 Jan 2023 12:11:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673899913; cv=none; d=google.com; s=arc-20160816; b=tMLsv2powXLjoix1jF+YQEDUSqUHYnXmwl8/61vtUydKCubGg4K+c5I6nzSso3xOas /IXcYgMUF/U4P/N9dc5NCqO9QOXXKw4asOiKq00HlzEZFNXtVrEKIqXOv9lDR9bd7l4K qTCiM9YgpzecR2caMPHEes9iwDzVkFkXmU6NoL2j44lW2cNKaAJnC16crf6O7LYaae+P Ey9kvzF4X1hE9LVnCi3LatT1IMBnK5LOId7yB+xNfw1yaxYVz9lo4JdUOYCacKBj6Hsw KQC5nI0bmO+HrM5Fb99eJXqJ/mbScoDYykQdpWpfthSFic91lqcEtILt0TmraEKFUR33 S6rg== 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; bh=72kZkE0qI2l1AM9pzwgdt6+EhyVZNuTzCyspvG6H1I0=; b=jFBYK/PZnR9OrjexhKcNDWaOgxFdvuRIRsnYhCC/ebtd2rK0dBbD4KcpmVB1R4f96p H0nXRAlRJ3FXUxc+b1PkgO1ES35Bw49gcE3J7rkfb1X3tNgmycCz1zZ1jSSF7LXX1bzF ij2mOCtkFhRB39+EAF4gvpdMLD1XW9GzEouoQyUau55F4gXLL9d3RCDgXyBRAYrvC6CA dQDXIjMXOdPAhJgfGKXiscItNWmMZQP4fifgYZFvSouUaNY6KumOczgAmXxDoDP/SBBO pwDYm7nPGLuXKtSlV/MP4VB3bo4vEgyryaWKemB7CS8boklKgo359qouIay0/J4bbX+7 xhBw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f7-20020a056402354700b00469b79303b6si6217148edd.195.2023.01.16.12.11.41; Mon, 16 Jan 2023 12:11:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232024AbjAPTVC (ORCPT + 50 others); Mon, 16 Jan 2023 14:21:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232415AbjAPTU7 (ORCPT ); Mon, 16 Jan 2023 14:20:59 -0500 Received: from netrider.rowland.org (netrider.rowland.org [192.131.102.5]) by lindbergh.monkeyblade.net (Postfix) with SMTP id 27751524F for ; Mon, 16 Jan 2023 11:20:57 -0800 (PST) Received: (qmail 137219 invoked by uid 1000); 16 Jan 2023 14:20:57 -0500 Date: Mon, 16 Jan 2023 14:20:57 -0500 From: Alan Stern To: "Paul E. McKenney" Cc: Jonas Oberhauser , Peter Zijlstra , "parri.andrea" , will , "boqun.feng" , npiggin , dhowells , "j.alglave" , "luc.maranget" , akiyks , dlustig , joel , urezki , quic_neeraju , frederic , Kernel development list Subject: Re: Internal vs. external barriers (was: Re: Interesting LKMM litmus test) Message-ID: References: <20230114175343.GF2948950@paulmck-ThinkPad-P17-Gen-1> <20230114181537.GA493203@paulmck-ThinkPad-P17-Gen-1> <20230115051510.GG2948950@paulmck-ThinkPad-P17-Gen-1> <20230115181052.GJ2948950@paulmck-ThinkPad-P17-Gen-1> <20230116042329.GN2948950@paulmck-ThinkPad-P17-Gen-1> <20230116190652.GZ2948950@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230116190652.GZ2948950@paulmck-ThinkPad-P17-Gen-1> X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 16, 2023 at 11:06:52AM -0800, Paul E. McKenney wrote: > On Mon, Jan 16, 2023 at 01:11:41PM -0500, Alan Stern wrote: > > Why do you want to prohibit nesting? Why would that be a better > > approximation? > > Because the current LKMM gives wrong answers for nested critical > sections. I don't agree. Or at least, it depends on whose definition of "nested critical sections" you adopt. > For example, for the litmus test shown below, mainline > LKMM will incorrectly report "Never". The two SRCU read-side critical > sections are independent, so the fact that P1()'s synchronize_srcu() is > guaranteed to wait for the first on to complete says nothing about the > second having completed. Therefore, in Linux-kernel SRCU, the "exists" > clause could be satisfied. > > In contrast, the proposed change flags this as having nesting. In fact, this litmus test has overlapping critical sections, not nested ones. But the current LKML incorrectly _thinks_ they are nested, because it matches each lock with the first unmatched unlock. If you write a litmus test that has properly nested (not overlapping!) read-side critical sections, the current LKMM will match the locks and unlocks correctly and will give the right answer. So what you really want to do is rule out overlapping, not nesting. But I guess there's no way to do one without the other. Alan > Thaxn, Paul > > ------------------------------------------------------------------------ > > C C-srcu-nest-5 > > (* > * Result: Sometimes > * > * This demonstrates non-nesting of SRCU read-side critical sections. > * Unlike RCU, SRCU critical sections do not nest. > *) > > {} > > P0(int *x, int *y, struct srcu_struct *s1) > { > int r1; > int r2; > int r3; > int r4; > > r3 = srcu_read_lock(s1); > r2 = READ_ONCE(*y); > r4 = srcu_read_lock(s1); > srcu_read_unlock(s1, r3); > r1 = READ_ONCE(*x); > srcu_read_unlock(s1, r4); > } > > P1(int *x, int *y, struct srcu_struct *s1) > { > WRITE_ONCE(*y, 1); > synchronize_srcu(s1); > WRITE_ONCE(*x, 1); > } > > locations [0:r1] > exists (0:r1=1 /\ 0:r2=0)