arm64: crash_core: Export MODULES, VMALLOC, and VMEMMAP ranges
authorHuang Shijie <shijie@os.amperecomputing.com>
Wed, 9 Feb 2022 09:26:42 +0000 (09:26 +0000)
committerWill Deacon <will@kernel.org>
Mon, 7 Mar 2022 21:25:47 +0000 (21:25 +0000)
The following interrelated ranges are needed by the kdump crash tool:
MODULES_VADDR ~ MODULES_END,
VMALLOC_START ~ VMALLOC_END,
VMEMMAP_START ~ VMEMMAP_END

Since these values change from time to time, it is preferable to export
them via vmcoreinfo than to change the crash's code frequently.

Signed-off-by: Huang Shijie <shijie@os.amperecomputing.com>
Link: https://lore.kernel.org/r/20220209092642.9181-1-shijie@os.amperecomputing.com
Signed-off-by: Will Deacon <will@kernel.org>
Documentation/admin-guide/kdump/vmcoreinfo.rst
arch/arm64/kernel/crash_core.c

index 3861a25faae18e7b44126b21f7c807f1fdd54b07..a339af45a22ed0b6cab647510054a79f6535766c 100644 (file)
@@ -494,6 +494,14 @@ architecture which is used to lookup the page-tables for the Virtual
 addresses in the higher VA range (refer to ARMv8 ARM document for
 more details).
 
+MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLOC_END|VMEMMAP_START|VMEMMAP_END
+-------------
+
+Used to get the correct ranges:
+       MODULES_VADDR ~ MODULES_END-1 : Kernel module space.
+       VMALLOC_START ~ VMALLOC_END-1 : vmalloc() / ioremap() space.
+       VMEMMAP_START ~ VMEMMAP_END-1 : vmemmap region, used for struct page array.
+
 arm
 ===
 
index 314391a156ee6a6b9f4e28413dd4e4c89cf866cf..2b65aae332ce9862f2f5ef0676587f5356f7aff5 100644 (file)
@@ -20,6 +20,12 @@ void arch_crash_save_vmcoreinfo(void)
 {
        VMCOREINFO_NUMBER(VA_BITS);
        /* Please note VMCOREINFO_NUMBER() uses "%d", not "%x" */
+       vmcoreinfo_append_str("NUMBER(MODULES_VADDR)=0x%lx\n", MODULES_VADDR);
+       vmcoreinfo_append_str("NUMBER(MODULES_END)=0x%lx\n", MODULES_END);
+       vmcoreinfo_append_str("NUMBER(VMALLOC_START)=0x%lx\n", VMALLOC_START);
+       vmcoreinfo_append_str("NUMBER(VMALLOC_END)=0x%lx\n", VMALLOC_END);
+       vmcoreinfo_append_str("NUMBER(VMEMMAP_START)=0x%lx\n", VMEMMAP_START);
+       vmcoreinfo_append_str("NUMBER(VMEMMAP_END)=0x%lx\n", VMEMMAP_END);
        vmcoreinfo_append_str("NUMBER(kimage_voffset)=0x%llx\n",
                                                kimage_voffset);
        vmcoreinfo_append_str("NUMBER(PHYS_OFFSET)=0x%llx\n",