Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp978834pxb; Wed, 3 Mar 2021 23:17:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJyNNgUmls7gRvsgqUnRkDq0Kex2xJJ+4zlvHLzU4Enf7Gr69fuviySAdzlbdcblBHID3XYA X-Received: by 2002:a17:906:1848:: with SMTP id w8mr2702591eje.3.1614842263001; Wed, 03 Mar 2021 23:17:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614842262; cv=none; d=google.com; s=arc-20160816; b=kyggZMwgihSoIX2ghMnL+uhvsCO8re7pTKWCvch79RoyOOGuKnPfocNoLod+LAL7Su y2OORNJ4wAfd3TCUr2WpYmj+V3tS5jhXVjuRWmyYnaYOmjJx/2VVeBfewQfefJYsWVoc kfRaNJ5h3uEkgggU0GkA2+zxC/6HjH+IpgZeLVvIh+iZGd4gnc5PBDGKNdBrW5RICEom WHg1vOhKp8F0/hr2Pcmd9iXEA44JKRsqUUaZbtiBCURVVAEVLSxIN1HDbJOfX6rFP1+j qV51jA39G47sq/Ct3gkvSyVAyKsFu6fmrgLoR3/nU4Ti026hi81V+brkuSBOp98v9UDo UWpA== 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=6T3fGD+86/8fYUQZQLE14YUohAPbWb01LybRdaeaGkI=; b=HloTvciyYPD2omL7z8a1AwnmjphA3JiYcLrrPDiXfC0YfBe1fp8laEzBbphQTr383b /96C17RPZrbYEdL1VtPo6EttEpitNuQcJG6P8t4GAAruzx7kXaGkgM2VDyyfrMp0lsm+ PpCpvhUWePEXQlSn8Qx+RD5yX+qdtNymtaqZLixjJq95M2ejiwl0IW7yftai321GasOg UXTRec032TVP9gYV4vAGsmgWGZzNG4bbTigz+jeVgIQaigbQG13xEyId8V9QbsJ9rXI1 NNDM8+yiOHE0du13nZqLaaQW04ym2+db92pbk+cbSv9aCWLM9dW6uLGVecSgtdyU3O7B MZuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QiO5JRff; 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 dj20si5059417edb.250.2021.03.03.23.17.21; Wed, 03 Mar 2021 23:17:42 -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=QiO5JRff; 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 S2360094AbhCBWQg (ORCPT + 99 others); Tue, 2 Mar 2021 17:16:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350729AbhCBUZj (ORCPT ); Tue, 2 Mar 2021 15:25:39 -0500 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BBE2BC061788; Tue, 2 Mar 2021 12:24:17 -0800 (PST) Received: by mail-wr1-x42d.google.com with SMTP id d15so6021567wrv.5; Tue, 02 Mar 2021 12:24:17 -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=6T3fGD+86/8fYUQZQLE14YUohAPbWb01LybRdaeaGkI=; b=QiO5JRff59hxNMm+ostLWqwaISk3Hg89pQpkhWn803Os0dD+R7ON+nBo3q/3zoX5Fr jdtWKbgDAzIbOBh3/5KVMTX0KvAciD8m5vid+oj0ZSdYYHz0lfr5ZyC8DwHYvL5gq78z XEZ6sN+zURqLnflikkTWNoKwBbSOFnLxdX9apH2KxoQL84sMq18xZIFahCJOkFRmjPD/ WCmJzzXGbVQNJJzdY02pDMs5pWeMeygZGOlXizJ3OkT9k7aD38c1o9kKEtJrbuvGpfta JQGjox3OJ4ToxDDE5c+W9XPEvxKRa1lNlwYfNjVG7/FjhD9o5mOK+i+CNEtzcMOHb2/Q PDNQ== 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=6T3fGD+86/8fYUQZQLE14YUohAPbWb01LybRdaeaGkI=; b=oViqaiGIQouQsRlQ2vOelzeVDrqfYblo5Y3eHVohMoPkj6HgAtr+23Vv9I2HoISZzQ l2+y9LEunpJzkz9K1Kd+amn2YpzbpTxgjrnzkxf5rgWsD7L+d1Bs2MibbnOpGG2kzejt rE5T176GsX6tZjO6nUgUwmsPu+S7lWMyYO/C/AIJ+6o/NdS/PYQaMTNZ3/CmP4f1ni61 0vgiYLbuGamLyvkZ0zu1mX2tCGYYbKytlI/8inexvolpgRv2kWKPzp/+ZdhEU6bI3f1H Ic2jGaLDO4mxy03UXIYSH0skgbcDfDsv1e//a1SVL4TOzAHyUVu+TwDWwh6whTOPn/E3 QiDA== X-Gm-Message-State: AOAM533XQrWx8hYP3FjMx3mnFpEeGx/BovV4y8YQ8CZlRqfS76pbOe0b 6AzOm3SAxZqKTN2TGzMh3i8O0oHMsyeNbREquzw= X-Received: by 2002:a5d:4141:: with SMTP id c1mr24661300wrq.248.1614716656517; Tue, 02 Mar 2021 12:24:16 -0800 (PST) MIME-Version: 1.0 References: <20210302195758.GQ2696@paulmck-ThinkPad-P72> In-Reply-To: <20210302195758.GQ2696@paulmck-ThinkPad-P72> From: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= Date: Tue, 2 Mar 2021 21:24:04 +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 20:57, Paul E. McKenney wrote: > > 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) > > if (cond =3D=3D 1) { > smp_rmb(); > d =3D READ_ONCE(*data); > smp_mb(); > WRITE_ONCE(*cons, c ^ 1); > } > } > > Thanx, Paul > [...] Bj=C3=B6rn