Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2629038yba; Mon, 22 Apr 2019 10:06:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqxjSoOYvEP8aKTvqTZWmdMi1yCyhW/b9Wr/8s/hADJ5+OuDhQKmqSBiilrexSvFVx34LQnh X-Received: by 2002:a17:902:9686:: with SMTP id n6mr21747451plp.282.1555952796252; Mon, 22 Apr 2019 10:06:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555952796; cv=none; d=google.com; s=arc-20160816; b=coSkLXroDVvTYZiUjzA3UKIph7V19RrVZ3Cs6oGJzSrQJGsCPdOw5l++NiQz6oZpUW ulaW9VhF/Of51E+r3CtcSR+E3ktqyro+V9f1tEi5AMmy3WiCcOwGK8mAuXL+pWV5ASGB RHnWt1vZbWBVM+0zie/dwrXSb9gdjOFOben/T1F49ql+L95P/c6IPFLey2DBT3fGnRVQ cNGCHs5Bbl892v7T39tN+nsBTNhx6+05ZJtowB6R2O8uyZ81JCET54RCJZXR1c1eiRyJ t2JDEa+RWtImbHleaFqcFVNBhYcMSJytzqfY1LMON6NjzaxTy4ubaLHveqC9y+bSdXfr bAoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:subject:cc:to :from:date; bh=WhJ412K3vkgi515QNZeooFBYpMNaemg4uUt3k6HKNJA=; b=fr85zmjgnA0tBgN0JmU17RwP5ec18P0HRt/KggmLe0QJkEfnG57/fEWg+Wng6FZK3U Q9t5m4RLNsQ3H9+z55eXcbUkxiLh0vWo09GRIgpRyWQIuxoY4+qzoi/IteapjFGeZQPr 7X+Bxi1lGrqNsY6WW5rgTLHkONZ2xvbtzEjpx4fdJhc7oJDmowcbBD1q0r9EfTHDx/FO AyKHhOOEwWJZejoPHxSWfO5Y18C+uYeaJ6lfQV7Lt2myUtH2jKUXlJsVshYT9Yg/vnj4 iJY/AoEBne0vYFPUfUqIRfbbJXB6brp/YXtuizFRdC/X5cJj0l0MVGYSpjWd4rznPzvH pk9A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q3si13906440plb.176.2019.04.22.10.06.20; Mon, 22 Apr 2019 10:06:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727950AbfDVQR7 (ORCPT + 99 others); Mon, 22 Apr 2019 12:17:59 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:37782 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1726098AbfDVQR7 (ORCPT ); Mon, 22 Apr 2019 12:17:59 -0400 Received: (qmail 5422 invoked by uid 2102); 22 Apr 2019 12:17:58 -0400 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 22 Apr 2019 12:17:58 -0400 Date: Mon, 22 Apr 2019 12:17:58 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: "Paul E. McKenney" cc: LKMM Maintainers -- Akira Yokosawa , Andrea Parri , Boqun Feng , Daniel Lustig , David Howells , Jade Alglave , Luc Maranget , Nicholas Piggin , Peter Zijlstra , Will Deacon , Kernel development list , Joel Fernandes Subject: [PATCH 2/3] tools: memory-model: Add definitions of plain and marked accesses Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch adds definitions for marked and plain accesses to the Linux-Kernel Memory Model. It also modifies the definitions of the existing parts of the model (including the cumul-fence, prop, hb, pb, and rb relations) so as to make them apply only to marked accesses. Signed-off-by: Alan Stern --- tools/memory-model/linux-kernel.bell | 5 +++++ tools/memory-model/linux-kernel.cat | 16 +++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) Index: usb-devel/tools/memory-model/linux-kernel.bell =================================================================== --- usb-devel.orig/tools/memory-model/linux-kernel.bell +++ usb-devel/tools/memory-model/linux-kernel.bell @@ -76,3 +76,8 @@ flag ~empty rcu-rscs & (po ; [Sync-srcu] (* Validate SRCU dynamic match *) flag ~empty different-values(srcu-rscs) as srcu-bad-nesting + +(* Compute marked and plain memory accesses *) +let Marked = (~M) | IW | Once | Release | Acquire | domain(rmw) | range(rmw) | + LKR | LKW | UL | LF | RL | RU +let Plain = M \ Marked Index: usb-devel/tools/memory-model/linux-kernel.cat =================================================================== --- usb-devel.orig/tools/memory-model/linux-kernel.cat +++ usb-devel/tools/memory-model/linux-kernel.cat @@ -67,19 +67,21 @@ let dep = addr | data let rwdep = (dep | ctrl) ; [W] let overwrite = co | fr let to-w = rwdep | (overwrite & int) -let to-r = addr | (dep ; rfi) +let to-r = addr | (dep ; [Marked] ; rfi) let ppo = to-r | to-w | fence | (po-unlock-rf-lock-po & int) (* Propagation: Ordering from release operations and strong fences. *) -let A-cumul(r) = rfe? ; r -let cumul-fence = A-cumul(strong-fence | po-rel) | wmb | po-unlock-rf-lock-po -let prop = (overwrite & ext)? ; cumul-fence* ; rfe? +let A-cumul(r) = (rfe ; [Marked])? ; r +let cumul-fence = [Marked] ; (A-cumul(strong-fence | po-rel) | wmb | + po-unlock-rf-lock-po) ; [Marked] +let prop = [Marked] ; (overwrite & ext)? ; cumul-fence* ; + [Marked] ; rfe? ; [Marked] (* * Happens Before: Ordering from the passage of time. * No fences needed here for prop because relation confined to one process. *) -let hb = ppo | rfe | ((prop \ id) & int) +let hb = [Marked] ; (ppo | rfe | ((prop \ id) & int)) ; [Marked] acyclic hb as happens-before (****************************************) @@ -87,7 +89,7 @@ acyclic hb as happens-before (****************************************) (* Propagation: Each non-rf link needs a strong fence. *) -let pb = prop ; strong-fence ; hb* +let pb = prop ; strong-fence ; hb* ; [Marked] acyclic pb as propagation (*******) @@ -135,7 +137,7 @@ let rec rcu-fence = rcu-gp | srcu-gp | (rcu-fence ; rcu-link ; rcu-fence) (* rb orders instructions just as pb does *) -let rb = prop ; po ; rcu-fence ; po? ; hb* ; pb* +let rb = prop ; po ; rcu-fence ; po? ; hb* ; pb* ; [Marked] irreflexive rb as rcu