Re: [PATCH v5 0/8] kdump: reduce vmcore size and capture time
Marek Szyprowski <[email protected]> Thu, 6 Aug 2026 12:11:50 +0200
| Newsgroups | dev.linux.lists.iommu,dev.linux.lists.loongarch,org.infradead.lists.kexec,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-riscv,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On 06.08.2026 11:35, Wandun Chen wrote: > From: Wandun Chen <[email protected]> > > On SoCs that carve out large firmware-owned reserved memory (GPU, > camera ISP, ...), kdump currently dumps those carveouts as part of > system RAM even though their contents are firmware state that is not > useful for kernel crash analysis. > > This series introduces a 'dumpable' flag on struct reserved_mem and a > MEMBLOCK_NODUMP flag in memblock to filter vmcore ELF header on DT-based > architectures (arm64, riscv, loongarch). Reserved regions default to > non-dumpable and are marked MEMBLOCK_NODUMP so kdump omits them; > reusable CMA regions are explicitly marked dumpable in rmem_cma_setup() > because their pages are handed back to the buddy allocator and may carry > crash-relevant data. > > Since the reserved memory regions are filtered out, the vmcore is > smaller in size and faster to produce. ACPI systems already filter > reserved memory out of the vmcore through their existing path; only > DT-based systems currently fail to filter these regions, which is what > this series addresses. The flag lives in memblock itself rather than > in a DT-only structure, so the mechanism is generic and both ACPI and > DT systems can benefit from it (suggested by Rob, thanks). > > The series is based on linux-next and is organized as follows: > Patches 1-2: Introduce MEMBLOCK_NODUMP in memblock and the dumpable > flag on struct reserved_mem. > Patches 3-4: Mark non-dumpable /reserved-memory and /memreserve/ > entries with MEMBLOCK_NODUMP. > Patch 5: Switch riscv to memblock so the NODUMP flag is visible > to the vmcore ELF header builder; add (KEXEC_FILE && > CRASH_DUMP) to riscv's ARCH_KEEP_MEMBLOCK condition. > Patches 6-8: Fold the duplicated per-arch memblock walks into the > weak defaults in crash_core, switch to > for_each_mem_region(), and exclude MEMBLOCK_NODUMP > regions from the vmcore ELF header. > > v4 --> v5: > 1. Rework the mechanism around a memblock-level MEMBLOCK_NODUMP flag > (suggested by Rob) instead of the v4 opt-in 'dumpable' flag on > DT-only struct reserved_mem. > > 2. Switch the riscv vmcore elf header preparation to use memblock > instead of the resource tree, aligning it with arm64 and loongarch, > so riscv also can exclude reserved memory from vmcore. > > 3. Deduplicate the vmcore elf header preparation: arm64, riscv and > loongarch open-coded the same logic, so fold it into shared > __weak defaults in crash_core. > > 4. Drop the v4 patch that saved /memreserve/ entries into the > reserved_mem array; /memreserve/ is now marked MEMBLOCK_NODUMP > directly. v5 looks much better, at least from the reserved memory regions perspective. > v3 --> v4: > 1. Rebase this series on v7.2-rc1. > 2. Add two cleanup patches (patch 02/03). > 3. Simplify patch 03 to avoid checking whether initial_boot_params is > NULL multiple times, suggested by Rob. > > v2 --> v3: > 1. Fix out-of-bounds issue if device tree lacks /reserved-memory node.[2] > 2. Fix UAF issue when alloc_reserved_mem_array() fails. > 3. Add some prepare patches. > > v1 --> v2: > 1. v1 added an opt-out DT property ('linux,no-dump'). Per Rob's > feedback [1], v2 drop that property and exclude reserve memory > by default. > 2. Split some prepared patches from the original patches. > 3. Address coding-style comments on patch 5 from Rob. > > [1] https://lore.kernel.org/lkml/[email protected]/ > [2] https://protect2.fireeye.com/v1/url?k=05b72ed7-643c3bed-05b6a598-74fe4860008a-295907342918bd15&q=1&e=c408484d-fdd8-4fe4-8eee-690e883afb73&u=https%3A%2F%2Fsashiko.dev%2F%23%2Fpatchset%2F20260520091844.592753-1-chenwandun%2540lixiang.com%3Fpart%3D4 > > Wandun Chen (8): > memblock: introduce MEMBLOCK_NODUMP flag > of: reserved_mem: add dumpable flag to opt-in vmcore > of: reserved_mem: mark /reserved-memory entries with MEMBLOCK_NODUMP > of: reserved_mem: mark /memreserve/ entries as MEMBLOCK_NODUMP > riscv: build crash_mem ranges from memblock instead of resource tree > crash_core: fold duplicated memblock arch hooks into the weak default > crash_core: replace for_each_mem_range() with for_each_mem_region() > crash_core: skip MEMBLOCK_NODUMP regions when building vmcore ELF > header > > arch/arm64/kernel/machine_kexec_file.c | 29 ------------------ > arch/loongarch/kernel/machine_kexec_file.c | 27 ----------------- > arch/riscv/Kconfig | 2 +- > arch/riscv/kernel/machine_kexec_file.c | 33 -------------------- > drivers/of/fdt.c | 2 ++ > drivers/of/of_private.h | 1 + > drivers/of/of_reserved_mem.c | 35 ++++++++++++++++++++++ > include/linux/memblock.h | 9 ++++++ > include/linux/of_reserved_mem.h | 1 + > kernel/crash_core.c | 34 +++++++++++++++++++-- > kernel/dma/contiguous.c | 1 + > mm/memblock.c | 16 ++++++++++ > 12 files changed, 98 insertions(+), 92 deletions(-) > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland