Thanks to kernel commit 9d372c9fab34 "arm64: Add page size to the kernel image header", we don't need a heuristic to determine the pagesize on arm64. Keep the heuristic for older kernels, but try reading the header first. --- arm64.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/arm64.c b/arm64.c index 8cfb863d1bfe2..6187b96d25a4d 100644 --- a/arm64.c +++ b/arm64.c @@ -19,6 +19,7 @@ #include "defs.h" #include <elf.h> +#include <endian.h> #define NOT_IMPLEMENTED(X) error((X), "%s: function not implemented\n", __func__) @@ -98,6 +99,35 @@ arm64_init(int when) case PRE_GDB: if (!machdep->pagesize && + kernel_symbol_exists("_kernel_flags_le")) { + + /* + * Kerneldoc Documentation/arm64/booting.txt describes + * the kernel image header flags field. + */ + + value = le64toh(symbol_value("_kernel_flags_le")); + value = (value >> 1) & 3; + + switch(value) + { + case 0: + break; + case 1: + machdep->pagesize = 4096; + break; + case 2: + /* TODO: machdep->pagesize = 16384; */ + error(FATAL, "16K pages not supported."); + break; + case 3: + machdep->pagesize = 65536; + break; + } + + } + + if (!machdep->pagesize && kernel_symbol_exists("swapper_pg_dir") && kernel_symbol_exists("idmap_pg_dir")) { value = symbol_value("swapper_pg_dir") - -- 2.4.3 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility