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 C2640EB64DA for ; Thu, 22 Jun 2023 14:42:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 740288D0001; Thu, 22 Jun 2023 10:42:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6C57E8D000C; Thu, 22 Jun 2023 10:42:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 564A58D0001; Thu, 22 Jun 2023 10:42:57 -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 338268D000C for ; Thu, 22 Jun 2023 10:42:57 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9BAEFA0BD6 for ; Thu, 22 Jun 2023 14:42:50 +0000 (UTC) X-FDA: 80930650500.24.427EBF8 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf30.hostedemail.com (Postfix) with ESMTP id 9FB4780009 for ; Thu, 22 Jun 2023 14:42:48 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; spf=pass (imf30.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=1687444968; a=rsa-sha256; cv=none; b=Uiwz1SYXYwBhVKe1vMxAsN9EYA9Go/YH013r5aZDiKK8b0iC1cVlgtxlthf3LsFmSBRSis Rjp61ojGNxDbRm64rPxyAkX5OmmuGVjrOiciHNwjZoG+Yb4O1Ea7MOrFK0ANobWp3vK9sK aPHmE6PJR7+cTUGU8lXcCtVSrKK+Zuk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; spf=pass (imf30.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=1687444968; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LGmsfh5ujWnepK3ZoOUTFN5hSel/MimSSYZZvfFi/dY=; b=jRw2yVRzyw77xzpcxGjLyjCXuI2XeK6cDoFbm0HDLnopO4Jb/94E9Sce3r/QDq7KgxLFWK 2mz0ZY12QxvpuW4TVh8/TY86Fs4h2bZn7hcCez3sLfQ5uSw2GNfCf6E1thbDVyAe7dON/r Zz4kmaDmaYBCZZd6i7+Vsfb6/UNGnnc= 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 A0A93C14; Thu, 22 Jun 2023 07:43:31 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.26]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CB8C3F663; Thu, 22 Jun 2023 07:42:45 -0700 (PDT) From: Ryan Roberts To: Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v1 07/14] arm64/mm: ptep_set_wrprotect(): New layer to manage contig bit Date: Thu, 22 Jun 2023 15:42:02 +0100 Message-Id: <20230622144210.2623299-8-ryan.roberts@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230622144210.2623299-1-ryan.roberts@arm.com> References: <20230622144210.2623299-1-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 9FB4780009 X-Stat-Signature: 3dn4tost8ezp5fafeedtocxoh364r4nz X-HE-Tag: 1687444968-736522 X-HE-Meta: U2FsdGVkX1+9Ell8q/xkNquMIXSOyt3E9I3fCevRZpvK9wGi2oWwi3xmgel6w6tR3db2wIhHvMgR8w63AAIBV9F1vwuczYgCoHArUkJmZwCe5IYQvJ/01+L0bdT+9Z2b0Q1xZjnvLHBD5cKPl3lafwL9fP9/N3IvC1nrFcn7NrUSIUicgjsMIK/WAKlVTyoT8UhE3JJ5mpiwtThl2MJp36PuYz0bpEdCgISGyN1hQhQ7T0OjUptYVkTHYB52IP+/9q2/hUUJy6xOcMWUBa17u643ftI9FRlNdqltVZuTU7EjqWcf2YD01N9k3krL7BU6hDk0lc2oVf6QHF9A6VXSEHMMBP8gHr5O9VDUT6Vs2D9DYpqsXOFMzcs9HmbSlrG+lWinlie3TFImE3vkDQXmPnP/6/q8T7UMROECSBMQkZwCTVk0oJLs+UUdK05H0iG4xNzuku6ysFCHFFIJnGTcRijpGXOVXWpIutwPrBSCrH8xre1cp+TTnbgB3xelY7020Yy/Uj1MEXaXbWv+VKm76BRJb7OlSVmH+WvPZxAJBhyWKBT+nFsdrkjHfH0rap6RL0nGcuMmGFKrFi3kuMjLzYSIh7ZPpBZF3SCNEtFZwm4ZV8p2QcUrSpUQzQAHcioMita1eBKCgVPBlyc6GzQUevXG+JfSZePnVP9xS4NE7uTsn1tCdPtloYJN2Q/MsSgSb0XJITsU4NEEbKOxxae4ikhHnTBbuxBCv6Y989o5nTAGYiy/G+M6mxdPjNOn+aiJX4IJKoE9aJVLWDoSeqoP6jfdWuOM1zWkfvp90Tfo9agMVw9SqEFnaP01SzxN/Yks9EKn1JXzq5E/W2tWQqQ3rcRe10vvd/5y1rHaB4XjT8jbcUukcdTLW6etWVbXGXQUs0CqxOOkqkfxx+Csd00NU1tD9PMJMIVJ9IteHzzX22BRsXIdhuuQ0RuZe2FBeXUny0+CIAo2k6buEvKmzRF MopKlJae 5PE9HlmIdlCzkutRDI558vsSuXaSiWboLSqH/HKew5rzc/47qXIZpR8l+P3vcI+Jn70PIhRBvZ14AJMdn+Mnf4tVXoOFHKnUM2fiohepbm66b+jktg+wvbGrKthoD6wej1kilY0xU+xPOP6qWbHtQ6T3T6tE0AfLgtM5lXhCsWu3+GPBaCQnYnSEOpwkp9UAUjB9lwxSKO0fWP+REQDJZCZJkgyUMjXYbBpx7ZA/P3paJlAhncH+x4Lj08PEbeSxg5nz1rmGe7DRdxNhH7I/nCsWb6w== 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: Create a new layer for the in-table PTE manipulation APIs. For now, The existing API is prefixed with double underscore to become the arch-private API and the public API is just a simple wrapper that calls the private API. The public API implementation will subsequently be used to transparently manipulate the contiguous bit where appropriate. But since there are already some contig-aware users (e.g. hugetlb, kernel mapper), we must first ensure those users use the private API directly so that the future contig-bit manipulations in the public API do not interfere with those existing uses. No behavioural changes intended. Signed-off-by: Ryan Roberts --- arch/arm64/include/asm/pgtable.h | 15 +++++++++++---- arch/arm64/mm/hugetlbpage.c | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 450428b11c49..2fcc3b19c873 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -958,11 +958,11 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ /* - * ptep_set_wrprotect - mark read-only while trasferring potential hardware + * __ptep_set_wrprotect - mark read-only while trasferring potential hardware * dirty status (PTE_DBM && !PTE_RDONLY) to the software PTE_DIRTY bit. */ -#define __HAVE_ARCH_PTEP_SET_WRPROTECT -static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long address, pte_t *ptep) +static inline void __ptep_set_wrprotect(struct mm_struct *mm, + unsigned long address, pte_t *ptep) { pte_t old_pte, pte; @@ -980,7 +980,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres static inline void pmdp_set_wrprotect(struct mm_struct *mm, unsigned long address, pmd_t *pmdp) { - ptep_set_wrprotect(mm, address, (pte_t *)pmdp); + __ptep_set_wrprotect(mm, address, (pte_t *)pmdp); } #define pmdp_establish pmdp_establish @@ -1159,6 +1159,13 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma, return __ptep_clear_flush_young(vma, addr, ptep); } +#define __HAVE_ARCH_PTEP_SET_WRPROTECT +static inline void ptep_set_wrprotect(struct mm_struct *mm, + unsigned long addr, pte_t *ptep) +{ + __ptep_set_wrprotect(mm, addr, ptep); +} + #endif /* !__ASSEMBLY__ */ #endif /* __ASM_PGTABLE_H */ diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 931a17f3c3fb..7d5eb71db396 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -511,7 +511,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm, pte_t pte; if (!pte_cont(READ_ONCE(*ptep))) { - ptep_set_wrprotect(mm, addr, ptep); + __ptep_set_wrprotect(mm, addr, ptep); return; } -- 2.25.1