From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 570323939B1 for ; Sat, 28 Feb 2026 11:17:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772277478; cv=none; b=P3iBTlWXXPDrRKHxF8IgxNFt3kFmP10KnpMTGlpee/PJhBKLbKOm7lb4wu+2se1kY5wW3qOG0npkUROOw2S4T7cRoEsK1c+CgvKITqCVBhVK+HLQZcd3jKYLTHg5spZxV2qZwFL806qG+isJCL3TConhpyhpgNcC9jZKnrlbcSo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772277478; c=relaxed/simple; bh=jZWXF3FSqtf+aARQ2Sqm5G5WYHMhSQtLomtx/zb4iPU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=n0E6x3THG6Xt+THIVa9OkuZ8s4s1BlU5Mdwn5q4s7Sgm7U/HqTO7OWk4gqGfeoWAK0woxRZXMBuYSmafhKMrbtpG+OqKUVLIJfLYxP4VwAxvj0CJXYZlGBicrpVc/tP3j8yF8/Ia6xNx5O3u/EVPgbc273q5rjQa++zJd9AuYEk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q5i3/kOm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Q5i3/kOm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22147C116D0; Sat, 28 Feb 2026 11:17:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772277477; bh=jZWXF3FSqtf+aARQ2Sqm5G5WYHMhSQtLomtx/zb4iPU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Q5i3/kOmW/i0sUqzxJ3FKLi2yeBskmRPGb6DY6Ec1H+TYDc/Qrhdr5WHM/I2q1WO0 Z7YdJeXtqkKmjW15QmTb1pbAicnNyXc8qgKFxFJ2v0wCr/p31kOfMGmtsw+MTJXnT7 50phJM1WxA+FvNNnksGF0NXwd2PY0vuPXebF0YEuH8ZqG3CQW4tDVyWQOmDc4/ZFcJ MuaQHxrEtdTAE/GH/Xgm1Wy0nwf1+pP6K30ZENYjDjJKyWJckKf6wLEneM6BOgg7mz 6O4loYJhwm23/jqut/hEvS3Q6xIXrMak9UDUMMkfq1ux7Ca6bAz7EVS1XaedQg4Snz irg8fkIn0Ezuw== Date: Sat, 28 Feb 2026 13:17:51 +0200 From: Mike Rapoport To: Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, Catalin Marinas , Will Deacon , Ryan Roberts , Mark Rutland , Lorenzo Stoakes , Andrew Morton , David Hildenbrand , Linu Cherian , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC V1 09/16] arm64/mm: Route all pgtable reads via ptdesc_get() Message-ID: References: <20260224051153.3150613-1-anshuman.khandual@arm.com> <20260224051153.3150613-10-anshuman.khandual@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260224051153.3150613-10-anshuman.khandual@arm.com> Hi Anshuman, On Tue, Feb 24, 2026 at 10:41:46AM +0530, Anshuman Khandual wrote: > Define arm64 platform specific implementations for new pXdp_get() helpers. > These resolve into READ_ONCE(), thus ensuring required single copy atomic > semantics for the page table entry reads. > > In future this infrastructure can be used for D128 to maintain single copy > atomicity semantics with inline asm blocks. > > Cc: Catalin Marinas > Cc: Will Deacon > Cc: Ryan Roberts > Cc: Mark Rutland > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual > --- > arch/arm64/include/asm/pgtable.h | 28 +++++++++++++++++++++++++++- > 1 file changed, 27 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h > index 257af1c3015d..804ef49aea88 100644 > --- a/arch/arm64/include/asm/pgtable.h > +++ b/arch/arm64/include/asm/pgtable.h > @@ -84,6 +84,32 @@ static inline void arch_leave_lazy_mmu_mode(void) > arch_flush_lazy_mmu_mode(); > } > > +#define ptdesc_get(x) READ_ONCE(x) This will be confusing with 'struct ptdesc' APIs, maybe ptent_get()? > +#define pmdp_get pmdp_get > +static inline pmd_t pmdp_get(pmd_t *pmdp) > +{ > + return ptdesc_get(*pmdp); > +} > + > +#define pudp_get pudp_get > +static inline pud_t pudp_get(pud_t *pudp) > +{ > + return ptdesc_get(*pudp); > +} > + > +#define p4dp_get p4dp_get > +static inline p4d_t p4dp_get(p4d_t *p4dp) > +{ > + return ptdesc_get(*p4dp); > +} > + > +#define pgdp_get pgdp_get > +static inline pgd_t pgdp_get(pgd_t *pgdp) > +{ > + return ptdesc_get(*pgdp); > +} > + > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > #define __HAVE_ARCH_FLUSH_PMD_TLB_RANGE > > @@ -384,7 +410,7 @@ static inline void __set_pte(pte_t *ptep, pte_t pte) > > static inline pte_t __ptep_get(pte_t *ptep) > { > - return READ_ONCE(*ptep); > + return ptdesc_get(*ptep); > } > > extern void __sync_icache_dcache(pte_t pteval); > -- > 2.43.0 > -- Sincerely yours, Mike.