v7
2026-10-09
kdump 跳过固件保留内存减小 vmcore · v7
v7 新增 MEMBLOCK_NODUMP,使 kdump 忽略固件保留内存,仅保留可复用 CMA。
原始补丁链接
子 Patch(9)
1/9
riscv: build crash_mem ranges from memblock instead of resource tree
RISC-V crash 内存范围改用 for_each_mem_range 遍历 memblock 而非资源树,并让 CRASH_DUMP 选择 ARCH_KEEP_MEMBLOCK,为后续用 MEMBLOCK_NODUMP 过滤 vmcore 保留区做准备。
2/9
crash_core: fold duplicated memblock arch hooks into the weak default
将 arm64、LoongArch、RISC-V 重复的 arch_get_system_nr_ranges/arch_crash_populate_cmem memblock 遍历并入 crash_core.c 的 __weak 默认实现,删除架构副本。
3/9
crash_core: serialize crash header preparation against hotplug
kexec_file_load 准备 crash header 时持 device_hotplug_lock,避免两遍统计间热插拔改变区间数致 cmem->ranges 溢出;x86 调 __crash_prepare_headers 防递归锁。
4/9
crash_core: replace for_each_mem_range() with for_each_mem_region()
weak 实现改用 for_each_mem_region 遍历并暴露 flags,新增 crash_should_skip_region 显式过滤 MEMBLOCK_NOMAP,为后续扩展跳过 NODUMP 等条件铺路。
5/9
memblock: introduce MEMBLOCK_NODUMP flag
新增 MEMBLOCK_NODUMP 标志,标记无需进入 kdump vmcore 的保留内存;释放保留内存时清标志,CMA 等可复用区不得标记,供 DT 侧过滤使用。
6/9
of: reserved_mem: add dumpable flag to opt-in vmcore
为 struct reserved_mem 增加 dumpable 标志控制是否进 vmcore,默认 false,CMA 在 rmem_cma_setup 置 true;后续据此打 MEMBLOCK_NODUMP 并检查 /memreserve 重叠。
7/9
of: reserved_mem: mark /reserved-memory entries with MEMBLOCK_NODUMP
在 CONFIG_CRASH_DUMP 下将非 dumpable 的 /reserved-memory 区域标记 MEMBLOCK_NODUMP,使 kdump 省略;非 kdump 内核避免因 NODUMP 边界拆分 memblock.memory。
8/9
of: reserved_mem: mark /memreserve/ entries as MEMBLOCK_NODUMP
将 /memreserve 启动器/固件保留项标记 MEMBLOCK_NODUMP 以从 vmcore 排除;若与 CMA 等 dumpable 区域重叠则不标记,避免丢弃可能含崩溃分析数据的页。
9/9
crash_core: skip MEMBLOCK_NODUMP regions when building vmcore ELF header
crash_should_skip_region 增加 MEMBLOCK_NODUMP 判断,构建 vmcore ELF header 时跳过 GPU/DSP 等保留区,减小 vmcore 体积并缩短抓取时间。