@@ -358,7 +358,7 @@ void ptdump_check_wx(void)
.ptdump = {
.note_page = note_page,
.range = (struct ptdump_range[]) {
- {PAGE_OFFSET, ~0UL},
+ {_PAGE_OFFSET(vabits_actual), ~0UL},
{0, 0}
}
}
@@ -380,6 +380,8 @@ static int __init ptdump_init(void)
address_markers[KASAN_START_NR].start_address = KASAN_SHADOW_START;
#endif
ptdump_initialize();
+ if (VA_BITS > VA_BITS_MIN)
+ kernel_ptdump_info.base_addr = _PAGE_OFFSET(vabits_actual);
ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables");
return 0;
}
Configurations built with support for 52-bit virtual addressing can also run on CPUs that only support 48 bits of VA space, in which case only that part of swapper_pg_dir that represents the 48-bit addressable region is relevant, and everything else is ignored by the hardware. In a future patch, we will clone the top 2 pgd_t entries at the bottom, to support 52-bit VA configurations built for 16k pages and LPA2, where we cannot simply point TTBR1 to the pgd_t entries where they actually reside. However, we should avoid misinterpreting those cloned entries as describing the start of the 52-bit VA space when the hardware does not support that. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> --- arch/arm64/mm/ptdump.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)