From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 82161C5DF61 for ; Thu, 7 Nov 2019 09:29:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4D31B21D7B for ; Thu, 7 Nov 2019 09:29:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D31B21D7B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arndb.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 04FE76B0003; Thu, 7 Nov 2019 04:29:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F41606B0006; Thu, 7 Nov 2019 04:29:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E30D46B0007; Thu, 7 Nov 2019 04:29:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0087.hostedemail.com [216.40.44.87]) by kanga.kvack.org (Postfix) with ESMTP id C7EB46B0003 for ; Thu, 7 Nov 2019 04:29:06 -0500 (EST) Received: from smtpin13.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with SMTP id 9F9C9180AD82F for ; Thu, 7 Nov 2019 09:29:06 +0000 (UTC) X-FDA: 76128957492.13.eye79_899c20a90cd26 X-HE-Tag: eye79_899c20a90cd26 X-Filterd-Recvd-Size: 5941 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.134]) by imf47.hostedemail.com (Postfix) with ESMTP for ; Thu, 7 Nov 2019 09:29:05 +0000 (UTC) Received: from mail-qk1-f172.google.com ([209.85.222.172]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.129]) with ESMTPSA (Nemesis) id 1N2m7Q-1hnihH2hga-01383e for ; Thu, 07 Nov 2019 10:29:03 +0100 Received: by mail-qk1-f172.google.com with SMTP id q70so1332922qke.12 for ; Thu, 07 Nov 2019 01:29:03 -0800 (PST) X-Gm-Message-State: APjAAAXvo3jXRwJAt2Lr+XZRu6Z7+kbUAmYz5+HF2Iq+gNAkuD7jlnU0 z9WwIuVDGCSGwG6i8fT3uJ0ujpztWMBGpPlxKLk= X-Google-Smtp-Source: APXvYqz4uJPonvytrocHSqnQZ8i4aUVZlnbKV1FQuoJL6TWEwmD/wXe2XfXkU+pON631hEgsDXEwXISvBnOOB7zK8G8= X-Received: by 2002:a05:620a:a0e:: with SMTP id i14mr1739172qka.3.1573118942427; Thu, 07 Nov 2019 01:29:02 -0800 (PST) MIME-Version: 1.0 References: <20191030142237.249532-1-glider@google.com> <20191030142237.249532-3-glider@google.com> <20191101055033.GA226263@google.com> <20191107060816.GA93084@google.com> In-Reply-To: From: Arnd Bergmann Date: Thu, 7 Nov 2019 10:28:46 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH RFC v2 02/25] stackdepot: prevent Clang from optimizing away stackdepot_memcmp() To: Alexander Potapenko Cc: Sergey Senozhatsky , Vegard Nossum , Dmitry Vyukov , Linux Memory Management List , Al Viro , Andrew Morton , Andrey Ryabinin , Andy Lutomirski , Ard Biesheuvel , Christoph Hellwig , Dmitry Torokhov , Eric Dumazet , Eric Van Hensbergen , Greg Kroah-Hartman , Harry Wentland , Herbert Xu , Ingo Molnar , Jens Axboe , "Martin K . Petersen" , Martin Schwidefsky , "Michael S. Tsirkin" , Michal Simek , Petr Mladek , Sergey Senozhatsky , Steven Rostedt , Takashi Iwai , "Theodore Ts'o" , Thomas Gleixner , Wolfram Sang , Vasily Gorbik , Ilya Leoshkevich , Mark Rutland , Matthew Wilcox , Randy Dunlap , Andrey Konovalov , Marco Elver Content-Type: text/plain; charset="UTF-8" X-Provags-ID: V03:K1:fjUroyZ571Q5u3epdi4m0MAt+QHReysMyoQBXetwaywPEMy7ZBf qqDkejxcpZeu0/QK2oQcV4OAw/XqfJBJ4ovI+jEmCXRmq3pqby22j/xUlyjbHyz2BdoX9q8 dUCuHKGte1hg3CV1PTsrQzd3ObK+qmNKPeInp+rw+Nm+inNRpiwCXChtQCTxiksWNM8RpHF FP9/loQQT5I2XyryPZfhg== X-UI-Out-Filterresults: notjunk:1;V03:K0:9+L8U2HHhVc=:rYKkbxgAB8g1QYRCOCSc9O PtVIBFDfVplafVC5n0DE+LR5WBqFnjEp3M97Bm3460q5LdHtSKl8arLnR8v/CIhLUNvkMX0t5 ZR84AJdUltwYiXRUmrUJeFAYv4CcP1bMnBGfVme/xJRNExNqUpySjdOxkXWKSrmSDSi4OA+O7 sycC+rnbOKulIgYeRjBgSVWypNaKNYfwZaJVeB/QgsaqpHZQYTwQQn4Ew93olWam01J0uqU8A R2sIqoBpWsJRQ7O7un4z67r+RMcoEcXvFQltkZJ/cMugNhsULrVjT38kHCjKTJ9F+XKaFdeSj VuyDaRU7emoH2dD6UnmbQf56A1Nu+o/dFqog6KYYnSOJUG1zjVByNVFoZdY4KP7+42CApU1Bg TKIVgicmKFy3UrL+1bFHEkAgg3bBz7k/NEryse01LnXI8AjGlX62uqSc/4mQE3JOHmmr/XO8b CH4PNI+48Wj4yvzzdlkmgD/2Z0LgX5/8nO1zgGwqjhNpSmLAyjVsg6+AjOfCb+p5XKbE10Xzo hBsiZ2m2gMkOLFcEUo/IHGRObhX3NzXSygwvegQrAhtvLBEpopP4xU6n82jHysdW6tCjizRPA yQbL+CxIWsXnw7CmWgvLnO9vg0agARcTiD+DNNy2hyZxwe1u2qEgYADkEjfyIAB9yyPEzGOOH 1mBaZpEw9LRhyMVLWU5qmYPyLAoMldaVX/MKa+U7AyRVeeeRnRthnAqMOdpuyh9IGiJia/k92 Cq7ua+gd3M5m8EgEXwpp9MPhLFOiH1+gO9CXxS0i9kgPeyYhglZZfMLYSj2cvv236yrKVIemM Ot8Uvles/V4B2t8njBGqFXorfkZWBqcJjBn8rcr7JtTSCu+UunrrEy8v7MYC5EFNseizbLtiV 9LPNWEHmW4O3UwluWhPg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Nov 7, 2019 at 10:22 AM Alexander Potapenko wrote: > On Thu, Nov 7, 2019 at 10:04 AM Arnd Bergmann wrote: > > On Thu, Nov 7, 2019 at 7:08 AM Sergey Senozhatsky > > wrote: > > > > > > Yeah, 'volatile' in this case will do what it sort of meant to do - prevent > > > compiler optimizations. So, like you said, it's not a synchronization issue > > > and we don't 'volatile' data structures. > > > > The normal way to do a volatile access would be > > READ_ONCE()/WRITE_ONCE(), but that seems stronger than > > the barrier() here. I'd just stick to adding a barrier. > I actually like the READ_ONCE idea more, as READ_ONCE is really a > documented way to prevent the compiler from merging reads, which is > what we want here. Fair enough. > I also thought that the original barrier() statement was just a > compiler barrier, which didn't introduce any additional CPU > instructions. > Turns out I was wrong, and barrier() also serves as a memory barrier. The definition of barrier is #define barrier() __asm__ __volatile__("": : :"memory") which is no actual barrier instruction but is a full barrier to the compiler. Only for the Intel ecc compiler it is defined as an intrinsic that I don't know. Arnd