* + arm64-mm-improve-comment-in-contpte_ptep_get_lockless.patch added to mm-unstable branch
@ 2024-02-26 17:51 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2024-02-26 17:51 UTC (permalink / raw)
To: mm-commits, mark.rutland, jhubbard, david, catalin.marinas,
ryan.roberts, akpm
The patch titled
Subject: arm64/mm: improve comment in contpte_ptep_get_lockless()
has been added to the -mm mm-unstable branch. Its filename is
arm64-mm-improve-comment-in-contpte_ptep_get_lockless.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/arm64-mm-improve-comment-in-contpte_ptep_get_lockless.patch
This patch will later appear in the mm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Ryan Roberts <ryan.roberts@arm.com>
Subject: arm64/mm: improve comment in contpte_ptep_get_lockless()
Date: Mon, 26 Feb 2024 12:03:21 +0000
Make clear the atmicity/consistency requirements of the API and how we
achieve them.
Link: https://lore.kernel.org/linux-mm/Zc-Tqqfksho3BHmU@arm.com/
Link: https://lkml.kernel.org/r/20240226120321.1055731-3-ryan.roberts@arm.com
Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/arm64/mm/contpte.c | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
--- a/arch/arm64/mm/contpte.c~arm64-mm-improve-comment-in-contpte_ptep_get_lockless
+++ a/arch/arm64/mm/contpte.c
@@ -183,16 +183,20 @@ EXPORT_SYMBOL_GPL(contpte_ptep_get);
pte_t contpte_ptep_get_lockless(pte_t *orig_ptep)
{
/*
- * Gather access/dirty bits, which may be populated in any of the ptes
- * of the contig range. We may not be holding the PTL, so any contiguous
- * range may be unfolded/modified/refolded under our feet. Therefore we
- * ensure we read a _consistent_ contpte range by checking that all ptes
- * in the range are valid and have CONT_PTE set, that all pfns are
- * contiguous and that all pgprots are the same (ignoring access/dirty).
- * If we find a pte that is not consistent, then we must be racing with
- * an update so start again. If the target pte does not have CONT_PTE
- * set then that is considered consistent on its own because it is not
- * part of a contpte range.
+ * The ptep_get_lockless() API requires us to read and return *orig_ptep
+ * so that it is self-consistent, without the PTL held, so we may be
+ * racing with other threads modifying the pte. Usually a READ_ONCE()
+ * would suffice, but for the contpte case, we also need to gather the
+ * access and dirty bits from across all ptes in the contiguous block,
+ * and we can't read all of those neighbouring ptes atomically, so any
+ * contiguous range may be unfolded/modified/refolded under our feet.
+ * Therefore we ensure we read a _consistent_ contpte range by checking
+ * that all ptes in the range are valid and have CONT_PTE set, that all
+ * pfns are contiguous and that all pgprots are the same (ignoring
+ * access/dirty). If we find a pte that is not consistent, then we must
+ * be racing with an update so start again. If the target pte does not
+ * have CONT_PTE set then that is considered consistent on its own
+ * because it is not part of a contpte range.
*/
pgprot_t orig_prot;
_
Patches currently in -mm which might be from ryan.roberts@arm.com are
arm64-mm-export-contpte-symbols-only-to-gpl-users.patch
arm64-mm-improve-comment-in-contpte_ptep_get_lockless.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-02-26 17:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-26 17:51 + arm64-mm-improve-comment-in-contpte_ptep_get_lockless.patch added to mm-unstable branch Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.