From: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> Fix for aarch64 with Linux v5.0 and later kernels that contains commit 91fc957c9b1d ("arm64/bpf: don't allocate BPF JIT programs in module memory") and the memory dump is captured by virsh dump. Without the patch, crash cannot find kimage_voffset so it fails to run, like as: # crash vmlinux Guest.dump ... WARNING: kimage_voffset cannot be determined from the dumpfile. Try using the command line option: --machdep kimage_voffset=<addr> ... crash: read error: kernel virtual address: ffff0000112db978 type: "possible" WARNING: cannot read cpu_possible_map ... crash: vmlinux and Guest.dump do not match! ... # This issue happens on the memory dump which is captured by virsh dump because kimage_voffset isn't stored if it's captured by virsh dump. Signed-off-by: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> --- arm64.c | 2 ++ defs.h | 3 +++ 2 files changed, 5 insertions(+) diff --git a/arm64.c b/arm64.c index 7662d71..0831231 100644 --- a/arm64.c +++ b/arm64.c @@ -242,6 +242,8 @@ arm64_init(int when) ms->modules_vaddr = ARM64_VA_START; if (kernel_symbol_exists("kasan_init")) ms->modules_vaddr += ARM64_KASAN_SHADOW_SIZE; + if (kernel_symbol_exists("bpf_jit_alloc_exec")) + ms->modules_vaddr += BPF_JIT_REGION_SIZE; ms->modules_end = ms->modules_vaddr + ARM64_MODULES_VSIZE -1; } diff --git a/defs.h b/defs.h index efa40b9..867da74 100644 --- a/defs.h +++ b/defs.h @@ -3164,6 +3164,9 @@ typedef signed int s32; #define ARM64_MODULES_VSIZE MEGABYTES(128) #define ARM64_KASAN_SHADOW_SIZE (1UL << (machdep->machspec->VA_BITS - 3)) +/* only used for v5.0 or later */ +#define BPF_JIT_REGION_SIZE MEGABYTES(128) + /* * The following 3 definitions are the original values, but are obsolete * for 3.17 and later kernels because they are now build-time calculations. -- 2.18.1 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility