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.mari...@arm.com> Cc: Will Deacon <w...@kernel.org> Cc: Madhavan Srinivasan <ma...@linux.ibm.com> Cc: Nicholas Piggin <npig...@gmail.com> Cc: Paul Walmsley <paul.walms...@sifive.com> Cc: Palmer Dabbelt <pal...@dabbelt.com> Cc: Gerald Schaefer <gerald.schae...@linux.ibm.com> Cc: Heiko Carstens <h...@linux.ibm.com> Cc: Peter Zijlstra <pet...@infradead.org> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Ingo Molnar <mi...@redhat.com> Cc: Andrew Morton <a...@linux-foundation.org> Cc: linux-arm-ker...@lists.infradead.org Cc: linux-ker...@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-ri...@lists.infradead.org Cc: linux-s...@vger.kernel.org Cc: linux...@kvack.org 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