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 6505EC3ABCB for ; Mon, 16 Sep 2024 06:15:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B60186B0089; Mon, 16 Sep 2024 02:15:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B0F946B008A; Mon, 16 Sep 2024 02:15:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D6B26B008C; Mon, 16 Sep 2024 02:15:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 7F87B6B0089 for ; Mon, 16 Sep 2024 02:15:15 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DAF70120149 for ; Mon, 16 Sep 2024 06:15:14 +0000 (UTC) X-FDA: 82569588948.08.B26F5A0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf05.hostedemail.com (Postfix) with ESMTP id 22972100006 for ; Mon, 16 Sep 2024 06:15:11 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; spf=pass (imf05.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=1726467257; 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=ycUxKFXnDthe/+kyQpwz/V+GToF5jk/XGFoY8kxg4gQ=; b=BeJsmjwx30pbj9yPYfoGedcbiuqC0PbsNMuRdQcAEd61QiqC2B0QMhL89UokozBsIeS+e4 Oed8uAQJk0ROYS/mktyadLRSZMDy2EkDRJ2jbkP0P/AJ8fBIQt9VYsyzV5lbyMNcA2jPeS fagPSf23KHkk6/vcGogDeYFS0o+AOFI= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; spf=pass (imf05.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=1726467257; a=rsa-sha256; cv=none; b=ArS/4i3eynAgRXRDA/AJGHKT91IymOk3qYVzY3w7zUTMWV7CEjHESLFnuyqQeitQwmgdhl 5fhgiguk9FQz62l5PpMK3mlrI+cO3pmHa1vYRdWwj8/n+koXV4DL+L0KPoNe3j9k2Bl3Bn ScC8EkOU4XxNXJgPYNW83o2zL80nDVA= 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 7DF0D11FB; Sun, 15 Sep 2024 23:15:40 -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 B7AD03F66E; Sun, 15 Sep 2024 23:15:04 -0700 (PDT) Message-ID: <61dafb6a-6212-40a6-8382-0d1b0dae57ac@arm.com> Date: Mon, 16 Sep 2024 11:45:00 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/7] mm: Use pmdp_get() for accessing PMD entries To: Ryan Roberts , linux-mm@kvack.org Cc: Andrew Morton , David Hildenbrand , "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, Dimitri Sivanich , Muchun Song , Andrey Ryabinin , Miaohe Lin , Naoya Horiguchi , Pasha Tatashin , Dennis Zhou , Tejun Heo , Christoph Lameter , Uladzislau Rezki , Christoph Hellwig References: <20240913084433.1016256-1-anshuman.khandual@arm.com> <20240913084433.1016256-5-anshuman.khandual@arm.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 22972100006 X-Stat-Signature: h6gifgpweq8bhyu31t84fyd8o9mmh9p3 X-HE-Tag: 1726467311-27338 X-HE-Meta: U2FsdGVkX19JfyyjWX3tXEODOXqXudvxz8O9QCehqIAF0NuliFZWw6C/twmZmEySz7jZwwA2ayV7BreHn4spKv1vA5Xc4ce4MJ7xdQ1vVugYucm3gbEiyESab5/UAGpZ5q1kqLN/DzHEr62VZkhBhp2wSeDH9lU0/P3dkILA4gNwJ4cdJsTLt1c3ate5BbYfG0eiSBmMfTip50J98iB3MIfoQ2TlL8YSmeqz+GATwe0N6V676HvFCYI7NnjTmkiLbso4Rf9AyVoYEKnXcPa9tWcMLaLFwSzURKBbwq8xqgye0aBO7Ig2swqHSZ605C4tdEvgMibq6nI6jthzhIl1LeavmekrZ0Ks7jnHIizHvwrmDCZe6P3rNxqTQ9s2KC64lcIdWdnkY9pY+kv7n49KWwe4PfYTti28T3ABrh77/GozK0ErNoFZiHHJPsPlNubXyvQ6PVhLChrrG1yiYy/HAw0Ic5HZhUqEuUBdfvytgjGZ2p4qCroIZWpIXRD1sbYloGyNzvyMydSdVTL5ZmGyAJ6YM6uPFy+8kNFk+QEUFp304V0efQejCyCZ4vG0b8ThPUT7WSVwCfEOI8fVJe5Iux5Aq6D4wzGgyoaac/IdhDv7Srk+rDW12viTckEL5vwYo3Dp3CvS2MLjHusMi9H0/bFYIRvlVoA7JYewUliOSWCEa4GgxbrlOauhqIYFxo6G/D8I+BAFweyLkTVgCGmVdgH2juum1YrhYeD7/1RrI/WmushjWVyt60rEFZRFihmxVirpuBtanfLxZufAogoidjEvKwDjZni58LA9Ah6ENSLZhLbONM1SmqIzPILrVqfkclWG/JIY7QiNoL0+qeKEmI9CNgOBaRcOKDNs6dXCo6veRSyvsiH1Jsvvj4QY9vQU9JI3zyyHPSqdOR8SlxVdnVrldEqegDs1UE7tQB+TUl8ZYuAoxOrxMlevfT722qy6FzINF6uhPvtL5eSEdyy 7eXYkDCV 9D41hCIfmW+fNe0sXoIZZ29n74OnMFshFodCwbbLdljQhHgD8tugcyIldOxbooDXaMWkL3AnKVaTMetc5TRVRT2WxVlyheIgYoCUNYZ/r2o7bsYGfY6XNgpip6gR9SsLq/GdBifLoNNxh96iDdJa3z/0j0hty6HRWYhscxKMBqKtR7WPpq4aaE8LOTRryOHceUGoKfP1iz3H6HDrQfEddW8DyExcdz0CXmsMSqsXcYMmqEhLkTODWGC3HU9CU/JbIp4uDDyjlJxNpfAygOW6DsIzUvSN4ffmWqEjghxQybT4BihxGEPL8my01kIzdoNdvo4fs8FecgtKuUD+l9XKTyI1Uv7HL5RuHHNrs72ttrQ9zoNIvUFP7gIhSP4OOJ1JCPkgsqMGSk/K/djum1Pww3W2UjkWD8W76wlPfolHnSh9tw51dojf+cZyJqlqJ3E60L2MZej9EWheQENjrS0ZhTrGwhYdsUGSxZUGRQK3mngjjEqEV88PjzVAUyStmLsVTxFasueBpy5ams0aNwT0BMPh7rRUwCQsv0LDGD3Dv7rZaxXKTnxkLFRfzOtR+BHk2O1WzSDDjK9d9BrJ+t/F8xhxg0+piMK9q/n4QHiDWtK6iTnftEvS1ZakkaMJz9zcjfWNMA1YGJScoVk/brEBB+QgLSfMQE7CXNtZYSeLZvSjB/n0RKQc6Gce4Hz+zdftL+B0h3HFC52kXVlWundcwl1YORhyqMjcZONKjUuFY4Bh6bIEx/XikEPPO6SFXTt6zCax63kn3rd5vVL7bp6mCUvmMZbTTUyucdWfD 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/13/24 16:08, Ryan Roberts wrote: > On 13/09/2024 09:44, Anshuman Khandual wrote: >> Convert PMD accesses via pmdp_get() helper that defaults as READ_ONCE() but >> also provides the platform an opportunity to override when required. >> >> Cc: Dimitri Sivanich >> Cc: Muchun Song >> Cc: Andrey Ryabinin >> Cc: Miaohe Lin >> Cc: Naoya Horiguchi >> Cc: Pasha Tatashin >> Cc: Dennis Zhou >> Cc: Tejun Heo >> Cc: Christoph Lameter >> Cc: Uladzislau Rezki >> Cc: Christoph Hellwig >> Cc: Andrew Morton >> Cc: David Hildenbrand >> Cc: Ryan Roberts >> Cc: "Mike Rapoport (IBM)" >> Cc: linux-kernel@vger.kernel.org >> Cc: linux-fsdevel@vger.kernel.org >> Cc: linux-mm@kvack.org >> Cc: kasan-dev@googlegroups.com >> Signed-off-by: Anshuman Khandual >> --- >> drivers/misc/sgi-gru/grufault.c | 4 +-- >> fs/proc/task_mmu.c | 26 +++++++------- >> include/linux/huge_mm.h | 3 +- >> include/linux/mm.h | 2 +- >> include/linux/pgtable.h | 14 ++++---- >> mm/gup.c | 14 ++++---- >> mm/huge_memory.c | 60 ++++++++++++++++----------------- >> mm/hugetlb_vmemmap.c | 4 +-- >> mm/kasan/init.c | 10 +++--- >> mm/kasan/shadow.c | 4 +-- >> mm/khugepaged.c | 4 +-- >> mm/madvise.c | 6 ++-- >> mm/memory-failure.c | 6 ++-- >> mm/memory.c | 25 +++++++------- >> mm/mempolicy.c | 4 +-- >> mm/migrate.c | 4 +-- >> mm/migrate_device.c | 10 +++--- >> mm/mlock.c | 6 ++-- >> mm/mprotect.c | 2 +- >> mm/mremap.c | 4 +-- >> mm/page_table_check.c | 2 +- >> mm/pagewalk.c | 4 +-- >> mm/percpu.c | 2 +- >> mm/pgtable-generic.c | 16 ++++----- >> mm/ptdump.c | 2 +- >> mm/rmap.c | 2 +- >> mm/sparse-vmemmap.c | 4 +-- >> mm/vmalloc.c | 12 +++---- >> 28 files changed, 129 insertions(+), 127 deletions(-) >> >> diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c >> index 3557d78ee47a..f3d6249b7dfb 100644 >> --- a/drivers/misc/sgi-gru/grufault.c >> +++ b/drivers/misc/sgi-gru/grufault.c >> @@ -224,10 +224,10 @@ static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr, >> goto err; >> >> pmdp = pmd_offset(pudp, vaddr); >> - if (unlikely(pmd_none(*pmdp))) >> + if (unlikely(pmd_none(pmdp_get(pmdp)))) >> goto err; >> #ifdef CONFIG_X86_64 >> - if (unlikely(pmd_leaf(*pmdp))) >> + if (unlikely(pmd_leaf(pmdp_get(pmdp)))) > Just a general comment about multiple gets; before, the compiler most likely > turned multiple '*pmdp' dereferences into a single actual load. But READ_ONCE() > inside pmdp_get() ensures you get a load for every call to pmdp_get(). This has > 2 potential problems: > > - More loads could potentially regress speed in some hot paths > > - In paths that don't hold an appropriate PTL the multiple loads could race > with a writer, meaning each load gets a different value. The intent of the code > is usually that each check is operating on the same value. Makes sense, above two concerns are potential problems I guess. > > For the ptep_get() conversion, I solved this by reading into a temporary once > then using the temporary for the comparisons. Alright. > > I'm not sure if these are real problems in practice, but seems safest to > continue to follow this established pattern? Yes, will make the necessary changes across the series which might create some amount of code churn but seems like it would be worth. Planning to add old_pxd local variables when required and load them from the address, as soon as 'pxd' pointer becomes valid.