Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp978711pxb; Wed, 3 Mar 2021 23:17:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJyAaJMV3JUGWBQCiftCHnzSDmASi0U+MglA4gMO29ipO6hH4PCIsd0qlA+VpMONmtp1aTGl X-Received: by 2002:a17:907:d0b:: with SMTP id gn11mr2742323ejc.463.1614842247227; Wed, 03 Mar 2021 23:17:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614842247; cv=none; d=google.com; s=arc-20160816; b=ovYBD8mw8EtjMzrcuhA617+vN68D2LoVAiHxrsOIygvc8iax9FNSgCDmT+21n4EV6M vZemyEhQTvugiQBjFyo/g7VSokcqDN/hupFVuDAWCmcn3Ydk46ARgVQThD76QhGhwOBy ZkR4sPVZbuggN9qwIIRpDdht8pibt7Ma//5uLQ6+nXWOGaCvQRN/9i51fF5x/PkViwmD q8U1sY5Tum2MkU50AaAKUpDA2cnYHlNdt5IUhuUQ9/xT9vwwo0YvhizESeaeStCZKlby c+HcHeOtNtUTREg7jbB07Q9Yt8dFFg1vd2PFNJa1TzjDZxG2nPfKqcwg4D+lWDaaldIq mMSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=kIc2w7mujz9voVpN9IahMRlS32F3lOVKY+UoybD2UvI=; b=OCIuSgLvssbhpNBlzGxBFyhDQuw7DU4U3gCrrojAZqNU4HnZB46U/N1wAwNT6bco1A cW0aRIQN1PQKiGskpEwCAbtFPVUKrl9H0+lXyIod1WyMqFhMDHauX0Mpp1cHbFEY9L4F NhUcTiLsgea/7KglPPkVHLmuqS3iyycUgx0qobjNO6/5SOk5vAzvbQ7QkIoZaKZYnknF lU/KEie795sBm76PamQ9j4BPS7s7LIBhMgaWWBHJZdDBhQUzu+B/+Y39e8u/tl+BGfi5 /f3fJUFDTqcihU307FAq6jPUQuyktaCFNaTTskFYKC7p7qjdhBeKfN2KkYxJOyeS9giE dBkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eIAjkt4j; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t15si7224352ejb.427.2021.03.03.23.17.04; Wed, 03 Mar 2021 23:17:27 -0800 (PST) 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=@gmail.com header.s=20161025 header.b=eIAjkt4j; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2360247AbhCBWS2 (ORCPT + 99 others); Tue, 2 Mar 2021 17:18:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1381284AbhCBUwc (ORCPT ); Tue, 2 Mar 2021 15:52:32 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B170C061788; Tue, 2 Mar 2021 12:51:42 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id l22so3364324wme.1; Tue, 02 Mar 2021 12:51:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=kIc2w7mujz9voVpN9IahMRlS32F3lOVKY+UoybD2UvI=; b=eIAjkt4jHEWC8FH4kXMbpC7gl9BJawjb04aSeyj4ImQ8n3/6Os4Bri9R7+JG0t6uIr q+zlATJwN9dbY1Wg5R3o8llP8cfaTu2Y89wOG028zy6jug9p+Z4KAezDAjfjRl0EnvBk oIqp/4gTVQ7oiDLs/szViB6FAf5hWaxY2FeAptgjNoVoFoYbMEvX17T41d3ut2/qh8g8 RskyQtSculplpZOc1ytNHrxG44WF4FZDjBKrHiv26ZQ//TaLUOXM86QALcugbZzocTdV 9kC8C5msx0Rz/m2tzvFEEsvxiVMliGfwUzPh33LVVO3W/NIWQeAWDdB00NiBCVFizEtZ BgKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=kIc2w7mujz9voVpN9IahMRlS32F3lOVKY+UoybD2UvI=; b=Pez7EN0h02sChFXRCt9AK57niuUWoTzEXGgvx9j0+u4hcru78UD5XDS5zvo4qdUH+f dBg3InLam9ohcW9GAOkacapCQyBxqn+bx+TVtSSdB35TL1doFDIuN6wFRHND3plz48/J ZxrslF7wNwx3XDRy8sGimYcdC9yKXRm72bPj4jia+8ZKUMs1ev9EVg2oOPx570VGO4J2 4rBpeu136liPq/Gx3MKzGnZ7EK0FSxsDrTkcb2X2qy9kwbh78eeNo/7Peb3nkQh7UR5P GqsJIcaE/1d21fVhscXFBLA2/kDqp5405iaMNYbboZ6P6M/aCwwyiS+Ueieq9wefmsCD pBjw== X-Gm-Message-State: AOAM533BNkeu6hNO6wnFuLqAqt5f4zgmorKihDbI8WO6Tc2+sSLgpDMD nMnZkVOwNnPick3NBAFHyPKlPZlC3eytJn+t+mc= X-Received: by 2002:a1c:7714:: with SMTP id t20mr2751077wmi.107.1614718301146; Tue, 02 Mar 2021 12:51:41 -0800 (PST) MIME-Version: 1.0 References: <20210302195758.GQ2696@paulmck-ThinkPad-P72> <20210302204157.GR2696@paulmck-ThinkPad-P72> In-Reply-To: <20210302204157.GR2696@paulmck-ThinkPad-P72> From: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= Date: Tue, 2 Mar 2021 21:51:29 +0100 Message-ID: Subject: Re: XDP socket rings, and LKMM litmus tests To: paulmck@kernel.org Cc: bpf , LKML , stern@rowland.harvard.edu, parri.andrea@gmail.com, Will Deacon , Peter Zijlstra , boqun.feng@gmail.com, npiggin@gmail.com, dhowells@redhat.com, j.alglave@ucl.ac.uk, luc.maranget@inria.fr, akiyks@gmail.com, dlustig@nvidia.com, joel@joelfernandes.org, =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , "Karlsson, Magnus" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2 Mar 2021 at 21:41, Paul E. McKenney wrote: > > On Tue, Mar 02, 2021 at 09:24:04PM +0100, Bj=C3=B6rn T=C3=B6pel wrote: > > On Tue, 2 Mar 2021 at 20:57, Paul E. McKenney wrot= e: > > > > > > On Tue, Mar 02, 2021 at 07:46:27PM +0100, Bj=C3=B6rn T=C3=B6pel wrote= : > > > > [...] > > > > > > > > Before digging in too deeply, does the following simplification > > > still capture your intent? > > > > > > > Thanks for having a look, Paul! > > > > > P0(int *prod, int *cons, int *data) > > > { > > > int p; > > > int cond =3D 0; > > > > > > p =3D READ_ONCE(*prod); > > > if (p =3D=3D READ_ONCE(*cons)) > > > cond =3D 1; > > > > With this, yes! > > > > > if (cond) { > > > smp_mb(); > > > WRITE_ONCE(*data, 1); > > > smp_wmb(); > > > WRITE_ONCE(*prod, p ^ 1); > > > } > > > } > > > > > > P1(int *prod, int *cons, int *data) > > > { > > > int c; > > > int d =3D -1; > > > int cond =3D 0; > > > > > > c =3D READ_ONCE(*cons); > > > if (READ_ONCE(*prod) =3D=3D c) > > > cond =3D 1; > > > > Hmm, this would not be the correct state transition. > > > > c=3D=3D1 && p=3D=3D1 would set cond to 1, right? > > > > I would agree with: > > c =3D READ_ONCE(*cons); > > if (READ_ONCE(*prod) !=3D c) > > Right you are! > > With that, it looks to me like LKMM is OK with removing the smp_mb(). > My guess is that the issue is that LKMM confines the effect of control > dependencies to a single "if" statement, hence my reworking of your > original. > Interesting! I tried the acquire/release version: P0(int *prod, int *cons, int *data) { int p; int cond =3D 0; p =3D READ_ONCE(*prod); if (p =3D=3D READ_ONCE(*cons)) { WRITE_ONCE(*data, 1); smp_store_release(prod, p ^ 1); } } P1(int *prod, int *cons, int *data) { int c; int d =3D -1; c =3D READ_ONCE(*cons); if (smp_load_acquire(prod) !=3D c) { d =3D READ_ONCE(*data); smp_store_release(cons, c ^ 1); } } and as with the previous example, restructuring the if-statement makes "if (p =3D=3D READ_ONCE(*cons)) {" sufficient, instead of "if (p =3D=3D smp_load_acquire(cons)) {". Yay! Bj=C3=B6rn > Thanx, Paul > > > > > > > if (cond =3D=3D 1) { > > > smp_rmb(); > > > d =3D READ_ONCE(*data); > > > smp_mb(); > > > WRITE_ONCE(*cons, c ^ 1); > > > } > > > } > > > > > > Thanx, Paul > > > > > > > [...] > > > > Bj=C3=B6rn