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 38092EE6426 for ; Wed, 18 Sep 2024 06:32:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 957DA6B0082; Wed, 18 Sep 2024 02:32:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 908476B0083; Wed, 18 Sep 2024 02:32:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F6666B0085; Wed, 18 Sep 2024 02:32:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 626A26B0082 for ; Wed, 18 Sep 2024 02:32:55 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id DAC2A16035C for ; Wed, 18 Sep 2024 06:32:54 +0000 (UTC) X-FDA: 82576891068.08.F37FBB2 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf10.hostedemail.com (Postfix) with ESMTP id CDDB9C000D for ; Wed, 18 Sep 2024 06:32:52 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726641025; 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=nHnVnZ6ms0RN4dMuYwGT8eaXSM6M7zW4lUqDXt0YbYs=; b=QkPyQCoTOYi1W5yER0Gu+XCzUebmfvbQH8YGqUcC2Ybk7e3YXz5Oi1N7GmS0Qlw9Jipgcf XhgRjq/Hkk9bT9sxvJ1tDuomuXx4xA6K7aZvBXEO4XSYQf8j8RgBp8x61AncijnEfE0/zn S5B15c9P4afdo8PDnH1XJ5hCmuOxuI4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726641025; a=rsa-sha256; cv=none; b=cKmGScuJ7/2mQB+iaFL16wCDQivoGbu54TUV985nqeu37b5f/2hvk82IIdSEIb4Wm8K4tc NwhYUrfRGDogcygQPEXAZESkSNAeCNRU0JGNQmWUsI7HILGjI9NPZObvry/LqGfoURnCWO HFmUCt3lzpESPfJxAdAzpdUX8uLzmg4= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 36FB4FEC; Tue, 17 Sep 2024 23:33:21 -0700 (PDT) Received: from [10.162.16.84] (a077893.blr.arm.com [10.162.16.84]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4E5633F64C; Tue, 17 Sep 2024 23:32:48 -0700 (PDT) Message-ID: <8cafe140-35cf-4e9d-8218-dfbfc156ca69@arm.com> Date: Wed, 18 Sep 2024 12:02:45 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2 3/7] mm: Use ptep_get() for accessing PTE entries To: David Hildenbrand , linux-mm@kvack.org Cc: Andrew Morton , Ryan Roberts , "Mike Rapoport (IBM)" , Arnd Bergmann , x86@kernel.org, linux-m68k@lists.linux-m68k.org, linux-fsdevel@vger.kernel.org, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org References: <20240917073117.1531207-1-anshuman.khandual@arm.com> <20240917073117.1531207-4-anshuman.khandual@arm.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: CDDB9C000D X-Stat-Signature: mniaa5m5cp5wx8zj7yrf6kmibn8iro45 X-Rspam-User: X-HE-Tag: 1726641172-112051 X-HE-Meta: U2FsdGVkX18us3NCi4OqBmQ5qJELkd9MeCQ+CXiD//vRSYaTJZat0jmqmIIL5HfO3jGmnmHfOXExuYURB4nJ40XnZi8tYFIM4JVXgLLkhDbxnW0fslno8TtdS9shllNWiq6/PIPR5aGvRhDCCqebvoErThYA4WlqO18o5vEgSpYMWiYDV4x1Fimm3Jrsa3r4Hp0iP8vBRv6AFxNsBTmrFZkYC5QOpFG48Mx1KuX2W1cTMHqQ3AdlPIV+0OcxMtZybW2t/8Wd4u6ixi4D0mdscYrE2RJjpbIVKVRUGJnqufxZfuf5N2t1ZWIu63hSlICtNwiTtwwuS9L2TugYErl/Om98kgVzBzf7mhi79vSXwqIcxrR1A0jqEmSgh5VpZNBllkoOhq8OAKbLEdqs++ofbOErwbBbHrtUqx2Pd86+BdTPnfjpLmc6xLUQdyamV9fDsexj5DxHV0uhfkFtUwQYTjdzP59v/CXMI6hn9cSD8AokAaizz/NPjQMgxcSI538ZugkieUUS/fyM3Ini/KKmV+6aZQ9doEEHunaKcfWb/OOEN1UMLMMakQU8cPlNzfZ4XaoP6VQVtOGCbBoWrjUhHhHuF3gMbAKIRPCVYOc2VAvUVTJTYayag/rBM9TtT4N3//v1iNeWUxLFAXDZi2JfUHYSw6FPFNFYfQnudNFisT9NtgsSeq95QNfaZ0FkUe7tBljEbE15xQZqvhjDK3RvxwRfwEpKfS/bhPyzx+4Ec/Zr6B2D2nwHXGnq+9AIRiMT3mBISq6dMu4pehZEwOdLF9mskYKH7JopTz7SIh/UYAU8YMuVMTFwc03YbSroQohAEs1RJDDzXL1uWm29IyS6bAt/g9WjoVk3lu5CxNZDinQa/V4ns/p+TWG4o0ySPh09Hk+zbWEDAeflNlVO9HYV96Ciods/b+KFSlwB3ZqYR/AtLYuO8y8aeYfCWoSOXi114qpExdy9BGr2ahYKXut MIadRM8e rZHWpSN0xys7N+J5C0IGnnZXwDfHpNhabJF1JsaRBUSVxLOpUMwOtlf9Muzz0f/C3DDT+uokEtCrrVxzzLRNTddYpsNUKsvLXmJNJiIzsPSv7Jy3mONwTXoiVSUHHW8GAOjJs0VSZr1xXxAV2nD22uj4coDUOgfUEO7p4+wRGCQFKMMFuRhUxZRHihL45W/QdsE/IAMd7zKGIk0B7VNLKtAPi7x1hH1i3WrziYkptu/UyQ/T2nuHsIYRy0W1TS9e+KSu7HPsiB/ch46YiKRTdkW+nIzahWcQBF9nQhhXuRCD0OiZQxAiOLdJD+BeY+JzL3vxKIl8TGW39t5L1fDfwP+fHbSecre5RnBodM3wnAQqTzZ/QzwumlVIC49pmRdHJ01ek0qySl/zhVP6QhSt1QcNCnwTd6jlKpQZsCZIiWad3IYRmjHJnEU5GRXkTp+bBLoYO 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: On 9/17/24 15:58, David Hildenbrand wrote: > On 17.09.24 09:31, Anshuman Khandual wrote: >> Convert PTE accesses via ptep_get() helper that defaults as READ_ONCE() but >> also provides the platform an opportunity to override when required. This >> stores read page table entry value in a local variable which can be used in >> multiple instances there after. This helps in avoiding multiple memory load >> operations as well possible race conditions. >> > > Please make it clearer in the subject+description that this really only involves set_pte_safe(). I will update the commit message with some thing like this. mm: Use ptep_get() in set_pte_safe() This converts PTE accesses in set_pte_safe() via ptep_get() helper which defaults as READ_ONCE() but also provides the platform an opportunity to override when required. This stores read page table entry value in a local variable which can be used in multiple instances there after. This helps in avoiding multiple memory load operations as well as some possible race conditions. > > >> Cc: Andrew Morton >> Cc: David Hildenbrand >> Cc: Ryan Roberts >> Cc: "Mike Rapoport (IBM)" >> Cc: linux-mm@kvack.org >> Cc: linux-kernel@vger.kernel.org >> Signed-off-by: Anshuman Khandual >> --- >>   include/linux/pgtable.h | 3 ++- >>   1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h >> index 2a6a3cccfc36..547eeae8c43f 100644 >> --- a/include/linux/pgtable.h >> +++ b/include/linux/pgtable.h >> @@ -1060,7 +1060,8 @@ static inline int pgd_same(pgd_t pgd_a, pgd_t pgd_b) >>    */ >>   #define set_pte_safe(ptep, pte) \ >>   ({ \ >> -    WARN_ON_ONCE(pte_present(*ptep) && !pte_same(*ptep, pte)); \ >> +    pte_t __old = ptep_get(ptep); \ >> +    WARN_ON_ONCE(pte_present(__old) && !pte_same(__old, pte)); \ >>       set_pte(ptep, pte); \ >>   }) >>   > > I don't think this is necessary. PTE present cannot flip concurrently, that's the whole reason of the "safe" part after all. Which is not necessary ? Converting de-references to ptep_get() OR caching the page table read value in a local variable ? ptep_get() conversion also serves the purpose providing an opportunity for platform to override. > > Can we just move these weird set_pte/pmd_safe() stuff to x86 init code and be done with it? Then it's also clear *where* it is getting used and for which reason. > set_pte/pmd_safe() can be moved to x86 platform - as that is currently the sole user for these helpers. But because set_pgd_safe() gets used in riscv platform, just wondering would it be worth moving only the pte/pmd helpers but not the pgd one ?