Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp385863ybh; Wed, 22 Jul 2020 03:12:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzBBFIz9QrhwwNp83RJVk8u/YlSZh7ci3paIJdQN4NQjXCk2fkYAdLeMjvCiwEl1HCG7oA3 X-Received: by 2002:a05:6402:1597:: with SMTP id c23mr28885653edv.243.1595412777808; Wed, 22 Jul 2020 03:12:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595412777; cv=none; d=google.com; s=arc-20160816; b=Z17m0xz82DnpGEyLwRevMdz4qku6Vf1qhTcZET+WU7Bv9egYmBrNtqg56pkx0Sn2Z1 gJtOpUc0rDOgP4DWPuSyZ/HDvg7yp0Cr1w0qNyuWcNWdV2XI19+oX3QRz/if8eWGAgpY S4l2klNsfN5sIxHW04qQXPk//AR9uSCzNiwuIq+yPFMGT3AP3HY+tuxOni9GcH6loXUI W55N4c6T8h5pCo3CJ/AE9hbH++NCqF6spIuRpD7Y1/sdsPznf9d6pHLaaQVUowI7rVkg JwM551L4LFoTxiR9ZdbaPZL1S7yTIRJTh8lcd9oydEpz/Oz8YhGMtoyHlaYiT3cUB8lp GT5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=aEtrJgbpsOebCukpCmfFytmRqvmav58R9V8W1bUHwwA=; b=OFsUyRNG27aPrZ5vEmfiRJ9g91y7ntulTJAucQ/yaIcd1AvALfskZh4QFU4lnkkxU6 VtElleGEkioFMSwqseVsQNBHq9mhJQbxznfii10VSbO2U1mdBIi4G0RJlN6YwuVIDz4a 2VBFpyGzvDJwuEVCfFLkNKOx6zdIzF3G5W1HrqhLJ3IiTk95eQTMlcflCFNDs8LFdxXB cogIXBqNi2ttBPK78rV3rmBGEid9x6SFDF8hwmbl7AHIiuCmLYQ4hnvNvy7YWlz4hgGS O4CgmblRPd3tyDOWZ2i1DQhSKaJjCRxHBsgedQfBc+Oi4kDtGavEdNoajs9p+/ZFZhXz C6hA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=s6BRFBxB; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gj23si14957469ejb.21.2020.07.22.03.12.27; Wed, 22 Jul 2020 03:12:57 -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=@google.com header.s=20161025 header.b=s6BRFBxB; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730378AbgGVKLb (ORCPT + 99 others); Wed, 22 Jul 2020 06:11:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727819AbgGVKLa (ORCPT ); Wed, 22 Jul 2020 06:11:30 -0400 Received: from mail-oi1-x244.google.com (mail-oi1-x244.google.com [IPv6:2607:f8b0:4864:20::244]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77F4EC0619DC for ; Wed, 22 Jul 2020 03:11:30 -0700 (PDT) Received: by mail-oi1-x244.google.com with SMTP id k6so1355705oij.11 for ; Wed, 22 Jul 2020 03:11:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=aEtrJgbpsOebCukpCmfFytmRqvmav58R9V8W1bUHwwA=; b=s6BRFBxB6DMiogxI/Xm2pmaN/Ai2kw9dZQmuaL402WhVg97GWRniEH9T/OQcofUWeN DPVpgsvqUKyivc/NuczZMbgFas+2CTGG+umQFUgc9s46bY9B+GLXj4AaP4Dbfd/TeO3j w0EVj0odResMyiLFJ9blfrrlCZ//Wgg1KoJXeb2QprWdL7RLaxj/zHM7WKeLnFtQeEGM sGQGPqWYk5qfUWgbeAjHwX/DWhMwkrBLkr9LZKIpId6cfSXvEJQxi+5/Tmdw5NjOrA4A XpU65JnZSSOtJ4AxsxPz+I3x5G1lajtjeBNja3findd8APFrTf4YbdNbLPOKdM0QdTto ik2w== 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; bh=aEtrJgbpsOebCukpCmfFytmRqvmav58R9V8W1bUHwwA=; b=NwxBIEWTYtgRHSYBwf/ttPGWhW8UC85KMfOvsAKLkuSgKcSLTq6+6wdPj3cbl7rdsG 6aHjMVwHANSIBNVwArPxkKRXyvks/SSUidujkyDeSkmNTweCbpMFfAh/ReYJul+JSd7O NoAxx/0+pRdj9XJDBkHf8zUS4pquG7uKEjLVKjB54Bnj63p2U+yGux7D4EnE+6BPGMvh SF9L8sZ7uunvz8MGIAtKMFiwflCHCBjrSepyAMDt7GJb8pmA8SwIWpBndURGBno28LAc t97Bc64ql+t5kQr57MIsUfMqPqOLSuVCh4ffYIyVPeHDwxUex1Y3ZTS/jkKy7Sc1w16C 7zTg== X-Gm-Message-State: AOAM533bFB742wtCtsdTHdeoKSu7Cj8dl81miNhn8/y38H4fVUkwsBzN p7WlY+3dzL9KyCgkryYu7w2Pwxw4LKpXGKfeUSdo5A== X-Received: by 2002:aca:cf4f:: with SMTP id f76mr6563659oig.172.1595412689438; Wed, 22 Jul 2020 03:11:29 -0700 (PDT) MIME-Version: 1.0 References: <20200721103016.3287832-1-elver@google.com> <20200721103016.3287832-9-elver@google.com> <20200721141859.GC10769@hirez.programming.kicks-ass.net> In-Reply-To: <20200721141859.GC10769@hirez.programming.kicks-ass.net> From: Marco Elver Date: Wed, 22 Jul 2020 12:11:18 +0200 Message-ID: Subject: Re: [PATCH 8/8] locking/atomics: Use read-write instrumentation for atomic RMWs To: Peter Zijlstra Cc: "Paul E. McKenney" , Will Deacon , Arnd Bergmann , Mark Rutland , Dmitry Vyukov , Alexander Potapenko , kasan-dev , LKML , linux-arch Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 21 Jul 2020 at 16:19, Peter Zijlstra wrote: > > On Tue, Jul 21, 2020 at 12:30:16PM +0200, Marco Elver wrote: > > > diff --git a/scripts/atomic/gen-atomic-instrumented.sh b/scripts/atomic/gen-atomic-instrumented.sh > > index 6afadf73da17..5cdcce703660 100755 > > --- a/scripts/atomic/gen-atomic-instrumented.sh > > +++ b/scripts/atomic/gen-atomic-instrumented.sh > > @@ -5,9 +5,10 @@ ATOMICDIR=$(dirname $0) > > > > . ${ATOMICDIR}/atomic-tbl.sh > > > > -#gen_param_check(arg) > > +#gen_param_check(meta, arg) > > gen_param_check() > > { > > + local meta="$1"; shift > > local arg="$1"; shift > > local type="${arg%%:*}" > > local name="$(gen_param_name "${arg}")" > > @@ -17,17 +18,24 @@ gen_param_check() > > i) return;; > > esac > > > > - # We don't write to constant parameters > > - [ ${type#c} != ${type} ] && rw="read" > > + if [ ${type#c} != ${type} ]; then > > + # We don't write to constant parameters > > + rw="read" > > + elif [ "${meta}" != "s" ]; then > > + # Atomic RMW > > + rw="read_write" > > + fi > > If we have meta, should we then not be consistent and use it for read > too? Mark? gen_param_check seems to want to generate an 'instrument_' check per pointer argument. So if we have 1 argument that is a constant pointer, and one that isn't, it should generate different instrumentation for each. By checking the argument type, we get that behaviour. Although we are making the assumption that if meta indicates it's not a 's'tore (with void return), it's always a read-write access on all non-const pointers. Switching over to checking only meta would always generate the same 'instrument_' call for each argument. Although right now that would seem to work because we don't yet have an atomic that accepts a constant pointer and a non-const one. Preferences? > > printf "\tinstrument_atomic_${rw}(${name}, sizeof(*${name}));\n" > > } > > > > -#gen_param_check(arg...) > > +#gen_params_checks(meta, arg...) > > gen_params_checks() > > { > > + local meta="$1"; shift > > + > > while [ "$#" -gt 0 ]; do > > - gen_param_check "$1" > > + gen_param_check "$meta" "$1" > > shift; > > done > > } > > @@ -77,7 +85,7 @@ gen_proto_order_variant() > > > > local ret="$(gen_ret_type "${meta}" "${int}")" > > local params="$(gen_params "${int}" "${atomic}" "$@")" > > - local checks="$(gen_params_checks "$@")" > > + local checks="$(gen_params_checks "${meta}" "$@")" > > local args="$(gen_args "$@")" > > local retstmt="$(gen_ret_stmt "${meta}")" > > > > -- > > 2.28.0.rc0.105.gf9edc3c819-goog > >