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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD148CF6497 for ; Mon, 30 Sep 2024 11:27:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 151E280029; Mon, 30 Sep 2024 07:27:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 102CA80017; Mon, 30 Sep 2024 07:27:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EE74D80029; Mon, 30 Sep 2024 07:27:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id CF5CE80017 for ; Mon, 30 Sep 2024 07:27:23 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7D3D7C0B00 for ; Mon, 30 Sep 2024 11:27:23 +0000 (UTC) X-FDA: 82621178766.02.824A036 Received: from frasgout12.his.huawei.com (frasgout12.his.huawei.com [14.137.139.154]) by imf21.hostedemail.com (Postfix) with ESMTP id 527801C0002 for ; Mon, 30 Sep 2024 11:27:17 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.154 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727695502; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MiBMUxjIK4sqy2LWt3xukgUnINXgJ3yUjlPZDhdQYbk=; b=csu1NQ23IrJRDD41H4GT1T3X+be+i16fN9u+aEfu9v/hccdLqBKXPB8lozkiDosErNgTr4 xcAxGsfkzDTBp7ascAUF83nBMg8FqGVRVNYcmNumBZDXtCgfphsoFXxnm9miSFeevMvuac wnIb0/UV9XdOuWVYX47nYRcjn1nwSQ8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727695502; a=rsa-sha256; cv=none; b=Ny+QLwNDlsB7h39Ula53nmF8D/uE1hK5q/7+1rXvPuyphlzeZKoBVgcW+7QRzcJcR7zUyK t73Y/6SjJJ5YiDAHnmGJ9PMGT8ptdes3SwpU1nUBolBuJvmOT1RsY6xgEatrlijH+7hz54 OLewvhD68zS8TDiDWK5yUjAwrp6jnR4= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.154 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com Received: from mail.maildlp.com (unknown [172.18.186.29]) by frasgout12.his.huawei.com (SkyGuard) with ESMTP id 4XHJ6J2nPgz9v7JQ for ; Mon, 30 Sep 2024 19:01:28 +0800 (CST) Received: from mail02.huawei.com (unknown [7.182.16.27]) by mail.maildlp.com (Postfix) with ESMTP id BF4201400D1 for ; Mon, 30 Sep 2024 19:27:12 +0800 (CST) Received: from [10.81.209.28] (unknown [10.81.209.28]) by APP2 (Coremail) with SMTP id GxC2BwBHqckAi_pm3EXyAQ--.6296S2; Mon, 30 Sep 2024 12:27:12 +0100 (CET) Message-ID: <9539c551-5c91-42db-8ac1-cff1d6d7c293@huaweicloud.com> Date: Mon, 30 Sep 2024 13:26:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] compiler.h: Introduce ptr_eq() to preserve address dependency To: Alan Stern , Mathieu Desnoyers Cc: Linus Torvalds , linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Sebastian Andrzej Siewior , "Paul E. McKenney" , Will Deacon , Peter Zijlstra , Boqun Feng , John Stultz , Neeraj Upadhyay , Frederic Weisbecker , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Steven Rostedt , Lai Jiangshan , Zqiang , Ingo Molnar , Waiman Long , Mark Rutland , Thomas Gleixner , Vlastimil Babka , maged.michael@gmail.com, Mateusz Guzik , Gary Guo , rcu@vger.kernel.org, linux-mm@kvack.org, lkmm@lists.linux.dev References: <20240928135128.991110-1-mathieu.desnoyers@efficios.com> <20240928135128.991110-2-mathieu.desnoyers@efficios.com> <02c63e79-ec8c-4d6a-9fcf-75f0e67ea242@rowland.harvard.edu> From: Jonas Oberhauser In-Reply-To: <02c63e79-ec8c-4d6a-9fcf-75f0e67ea242@rowland.harvard.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID:GxC2BwBHqckAi_pm3EXyAQ--.6296S2 X-Coremail-Antispam: 1UD129KBjvJXoWrZF15GFW7Kr4UAr4fAF48Crg_yoW8JF4rpr Z8ta1rKF4kG395CrZ0yw18ZFW7uF4ftFy5Grn2qr48urs8uFyfuF47KFyYvasIyw4rXrWj vr45ury3CFy3JaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvYb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxV AFwI0_Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4IIrI8v6xkF7I0E8cxan2IY04v7MxkF7I0En4kS 14v26r4a6rW5MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I 8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVW8ZVWr XwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x 0267AKxVW8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_ Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x07 jxCztUUUUU= X-CM-SenderInfo: 5mrqt2oorev25kdx2v3u6k3tpzhluzxrxghudrp/ X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 527801C0002 X-Stat-Signature: ff4ixtw1zdy3sjiyjaykw8u836ayw45w X-Rspam-User: X-HE-Tag: 1727695637-600840 X-HE-Meta: U2FsdGVkX189IefoaGgKzHKaHurn16jpso9i7GMK/Tgb0lnz89m7DZ9vsx1ULwONVRHlghRxp5YRiDrPh34vurxPfQrXcSd+z8MgoUmWH9LELWKbPv+HooTR8q2v0Di22zORXcEs6DYNs6e/SioSxqCpu+tzU/HfKnpe1o0bmhWiA+C+u4n/O0Q4JoncD8wTYXTmf7+jfw2BlzR+Fkp/IHa6rpMin2bTRzzpGSMeKa7MbkYkKeaIJPAC9Ld4xow4DVjEKiCssU/GjqpN2tkM/bINBk/bO18xH56hbvurQWco8G8EGg/v/S1DwtwsFgODEbi36+rrH5+27YpJtTVDCdiHfVVAUWKoyr1TXiwfoPavYjdLCafGOiTFvASIPhiBW5hzg/mh4xTRS1n2D9zzNVMNAVRtxnEpWO4JlcPsZ8M8ajl2T81IMGeZ9EQpuzcsHJyTOGHVPe3Hd+zRjjTwv5rlldAGjeNwm2XFWTb/T5hls+IFwXQB/qvnKf+hYAIo0r01UW569g+YAJPrRjdVJC0vBhcTlAIgQLcaLSj0p8PzPGjrzb+fAvQLLtH8NwOOnBQK7pdIFrc9MfJ73VVaM1BDnD+taf9ARAu8mbOsLuKWZVR4Udbda3oiqgDGxzVFZVwTUUqozvipOd1QVtiegPD9Ndt2Y68PjOIH1/KfOHehw3gIba1ohj9Qvj8Az8idWsdT8fVLy2STuCTAzAuWNQjdTOnyHDoW3qBI+SGXC4p63l3ByHPDE0DeNRwyZFmd2JfkqZIG+nsq5cjMoSCquEg6pSk6R+s/IjcBLkVoCocHfSLV5F6ocYTctXjSPc5Cgr3Zmb4U8OPgMhzWO/toRozLnjd5xdG6Oq6Nq63bus6oiigij/SUsU5X5DtSX7C7UC7cHODb5SVmlHGtDUoBw9P0odmbHwyVYts/PiF7QoeyRAeY4wijQkkujLgEw9OFWVGwyp1+hCSkFzvO5uo 4O9ZhJ2k 3CIEP4gzrMMQSxw5bmOXRBhcaaZtmiPmzWW2IIMbQkioVvLjVLFdfqOX40t3k3B4U/7Yh4Kj6OzLXvH9J2kQdddE3sL/vCGjaJBF46EZ7jynoc/73Jkr8mb/XGpRTQTj3519c3Dt66PPztbHdCvyIzGK3IH0dNISTGT5/uxfdEyrqhDxcIAI9pFwId/6AkGy1+3CSl0qtM7U4713HpdvCRjHTqn1D7lKT3tOAIeaQevAYtFXq5ZD9BZqPfte3iADKEIBx5h8+UBItVbrIMgK+lelDQQ== 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: List-Subscribe: List-Unsubscribe: Am 9/28/2024 um 4:49 PM schrieb Alan Stern: > On Sat, Sep 28, 2024 at 09:51:27AM -0400, Mathieu Desnoyers wrote: >> Compiler CSE and SSA GVN optimizations can cause the address dependency >> of addresses returned by rcu_dereference to be lost when comparing those >> pointers with either constants or previously loaded pointers. >> >> Introduce ptr_eq() to compare two addresses while preserving the address >> dependencies for later use of the address. It should be used when >> comparing an address returned by rcu_dereference(). >> >> This is needed to prevent the compiler CSE and SSA GVN optimizations >> from replacing the registers holding @a or @b based on their > > "Replacing" isn't the right word. What the compiler does is use one > rather than the other. Furthermore, the compiler can play these games > even with values that aren't in registers. > > You should just say: "... from using @a (or @b) in places where the > source refers to @b (or @a) (based on the fact that after the > comparison, the two are known to be equal), which does not ..." I should also point out that it is not enough to prevent the compiler from using @a instead of @b. It must also be prevented from assigning @b=@a, which it is often allowed to do after finding @a==@b. Best wishes, jonas