From: Wandun <chenwandun1@gmail.com>
To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org,
m.szyprowski@samsung.com
Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org,
palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr,
tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
saravanak@kernel.org, akpm@linux-foundation.org,
pasha.tatashin@soleen.com, pratyush@kernel.org,
ruirui.yang@linux.dev, robin.murphy@arm.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
kexec@lists.infradead.org, linux-mm@kvack.org,
iommu@lists.linux.dev
Subject: Re: [PATCH v9 0/8] kdump: reduce vmcore size and capture time
Date: Mon, 9 Nov 2026 20:23:16 +0800 [thread overview]
Message-ID: <7773d026-4aef-4169-866a-71ec9a91da21@gmail.com> (raw)
In-Reply-To: <20261021083011.2170525-1-chenwandun1@gmail.com>
On 10/21/26 16:30, Wandun Chen wrote:
> From: Wandun Chen <chenwandun@lixiang.com>
>
> 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.
>
> ACPI systems already filter reserved memory out of the vmcore through
> their existing path: firmware reports those carveouts as unusable in
> the EFI memory map, they get MEMBLOCK_NOMAP set in memblock.memory
> (is_usable_memory(), efi-init.c), and the ELF header builder has
> always skipped nomap regions; only DT-based systems currently fail
> to filter these regions, which is what this series addresses.
>
> This series introduces a MEMBLOCK_NODUMP flag (suggested by Rob) in
> memblock to filter reserved memory on DT-based architectures. A new
> flag is needed because MEMBLOCK_NOMAP can only express regions without
> a linear mapping, while MEMBLOCK_NODUMP can filter regions that are
> linearly mapped. Reserved regions are marked MEMBLOCK_NODUMP by default
> so kdump omits them; reusable CMA regions are different 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.
>
> The series is based on linux-next and is organized as follows:
>
> Patches 1-3: Preparation and bugfixes: switch riscv crash_mem to
> memblock, fold the duplicated per-arch memblock walks
> into the weak defaults, and serialize crash header
> preparation against memory hotplug.
> Patches 4-7: NODUMP infrastructure: switch crash_core to
> for_each_mem_region(), introduce the MEMBLOCK_NODUMP
> flag, add a dumpable flag to struct reserved_mem, and
> mark /reserved-memory entries with MEMBLOCK_NODUMP.
> Patch 8: Skip MEMBLOCK_NODUMP regions when building the vmcore
> ELF header.
Hi all,
A gentle ping on this series.
I'd appreciate any further feedback, particularly on the
MEMBLOCK_NODUMP discussion and the issues raised in the Sashiko
review.
Please let me know if there are any other concerns or suggestions
before I prepare the next revision.
Thanks,
Wandun
>
> v8 --> v9:
> 1. Patch 7: Avoid a potential boot panic on SH when NODUMP marking requires
> memblock resizing before it is allowed, found by Sashiko in [1]. SH supports
> neither CONFIG_KEXEC_FILE nor CONFIG_CRASH_HOTPLUG, so skip marking when
> both are disabled.
>
> v6 --> v8 (v7 mainly tried to fix the initrd issue on release in v6,
> that approach is superseded here):
> 1. Stop marking /memreserve/ regions with NODUMP. v6 marked
> /memreserve/ regions with NODUMP. But a bootloader may specify
> a /memreserve/ entry for memory that the kernel later frees
> (e.g. the initrd), and those pages would then be wrongly
> filtered out of the vmcore after being reused as normal memory.
> The v7 fix (clearing the flag in free_reserved_area()) caused
> a lockless runtime mutation of memblock.memory [2]. Better solutions
> exist but need extra preparation, so temporarily dropped the patch
> that introduced the problem to keep this series simple in v8.
> 2. Fix a build failure in patch 2 with both ARCH_KEEP_MEMBLOCK and
> MEMORY_HOTPLUG are unset. There the memblock arrays live in
> .init.data, and the weak defaults referencing them create section
> mismatches, which turn into build errors when SECTION_MISMATCH_WARN_ONLY
> is also unset.
> 3. RISCV recently gained crash hotplug support, so adapt its handler
> like x86 in patch 3: use __crash_prepare_headers() instead of
> crash_prepare_headers() to avoid self-deadlock.
> 4. Update the cover letter per review feedback: describe how ACPI
> systems filter reserved memory and why a new flag is needed
> instead of reusing NOMAP.
>
> v6 --> v7:
> 1. Fix a stale MEMBLOCK_NODUMP flag issue [3]. Memory reserved and
> marked as NODUMP may later be freed (the initrd, for example),
> so the NODUMP flag must be cleared accordingly. Since the fix is
> part of the NODUMP infrastructure introduced by patch 5, it has
> been folded into that patch.
> 2. Drop the "generic" related description in the cover letter.
> 3. Collect the Acked-by and Reviewed-by tags received during the v6
> review (thanks to Baoquan, Mike, Rob and Marek). Patch 5 is the
> only one without a tag, as its Reviewed-by was dropped when the
> fix was folded in.
> 4. Drop patch 1 of v6, which has been merged separately.
>
>
> v5 --> v6:
> 1. Serialize crash header preparation against memory hotplug to avoid
> out-of-bounds or use-after-free issues.
> 2. MEMBLOCK_NODUMP marking is now done after memblock allows resizing,
> avoiding a panic from too few regions before resize is permitted.
> 3. Reordered the patches, put pre-existing bugfixes earlier in the series.
>
> [1] https://sashiko.dev/#/patchset/20261016061549.4181390-1-chenwandun1@gmail.com?part=7
> [2] https://lore.kernel.org/lkml/20260922090252.B01541F000FF@smtp.kernel.org/
> [3] https://sashiko.dev/#/message/20260917220750.GA4013814-robh%40kernel.org
>
> v5: https://lore.kernel.org/lkml/20260806093519.2907771-1-chenwandun1@gmail.com/
> v4: https://lore.kernel.org/lkml/20260630074715.4126796-1-chenwandun1@gmail.com/
>
> Wandun Chen (8):
> riscv: build crash_mem ranges from memblock instead of resource tree
> crash_core: fold duplicated memblock arch hooks into the weak default
> crash_core: serialize crash header preparation against hotplug
> crash_core: replace for_each_mem_range() with for_each_mem_region()
> 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
> 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/crash.c | 2 +-
> arch/riscv/kernel/machine_kexec_file.c | 33 --------------
> arch/x86/kernel/crash.c | 2 +-
> drivers/of/fdt.c | 1 +
> drivers/of/of_private.h | 1 +
> drivers/of/of_reserved_mem.c | 18 ++++++++
> include/linux/crash_core.h | 2 +
> include/linux/memblock.h | 9 ++++
> include/linux/of_reserved_mem.h | 1 +
> kernel/crash_core.c | 53 +++++++++++++++++++++-
> kernel/dma/contiguous.c | 1 +
> mm/memblock.c | 16 +++++++
> 15 files changed, 103 insertions(+), 94 deletions(-)
>
WARNING: multiple messages have this Message-ID (diff)
From: Wandun <chenwandun1@gmail.com>
To: robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org,
m.szyprowski@samsung.com
Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org,
palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr,
tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
saravanak@kernel.org, akpm@linux-foundation.org,
pasha.tatashin@soleen.com, pratyush@kernel.org,
ruirui.yang@linux.dev, robin.murphy@arm.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
kexec@lists.infradead.org, linux-mm@kvack.org,
iommu@lists.linux.dev
Subject: Re: [PATCH v9 0/8] kdump: reduce vmcore size and capture time
Date: Mon, 9 Nov 2026 20:23:16 +0800 [thread overview]
Message-ID: <7773d026-4aef-4169-866a-71ec9a91da21@gmail.com> (raw)
In-Reply-To: <20261021083011.2170525-1-chenwandun1@gmail.com>
On 10/21/26 16:30, Wandun Chen wrote:
> From: Wandun Chen <chenwandun@lixiang.com>
>
> 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.
>
> ACPI systems already filter reserved memory out of the vmcore through
> their existing path: firmware reports those carveouts as unusable in
> the EFI memory map, they get MEMBLOCK_NOMAP set in memblock.memory
> (is_usable_memory(), efi-init.c), and the ELF header builder has
> always skipped nomap regions; only DT-based systems currently fail
> to filter these regions, which is what this series addresses.
>
> This series introduces a MEMBLOCK_NODUMP flag (suggested by Rob) in
> memblock to filter reserved memory on DT-based architectures. A new
> flag is needed because MEMBLOCK_NOMAP can only express regions without
> a linear mapping, while MEMBLOCK_NODUMP can filter regions that are
> linearly mapped. Reserved regions are marked MEMBLOCK_NODUMP by default
> so kdump omits them; reusable CMA regions are different 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.
>
> The series is based on linux-next and is organized as follows:
>
> Patches 1-3: Preparation and bugfixes: switch riscv crash_mem to
> memblock, fold the duplicated per-arch memblock walks
> into the weak defaults, and serialize crash header
> preparation against memory hotplug.
> Patches 4-7: NODUMP infrastructure: switch crash_core to
> for_each_mem_region(), introduce the MEMBLOCK_NODUMP
> flag, add a dumpable flag to struct reserved_mem, and
> mark /reserved-memory entries with MEMBLOCK_NODUMP.
> Patch 8: Skip MEMBLOCK_NODUMP regions when building the vmcore
> ELF header.
Hi all,
A gentle ping on this series.
I'd appreciate any further feedback, particularly on the
MEMBLOCK_NODUMP discussion and the issues raised in the Sashiko
review.
Please let me know if there are any other concerns or suggestions
before I prepare the next revision.
Thanks,
Wandun
>
> v8 --> v9:
> 1. Patch 7: Avoid a potential boot panic on SH when NODUMP marking requires
> memblock resizing before it is allowed, found by Sashiko in [1]. SH supports
> neither CONFIG_KEXEC_FILE nor CONFIG_CRASH_HOTPLUG, so skip marking when
> both are disabled.
>
> v6 --> v8 (v7 mainly tried to fix the initrd issue on release in v6,
> that approach is superseded here):
> 1. Stop marking /memreserve/ regions with NODUMP. v6 marked
> /memreserve/ regions with NODUMP. But a bootloader may specify
> a /memreserve/ entry for memory that the kernel later frees
> (e.g. the initrd), and those pages would then be wrongly
> filtered out of the vmcore after being reused as normal memory.
> The v7 fix (clearing the flag in free_reserved_area()) caused
> a lockless runtime mutation of memblock.memory [2]. Better solutions
> exist but need extra preparation, so temporarily dropped the patch
> that introduced the problem to keep this series simple in v8.
> 2. Fix a build failure in patch 2 with both ARCH_KEEP_MEMBLOCK and
> MEMORY_HOTPLUG are unset. There the memblock arrays live in
> .init.data, and the weak defaults referencing them create section
> mismatches, which turn into build errors when SECTION_MISMATCH_WARN_ONLY
> is also unset.
> 3. RISCV recently gained crash hotplug support, so adapt its handler
> like x86 in patch 3: use __crash_prepare_headers() instead of
> crash_prepare_headers() to avoid self-deadlock.
> 4. Update the cover letter per review feedback: describe how ACPI
> systems filter reserved memory and why a new flag is needed
> instead of reusing NOMAP.
>
> v6 --> v7:
> 1. Fix a stale MEMBLOCK_NODUMP flag issue [3]. Memory reserved and
> marked as NODUMP may later be freed (the initrd, for example),
> so the NODUMP flag must be cleared accordingly. Since the fix is
> part of the NODUMP infrastructure introduced by patch 5, it has
> been folded into that patch.
> 2. Drop the "generic" related description in the cover letter.
> 3. Collect the Acked-by and Reviewed-by tags received during the v6
> review (thanks to Baoquan, Mike, Rob and Marek). Patch 5 is the
> only one without a tag, as its Reviewed-by was dropped when the
> fix was folded in.
> 4. Drop patch 1 of v6, which has been merged separately.
>
>
> v5 --> v6:
> 1. Serialize crash header preparation against memory hotplug to avoid
> out-of-bounds or use-after-free issues.
> 2. MEMBLOCK_NODUMP marking is now done after memblock allows resizing,
> avoiding a panic from too few regions before resize is permitted.
> 3. Reordered the patches, put pre-existing bugfixes earlier in the series.
>
> [1] https://sashiko.dev/#/patchset/20261016061549.4181390-1-chenwandun1@gmail.com?part=7
> [2] https://lore.kernel.org/lkml/20260922090252.B01541F000FF@smtp.kernel.org/
> [3] https://sashiko.dev/#/message/20260917220750.GA4013814-robh%40kernel.org
>
> v5: https://lore.kernel.org/lkml/20260806093519.2907771-1-chenwandun1@gmail.com/
> v4: https://lore.kernel.org/lkml/20260630074715.4126796-1-chenwandun1@gmail.com/
>
> Wandun Chen (8):
> riscv: build crash_mem ranges from memblock instead of resource tree
> crash_core: fold duplicated memblock arch hooks into the weak default
> crash_core: serialize crash header preparation against hotplug
> crash_core: replace for_each_mem_range() with for_each_mem_region()
> 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
> 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/crash.c | 2 +-
> arch/riscv/kernel/machine_kexec_file.c | 33 --------------
> arch/x86/kernel/crash.c | 2 +-
> drivers/of/fdt.c | 1 +
> drivers/of/of_private.h | 1 +
> drivers/of/of_reserved_mem.c | 18 ++++++++
> include/linux/crash_core.h | 2 +
> include/linux/memblock.h | 9 ++++
> include/linux/of_reserved_mem.h | 1 +
> kernel/crash_core.c | 53 +++++++++++++++++++++-
> kernel/dma/contiguous.c | 1 +
> mm/memblock.c | 16 +++++++
> 15 files changed, 103 insertions(+), 94 deletions(-)
>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2026-11-09 12:23 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 8:30 [PATCH v9 0/8] kdump: reduce vmcore size and capture time Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-21 8:30 ` [PATCH v9 1/8] riscv: build crash_mem ranges from memblock instead of resource tree Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-21 9:05 ` Jinjie Ruan
2026-10-21 9:05 ` Jinjie Ruan
2026-10-21 9:05 ` Jinjie Ruan
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 2/8] crash_core: fold duplicated memblock arch hooks into the weak default Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 3/8] crash_core: serialize crash header preparation against hotplug Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-21 9:10 ` Jinjie Ruan
2026-10-21 9:13 ` Jinjie Ruan
2026-10-21 9:13 ` Jinjie Ruan
2026-10-21 9:48 ` Wandun
2026-10-21 9:48 ` Wandun
2026-10-22 2:00 ` Jinjie Ruan
2026-10-22 2:00 ` Jinjie Ruan
2026-10-22 7:44 ` Wandun
2026-10-22 7:44 ` Wandun
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 4/8] crash_core: replace for_each_mem_range() with for_each_mem_region() Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 5/8] memblock: introduce MEMBLOCK_NODUMP flag Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 6/8] of: reserved_mem: add dumpable flag to opt-in vmcore Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 7/8] of: reserved_mem: mark /reserved-memory entries with MEMBLOCK_NODUMP Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 8:30 ` [PATCH v9 8/8] crash_core: skip MEMBLOCK_NODUMP regions when building vmcore ELF header Wandun Chen
2026-10-21 8:30 ` Wandun Chen
2026-10-22 8:33 ` sashiko-bot
2026-10-21 13:23 ` [PATCH v9 0/8] kdump: reduce vmcore size and capture time Rob Herring
2026-10-21 13:23 ` Rob Herring
2026-10-22 7:04 ` Wandun
2026-10-22 7:04 ` Wandun
2026-11-09 12:23 ` Wandun [this message]
2026-11-09 12:23 ` Wandun
2026-11-10 8:47 ` Mike Rapoport
2026-11-10 8:47 ` Mike Rapoport
2026-11-12 8:12 ` Wandun
2026-11-12 8:12 ` Wandun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7773d026-4aef-4169-866a-71ec9a91da21@gmail.com \
--to=chenwandun1@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alex@ghiti.fr \
--cc=aou@eecs.berkeley.edu \
--cc=baoquan.he@linux.dev \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=devicetree@vger.kernel.org \
--cc=hpa@zytor.com \
--cc=iommu@lists.linux.dev \
--cc=kernel@xen0n.name \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=loongarch@lists.linux.dev \
--cc=m.szyprowski@samsung.com \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=palmer@dabbelt.com \
--cc=pasha.tatashin@soleen.com \
--cc=pjw@kernel.org \
--cc=pratyush@kernel.org \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=rppt@kernel.org \
--cc=ruirui.yang@linux.dev \
--cc=saravanak@kernel.org \
--cc=tglx@kernel.org \
--cc=will@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.