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. A similar problem exists for effective_prot(), although it is restricted to x86 platform.
This series splits note_page() and effective_prot() into individual page table level specific callbacks which accepts corresponding pxd_t page table entry as an argument instead and later on all subscribing platforms could derive pxd_val() from the table entries as required and proceed as before. Define ptdesc_t type which describes the basic page table descriptor layout on arm64 platform. Subsequently all level specific pxxval_t descriptors are derived from ptdesc_t thus establishing a common original format, which can also be appropriate for page table entries, masks and protection values etc which are used at all page table levels. This series has been tested on arm64 platform but it does build on other relevant platforms (v6.15-rc1). Changes in V2: - Added a patch to split effective_prot() callback per Alexander - Added a patch to define ptdesc_t data type on arm64 platform per Ryan Changes in V1: https://lore.kernel.org/all/[email protected]/ - Added note_page_flush() callback and implemented the same on all subscribing platforms - Moved note_page() argument change from u64 to pteval_t on arm64 platform from second patch to the first patch instead Changes in RFC: https://lore.kernel.org/all/[email protected]/ Cc: Catalin Marinas <[email protected]> Cc: Will Deacon <[email protected]> Cc: Steven Price <[email protected]> Cc: Ryan Roberts <[email protected]> Cc: Madhavan Srinivasan <[email protected]> Cc: Nicholas Piggin <[email protected]> Cc: Paul Walmsley <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Gerald Schaefer <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Alexander Gordeev <[email protected]> Cc: Andrew Morton <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Anshuman Khandual (3): mm/ptdump: Split note_page() into level specific callbacks mm/ptdump: Split effective_prot() into level specific callbacks arm64/mm: Define ptdesc_t arch/arm64/include/asm/pgtable-types.h | 20 +++++--- arch/arm64/include/asm/ptdump.h | 24 ++++++--- arch/arm64/kernel/efi.c | 4 +- arch/arm64/kernel/pi/map_kernel.c | 2 +- arch/arm64/kernel/pi/map_range.c | 4 +- arch/arm64/kernel/pi/pi.h | 2 +- arch/arm64/mm/mmap.c | 2 +- arch/arm64/mm/ptdump.c | 50 ++++++++++++++++-- arch/powerpc/mm/ptdump/ptdump.c | 46 ++++++++++++++++- arch/riscv/mm/ptdump.c | 46 ++++++++++++++++- arch/s390/mm/dump_pagetables.c | 46 ++++++++++++++++- arch/x86/mm/dump_pagetables.c | 71 +++++++++++++++++++++++++- include/linux/ptdump.h | 15 ++++-- mm/ptdump.c | 62 ++++++++++++++-------- 14 files changed, 339 insertions(+), 55 deletions(-) -- 2.25.1
