[RFC 0/2] mm/ptdump: Drop assumption that pxd_val() is u64
From: Anshuman Khandual
Date: Mon Mar 10 2025 - 05:59:23 EST
Last argument passed down in note_page() is u64 assuming pxd_val() returned
value (all page table levels) is 64 bit - which might not be the case going
ahead when D128 page tables is enabled on arm64 platform. Besides pxd_val()
is very platform specific and its type should not be assumed in generic MM.
This series splits note_page() into individual page table level specific
callbacks which accepts corresponding pxd_t page table entry as an argument
instead and later all subscribing platforms could derive pxd_val() from the
entries as required and proceed as before.
Page table entry's value, mask and protection are represented with pteval_t
not u64 that has been assumed while dumping the page table entries on arm64
platform. Replace such u64 instances with pteval_t instead as expected.
This series has been lightly tested on arm64 platform but it does build on
other relevant platforms (v6.14-rc5).
Some questions:
- Is there a better method to address this problem than splitting current
note_page() into multiple call backs as proposed here ?
- This replaces note_page(st, 0, -1, 0) with note_page_pte(st, 0, pte_zero)
Is that problematic ? Does level = -1 has got a special meaning ? Should
level = -1 case be handled differently possibly via a separate callback ?
Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
Cc: Will Deacon <will@xxxxxxxxxx>
Cc: Madhavan Srinivasan <maddy@xxxxxxxxxxxxx>
Cc: Nicholas Piggin <npiggin@xxxxxxxxx>
Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx>
Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx>
Cc: Gerald Schaefer <gerald.schaefer@xxxxxxxxxxxxx>
Cc: Heiko Carstens <hca@xxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: linuxppc-dev@xxxxxxxxxxxxxxxx
Cc: linux-riscv@xxxxxxxxxxxxxxxxxxx
Cc: linux-s390@xxxxxxxxxxxxxxx
Cc: linux-mm@xxxxxxxxx
Anshuman Khandual (2):
mm/ptdump: Split note_page() into level specific callbacks
arm64/ptdump: Replace u64 with pteval_t
arch/arm64/include/asm/ptdump.h | 22 ++++++++++++-----
arch/arm64/mm/ptdump.c | 41 ++++++++++++++++++++++++++++---
arch/powerpc/mm/ptdump/ptdump.c | 37 ++++++++++++++++++++++++++--
arch/riscv/mm/ptdump.c | 37 ++++++++++++++++++++++++++--
arch/s390/mm/dump_pagetables.c | 37 ++++++++++++++++++++++++++--
arch/x86/mm/dump_pagetables.c | 31 +++++++++++++++++++++++-
include/linux/ptdump.h | 7 ++++--
mm/ptdump.c | 43 +++++++++++++++++++++++++--------
8 files changed, 226 insertions(+), 29 deletions(-)
--
2.25.1