From: Anshuman Khandual <anshuman.khandual@arm.com>
To: David Hildenbrand <david@redhat.com>, Dev Jain <dev.jain@arm.com>,
linux-mm@kvack.org
Cc: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm/ptdump: Replace READ_ONCE() with standard page table accessors
Date: Tue, 30 Sep 2025 12:30:06 +0530 [thread overview]
Message-ID: <1f3c8fe8-cff0-4e3e-bea8-285b00fc7a5d@arm.com> (raw)
In-Reply-To: <f0f0479a-fdab-4f42-9600-5d7b44a73f4e@redhat.com>
On 30/09/25 12:11 PM, David Hildenbrand wrote:
> On 30.09.25 06:37, Dev Jain wrote:
>>
>> On 30/09/25 8:22 am, Anshuman Khandual wrote:
>>> Replace READ_ONCE() with standard page table accessors i.e pxdp_get() which
>>> anyways default into READ_ONCE() in cases where platform does not override.
>>>
>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>> Cc: David Hildenbrand <david@redhat.com>
>>> Cc: linux-mm@kvack.org
>>> Cc: linux-kernel@vger.kernel.org
>>> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
>>> ---
>>> mm/ptdump.c | 8 ++++----
>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/mm/ptdump.c b/mm/ptdump.c
>>> index b600c7f864b8..18861501b533 100644
>>> --- a/mm/ptdump.c
>>> +++ b/mm/ptdump.c
>>> @@ -31,7 +31,7 @@ static int ptdump_pgd_entry(pgd_t *pgd, unsigned long addr,
>>> unsigned long next, struct mm_walk *walk)
>>> {
>>> struct ptdump_state *st = walk->private;
>>> - pgd_t val = READ_ONCE(*pgd);
>>> + pgd_t val = pgdp_get(pgd);
>>> #if CONFIG_PGTABLE_LEVELS > 4 && \
>>> (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
>>> @@ -54,7 +54,7 @@ static int ptdump_p4d_entry(p4d_t *p4d, unsigned long addr,
>>> unsigned long next, struct mm_walk *walk)
>>> {
>>> struct ptdump_state *st = walk->private;
>>> - p4d_t val = READ_ONCE(*p4d);
>>> + p4d_t val = p4dp_get(p4d);
>>> #if CONFIG_PGTABLE_LEVELS > 3 && \
>>> (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
>>> @@ -77,7 +77,7 @@ static int ptdump_pud_entry(pud_t *pud, unsigned long addr,
>>> unsigned long next, struct mm_walk *walk)
>>> {
>>> struct ptdump_state *st = walk->private;
>>> - pud_t val = READ_ONCE(*pud);
>>> + pud_t val = pudp_get(pud);
>>> #if CONFIG_PGTABLE_LEVELS > 2 && \
>>> (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
>>> @@ -100,7 +100,7 @@ static int ptdump_pmd_entry(pmd_t *pmd, unsigned long addr,
>>> unsigned long next, struct mm_walk *walk)
>>> {
>>> struct ptdump_state *st = walk->private;
>>> - pmd_t val = READ_ONCE(*pmd);
>>> + pmd_t val = pmdp_get(pmd);
>>
>> I believe this should go through pmdp_get_lockless(). I can see in pgtable.h that
>> some magic is required on some arches to decode the pmd correctly in case walking
>> without locks.
>
> pmdp_get_lockless() is a nasty thingy to handle selected 32bit architectures.
>
> But given that we're using ptep_get_lockless() in ptdump_pmd_entry() it probably wouldn't hurt to use pmdp_get_lockless() here.
>
> Staring at ARCH_HAS_PTDUMP, I don't think any 32bit arch would actually end up compiling ptdump.c.
>
> E.g., on x86 only X86_64 ends up selecting ARCH_HAS_PTDUMP.
>
pxdp_get_lockless() not really required here, let's stick with pxdp_get() instead.
next prev parent reply other threads:[~2025-09-30 7:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-30 2:52 [PATCH] mm/ptdump: Replace READ_ONCE() with standard page table accessors Anshuman Khandual
2025-09-30 4:37 ` Dev Jain
2025-09-30 6:41 ` David Hildenbrand
2025-09-30 7:00 ` Anshuman Khandual [this message]
2025-09-30 14:43 ` David Hildenbrand
2025-09-30 16:08 ` Dev Jain
2025-09-30 14:30 ` Lance Yang
2025-09-30 18:21 ` SeongJae Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1f3c8fe8-cff0-4e3e-bea8-285b00fc7a5d@arm.com \
--to=anshuman.khandual@arm.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.