----- Original Message -----
In fact,vmemmap not easy to calculated in crash-utility,if
CONFIG_RANDOMIZE_BASE is configured,memstart_addr will be changed since below codes:
[arm64_memblock_init]
348 vmemmap = ((struct page *)VMEMMAP_START - (memstart_addr >>
PAGE_SHIFT));
...
413 if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) {
414 extern u16 memstart_offset_seed;
415 u64 range = linear_region_size -
416 (memblock_end_of_DRAM() - memblock_start_of_DRAM());
417
418 /*
419 * If the size of the linear region exceeds, by a sufficient
420 * margin, the size of the region that the available physical
421 * memory spans, randomize the linear region as well.
422 */
423 if (memstart_offset_seed > 0 && range >=
ARM64_MEMSTART_ALIGN) {
424 range /= ARM64_MEMSTART_ALIGN;
425 memstart_addr -= ARM64_MEMSTART_ALIGN *
426 ((range * memstart_offset_seed) >>
16);
427 }
428 }
OK.
the reason i showed the "address_markers " is just to prove vmemmap and
ms->vmemmap_start is wrong.we'd better to do below change.
- vmemmap_start = (-vmemmap_size);
+ vmemmap_start = (-vmemmap_size - MEGABYTES(2));
This looks correct, although I've never seen a problem using the current
setting on 5.4 and later kernels. What happens on your system? Is your
system's memstart_addr within that low 2MB?
Thanks,
Dave