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 60030C7EE23 for ; Thu, 11 May 2023 13:15:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F16256B007E; Thu, 11 May 2023 09:15:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EC6726B0080; Thu, 11 May 2023 09:15:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB5776B0081; Thu, 11 May 2023 09:15:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CF9B06B007E for ; Thu, 11 May 2023 09:15:20 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A5A66AE657 for ; Thu, 11 May 2023 13:15:20 +0000 (UTC) X-FDA: 80778020400.04.78DEAD6 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf11.hostedemail.com (Postfix) with ESMTP id 53E9B40044 for ; Thu, 11 May 2023 13:14:49 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=none; spf=pass (imf11.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@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=1683810889; 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=KCsnPDCMWjagA+l0W0c3ZNHZz6vjh0dznH51JtG/Weo=; b=AyJLrcjAjhGHwxoABf2ID/wxdOkQb92DhTgBwWpfGKwipy/IOWI8XlO9LS5wCTo1sxECLN 3FnXYZ1qXZ54r+Ud1XDjqcOuOkgcVLxSH53WKLJ65rFWY2Piw7/eNMCGW9wB1mUeF969Il +We3qaArnOVecZpyRdYllg1gHMQJjmY= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=none; spf=pass (imf11.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1683810889; a=rsa-sha256; cv=none; b=qV39GWdBIm8TU18jKwm0rxbgaCMVAq6ZVfRngAcWmnQEzOkuJUV6ypd7lzWyycnX5pTGma Nh2/bxQlM8QUSuXShxE9Y1s0smVXo3hZ1KJ9SJ+xq4eGwSWeeX5JTnwwd6g4k7Ewa2KuFP 6yfCXLOBP+UC+wUnGtCRJBdjgLBoabg= 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 37367113E; Thu, 11 May 2023 06:15:33 -0700 (PDT) Received: from [10.1.34.59] (C02Z41KALVDN.cambridge.arm.com [10.1.34.59]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BF0863F5A1; Thu, 11 May 2023 06:14:47 -0700 (PDT) Message-ID: <0edc26bd-4341-ff5d-87f4-0c1f685b2d3d@arm.com> Date: Thu, 11 May 2023 14:14:46 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: Re: [PATCH v1 4/5] mm: Add new ptep_deref() helper to fully encapsulate pte_t To: Andrew Morton , "Matthew Wilcox (Oracle)" , "Kirill A. Shutemov" , SeongJae Park Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, damon@lists.linux.dev References: <20230511125848.78621-1-ryan.roberts@arm.com> <20230511125848.78621-5-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: <20230511125848.78621-5-ryan.roberts@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: fzqnb3zhozfpib43zmnopa7kqwojddo6 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 53E9B40044 X-Rspam-User: X-HE-Tag: 1683810889-995316 X-HE-Meta: U2FsdGVkX1/fxMSlfPA1zatKA7PwIWzgXbaJ2RxRJAKZ0I+ZfHSqvSARNQoACQJl/N+ZTDtx1lQ0XTL7S5Kgnw2UyUiKj8YIOg4adzcPVl13BiiKMOJBb32J98yeuMRqrWc3dC0M5bPHbR33v3UcF9ALsGs71q/kxo6pKM7WKP70WvFsTGl3uGbPQJ3y5AmmA9x4LelvMd6f3YcU7AnSyYQJykbNnxvtJpdqFVbqZ08sdzMcV4txqaujfsDBd1dUkcYWJFmPo1m81WSPLxF3j53tQRpE3E+5GBpBiEJiQzvFj8jLnTBXlh3vO6ASIuh0jCdeaFrTRpvn4AKWlmSxc4cn374HUqKEQG0aa6cqxc+a0Lgr4dza9IIF5W5jiN2g43pBJLKxm+AR5dedtSGE6yt85Y1w7tRGdHLxr//PUv8hKpeYe8jbjboLWI3p5cx6Uw5VKs7kFTvvY2eulY6hTImt9FR/HTtu+qZTB15lN2h4z3RwreVFLZo7lfXp0qbI3eHWRgntm0zfHTmxwuU5+zhtGGotqqyqlqFdBlMzAW8Uv7a7uubnbvjfRzWuxxTXCSK9b9Dfp9VkkvxIxPZAM+uyodWGd1ZiYdH8ZBB1E41Mr97/ptw+jX5Kj5QpeMKAlVqojo/oy29y8/aVjWJ546atpWAtOFjg/aq7P8cw1Cka3es0sPtZP6IclFMfhmcRz8/RjYJO3xp2Iu4sLbxSM6CS6Wzcevj/wxRk1yzxBzmfQpFjZSPFXhrU6DzS2SSkfpuQruKP0rnJYogEbMMlPTFIsETOqnzzabFoobR6THBGgiEtVu0EGanoDypW1eExr+b+Sj92tO9DObs2ncNDiJCASdxTGxYrZZeXgr2qYx2p4F2e7HUmZad6sBK+YTtsjAVxQKFFvzJ68XartU+3ghNcFNrnFQKrvLkNARiFMRNT19pgd4qm88Ayaq3ST3VMAcUbSSnKth9KJC2sHWZ FoqcNcLn gZe0aaE4bjSekWAI23mmd2JH526o/BD/f6/aSRq9Hp/3u2HZOKNJsSjG6rERbMzJY6DE4RzgOvFrDMiO7UpSYJtYuaxN6J4GC2zh1l8FpHONVcVQEhRr1rr+nL+PH5jkRsegVT95dis9vZCC14GtwZRBQeGJv4MngvKOoP7nEU1J2LTBoV3cwGSVDSpspMZ4HGePXgk62fe/3PNxAh+spyv6A0Q== 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: My appologies for the noise: A blank line between Cc and Subject has broken the subject and grouping in lore. Please Ignore this, I will resend. On 11/05/2023 13:58, Ryan Roberts wrote: > There are many call sites that directly dereference a pte_t pointer. > This makes it very difficult to properly encapsulate a page table in the > arch code without having to allocate shadow page tables. ptep_deref() > aims to solve this by replacing all direct dereferences with a call to > this function. > > The default implementation continues to just dereference the pointer > (*ptep), so generated code should be exactly the same. However, it is > possible for the architecture to override the default with their own > implementation, that can (e.g.) hide certain bits from the core code, or > determine young/dirty status by mixing in state from another source. > > While ptep_get() and ptep_get_lockless() already exist, these are > implemented as atomic accesses (e.g. READ_ONCE() in the default case). > So rather than using ptep_get() and risking performance regressions, > introduce an new variant. > > Call sites will be converted to use the accessor in future commits. > > Signed-off-by: Ryan Roberts > --- > include/linux/pgtable.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index c5a51481bbb9..1161beab2492 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -204,6 +204,13 @@ static inline int pudp_set_access_flags(struct vm_area_struct *vma, > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif > > +#ifndef ptep_deref > +static inline pte_t ptep_deref(pte_t *ptep) > +{ > + return *(pte_t *)ptep; > +} > +#endif > + > #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG > static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, > unsigned long address,