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 -------------- arch/x86/kernel/crash.c | 2 +- drivers/of/fdt.c | 2 + drivers/of/of_private.h | 2 + drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++ include/linux/crash_core.h | 2 + include/linux/memblock.h | 9 ++++ include/linux/of_reserved_mem.h | 1 + kernel/crash_core.c | 51 ++++++++++++++++++++-- kernel/dma/contiguous.c | 1 + mm/memblock.c | 17 ++++++++ 14 files changed, 131 insertions(+), 95 deletions(-)
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.
This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
reserved memory on DT-based architectures (arm64, riscv, loongarch).
Reserved regions default are marked MEMBLOCK_NODUMP 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.
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) [1].
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-4: Preparation and bugfixes: fix the missing HugeTLB
flagname, 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 5-9: 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 and /memreserve/ entries with
MEMBLOCK_NODUMP flag.
Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
header.
In v5, Sashiko found some pre-existing issues related to reserved-memory,
and has no dependency on this series, so these issues have been addressed
in a separate series [2].
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.
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.
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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
[2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
[3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
Meijing Zhao (1):
mm: memblock: add missing HugeTLB flag name
Wandun Chen (9):
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
of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
arch/x86/kernel/crash.c | 2 +-
drivers/of/fdt.c | 2 +
drivers/of/of_private.h | 2 +
drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
include/linux/crash_core.h | 2 +
include/linux/memblock.h | 9 ++++
include/linux/of_reserved_mem.h | 1 +
kernel/crash_core.c | 51 ++++++++++++++++++++--
kernel/dma/contiguous.c | 1 +
mm/memblock.c | 17 ++++++++
14 files changed, 131 insertions(+), 95 deletions(-)
--
2.43.0
On 9/2/26 15:31, 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.
>
> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
> reserved memory on DT-based architectures (arm64, riscv, loongarch).
> Reserved regions default are marked MEMBLOCK_NODUMP 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.
>
> 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) [1].
>
> 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-4: Preparation and bugfixes: fix the missing HugeTLB
> flagname, 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 5-9: 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 and /memreserve/ entries with
> MEMBLOCK_NODUMP flag.
> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> header.
Hi,
Gentle ping on the remaining patches of this series.
Patches 1, 7, 8 and 9 have been reviewed (thanks Mike and Marek);
Still looking for review on patches 2-6 and 10.
Would appreciate a look when you have a moment, happy to rework
anything based on feedback.
Best regards,
Wanun
>
> In v5, Sashiko found some pre-existing issues related to reserved-memory,
> and has no dependency on this series, so these issues have been addressed
> in a separate series [2].
>
> 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.
>
>
> 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.
>
> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
>
> Meijing Zhao (1):
> mm: memblock: add missing HugeTLB flag name
>
> Wandun Chen (9):
> 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
> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> arch/x86/kernel/crash.c | 2 +-
> drivers/of/fdt.c | 2 +
> drivers/of/of_private.h | 2 +
> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> include/linux/crash_core.h | 2 +
> include/linux/memblock.h | 9 ++++
> include/linux/of_reserved_mem.h | 1 +
> kernel/crash_core.c | 51 ++++++++++++++++++++--
> kernel/dma/contiguous.c | 1 +
> mm/memblock.c | 17 ++++++++
> 14 files changed, 131 insertions(+), 95 deletions(-)
>
Hi,
On Tue, Sep 15, 2026 at 09:01:07PM +0800, Wandun wrote:
> On 9/2/26 15:31, 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.
> >
> > This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
> > reserved memory on DT-based architectures (arm64, riscv, loongarch).
> > Reserved regions default are marked MEMBLOCK_NODUMP 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.
> >
> > 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) [1].
> >
> > 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-4: Preparation and bugfixes: fix the missing HugeTLB
> > flagname, 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 5-9: 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 and /memreserve/ entries with
> > MEMBLOCK_NODUMP flag.
> > Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> > header.
>
> Hi,
>
> Gentle ping on the remaining patches of this series.
> Patches 1, 7, 8 and 9 have been reviewed (thanks Mike and Marek);
> Still looking for review on patches 2-6 and 10.
I'm waiting for reviews from Baoquan and Dave for crash core patches before
applying this series.
> Would appreciate a look when you have a moment, happy to rework
> anything based on feedback.
>
> Best regards,
> Wanun
>
> >
> > In v5, Sashiko found some pre-existing issues related to reserved-memory,
> > and has no dependency on this series, so these issues have been addressed
> > in a separate series [2].
> >
> > 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.
> >
> >
> > 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.
> >
> > 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> > [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> > [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
> >
> > Meijing Zhao (1):
> > mm: memblock: add missing HugeTLB flag name
> >
> > Wandun Chen (9):
> > 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
> > of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> > arch/x86/kernel/crash.c | 2 +-
> > drivers/of/fdt.c | 2 +
> > drivers/of/of_private.h | 2 +
> > drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> > include/linux/crash_core.h | 2 +
> > include/linux/memblock.h | 9 ++++
> > include/linux/of_reserved_mem.h | 1 +
> > kernel/crash_core.c | 51 ++++++++++++++++++++--
> > kernel/dma/contiguous.c | 1 +
> > mm/memblock.c | 17 ++++++++
> > 14 files changed, 131 insertions(+), 95 deletions(-)
> >
>
>
--
Sincerely yours,
Mike.
On 09/18/26 at 10:03am, Mike Rapoport wrote:
> Hi,
>
> On Tue, Sep 15, 2026 at 09:01:07PM +0800, Wandun wrote:
> > On 9/2/26 15:31, Wandun Chen wrote:
> > > From: Wandun Chen <chenwandun@lixiang.com>
...snip...
> > > 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) [1].
> > >
> > > 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-4: Preparation and bugfixes: fix the missing HugeTLB
> > > flagname, 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 5-9: 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 and /memreserve/ entries with
> > > MEMBLOCK_NODUMP flag.
> > > Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> > > header.
> >
> > Hi,
> >
> > Gentle ping on the remaining patches of this series.
> > Patches 1, 7, 8 and 9 have been reviewed (thanks Mike and Marek);
> > Still looking for review on patches 2-6 and 10.
>
> I'm waiting for reviews from Baoquan and Dave for crash core patches before
> applying this series.
I will go through the crash core patches, thanks for reminding.
>
> > Would appreciate a look when you have a moment, happy to rework
> > anything based on feedback.
> >
> > Best regards,
> > Wanun
> >
> > >
> > > In v5, Sashiko found some pre-existing issues related to reserved-memory,
> > > and has no dependency on this series, so these issues have been addressed
> > > in a separate series [2].
> > >
> > > 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.
> > >
> > >
> > > 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.
> > >
> > > 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> > > [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> > > [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
> > >
> > > Meijing Zhao (1):
> > > mm: memblock: add missing HugeTLB flag name
> > >
> > > Wandun Chen (9):
> > > 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
> > > of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> > > arch/x86/kernel/crash.c | 2 +-
> > > drivers/of/fdt.c | 2 +
> > > drivers/of/of_private.h | 2 +
> > > drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> > > include/linux/crash_core.h | 2 +
> > > include/linux/memblock.h | 9 ++++
> > > include/linux/of_reserved_mem.h | 1 +
> > > kernel/crash_core.c | 51 ++++++++++++++++++++--
> > > kernel/dma/contiguous.c | 1 +
> > > mm/memblock.c | 17 ++++++++
> > > 14 files changed, 131 insertions(+), 95 deletions(-)
> > >
> >
> >
>
> --
> Sincerely yours,
> Mike.
On 09/02/26 at 03:31pm, Wandun Chen wrote:
> From: Wandun Chen <chenwandun@lixiang.com>
>
...snip...
> 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
~~~
The patchset itself looks goot to me, while I am concerned if it's
really generic. I raised that in sub-thread talking with Wandun. Imagine
I tried to exclude many driver regions and split memblock regions into
hundreds, cma could yell out: cma_declare_contiguous_multi()?
IMHO, withdrawing the claim can fix the nit concern. If I am wrong,
please help point it out to let me learn more.
Thanks
Baoquan
> both ACPI and DT systems can benefit from it (suggested by Rob, thanks) [1].
>
> Since the reserved memory regions are filtered out, the vmcore is
> smaller in size and faster to produce.
>
...snip...
On 9/18/26 16:17, Baoquan He wrote: > On 09/02/26 at 03:31pm, Wandun Chen wrote: >> From: Wandun Chen <chenwandun@lixiang.com> >> > ...snip... >> 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 > ~~~ > The patchset itself looks goot to me, while I am concerned if it's > really generic. I raised that in sub-thread talking with Wandun. Imagine > I tried to exclude many driver regions and split memblock regions into > hundreds, cma could yell out: cma_declare_contiguous_multi()? Are you concerned that setting the MEMBLOCK_NODUMP flag could split a memblock region into many smaller regions, which might then prevent cma_declare_contiguous_multi() from satisfying a multi-range allocation? If so, IICU I don’t think that applies here. MEMBLOCK_NODUMP is currently only set on memory that has already been reserved. These regions are excluded when iterating over free memory, so marking them NODUMP does not increase the number of free regions seen by CMA. Before marking NODUMP: memblock.memory: [ free ] [ reserved ] [ free ] memblock.reserved: [ reserved ] Now, for memblock.memory, it is one region that contains free and reserved memory. After marking the reserved region NODUMP: memblock.memory: [ free ] [ NODUMP ] [ free ] memblock.reserved: [ reserved ] for memblock.memory, it splits into 3 regions, 2 free regions, 1 nodump region. Although the memblock.memory array may be split internally, it does not create additional free ranges for cma_declare_contiguous_multi() to process. > > IMHO, withdrawing the claim can fix the nit concern. If I am wrong, > please help point it out to let me learn more. I will revise this description to avoid any misunderstanding. Best regards, Wandun > > Thanks > Baoquan > >> both ACPI and DT systems can benefit from it (suggested by Rob, thanks) [1]. >> >> Since the reserved memory regions are filtered out, the vmcore is >> smaller in size and faster to produce. >> > ...snip...
Hi Wandun,
On 09/02/26 at 03:31pm, 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.
>
> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
> reserved memory on DT-based architectures (arm64, riscv, loongarch).
> Reserved regions default are marked MEMBLOCK_NODUMP 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.
>
> 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) [1].
Thanks for the effort. I am not against this patchset, and I haven't
went through it carefully. Just from the cover letter, you mentioned
generic, I am wondering if this can be generic for excluding other
memory regions. Asking this because I try to find a way to exclude
unwanted memory regions too, please check below link where there's
the relevant discussion. We definitely don't like inventing wheels
time after time. Do you think this memblock region excluding can
be used in other places of kernel?
https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
>
> 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-4: Preparation and bugfixes: fix the missing HugeTLB
> flagname, 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 5-9: 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 and /memreserve/ entries with
> MEMBLOCK_NODUMP flag.
> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> header.
>
> In v5, Sashiko found some pre-existing issues related to reserved-memory,
> and has no dependency on this series, so these issues have been addressed
> in a separate series [2].
>
> 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.
>
>
> 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.
>
> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
>
> Meijing Zhao (1):
> mm: memblock: add missing HugeTLB flag name
>
> Wandun Chen (9):
> 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
> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> arch/x86/kernel/crash.c | 2 +-
> drivers/of/fdt.c | 2 +
> drivers/of/of_private.h | 2 +
> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> include/linux/crash_core.h | 2 +
> include/linux/memblock.h | 9 ++++
> include/linux/of_reserved_mem.h | 1 +
> kernel/crash_core.c | 51 ++++++++++++++++++++--
> kernel/dma/contiguous.c | 1 +
> mm/memblock.c | 17 ++++++++
> 14 files changed, 131 insertions(+), 95 deletions(-)
>
> --
> 2.43.0
>
On 9/2/26 16:53, Baoquan He wrote:
> Hi Wandun,
>
> On 09/02/26 at 03:31pm, 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.
>>
>> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
>> reserved memory on DT-based architectures (arm64, riscv, loongarch).
>> Reserved regions default are marked MEMBLOCK_NODUMP 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.
>>
>> 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) [1].
>
> Thanks for the effort. I am not against this patchset, and I haven't
> went through it carefully. Just from the cover letter, you mentioned
> generic, I am wondering if this can be generic for excluding other
> memory regions. Asking this because I try to find a way to exclude
> unwanted memory regions too, please check below link where there's
> the relevant discussion. We definitely don't like inventing wheels
> time after time. Do you think this memblock region excluding can
> be used in other places of kernel?
>
> https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
Thanks for taking a look, and for the pointer to the crash-wipe thread.
To answer your question directly: the exclusion mechanism in this series
is already generic, memblock_mark_nodump() is the entry point. Any code
that wants a region out of the vmcore just marks it MEMBLOCK_NODUMP, when
preparing vmcore elf header by walking memblock, these regionss are skipped;
This series is simply one caller, marking the DTS /reserved-memory and
/memreserve/ regions with MEMBLOCK_NODUMP.
x86 currently builds the vmcore elf header from iomem_resource, not
memblock; it could be switched to memblock, but that would bring no
benefit for the problem this series solves, so this series makes no
x86 change. I'd personally be in favor of switching to memblock for
a unified implementation across architectures.
Best regards
Wandun
>
>>
>> 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-4: Preparation and bugfixes: fix the missing HugeTLB
>> flagname, 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 5-9: 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 and /memreserve/ entries with
>> MEMBLOCK_NODUMP flag.
>> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
>> header.
>>
>> In v5, Sashiko found some pre-existing issues related to reserved-memory,
>> and has no dependency on this series, so these issues have been addressed
>> in a separate series [2].
>>
>> 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.
>>
>>
>> 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.
>>
>> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
>> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
>> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
>>
>> Meijing Zhao (1):
>> mm: memblock: add missing HugeTLB flag name
>>
>> Wandun Chen (9):
>> 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
>> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
>> arch/x86/kernel/crash.c | 2 +-
>> drivers/of/fdt.c | 2 +
>> drivers/of/of_private.h | 2 +
>> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
>> include/linux/crash_core.h | 2 +
>> include/linux/memblock.h | 9 ++++
>> include/linux/of_reserved_mem.h | 1 +
>> kernel/crash_core.c | 51 ++++++++++++++++++++--
>> kernel/dma/contiguous.c | 1 +
>> mm/memblock.c | 17 ++++++++
>> 14 files changed, 131 insertions(+), 95 deletions(-)
>>
>> --
>> 2.43.0
>>
On 09/03/26 at 03:05pm, Wandun wrote:
>
>
> On 9/2/26 16:53, Baoquan He wrote:
> > Hi Wandun,
> >
> > On 09/02/26 at 03:31pm, 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.
> >>
> >> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
> >> reserved memory on DT-based architectures (arm64, riscv, loongarch).
> >> Reserved regions default are marked MEMBLOCK_NODUMP 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.
> >>
> >> 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) [1].
> >
> > Thanks for the effort. I am not against this patchset, and I haven't
> > went through it carefully. Just from the cover letter, you mentioned
> > generic, I am wondering if this can be generic for excluding other
> > memory regions. Asking this because I try to find a way to exclude
> > unwanted memory regions too, please check below link where there's
> > the relevant discussion. We definitely don't like inventing wheels
> > time after time. Do you think this memblock region excluding can
> > be used in other places of kernel?
> >
> > https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
>
>
> Thanks for taking a look, and for the pointer to the crash-wipe thread.
>
> To answer your question directly: the exclusion mechanism in this series
> is already generic, memblock_mark_nodump() is the entry point. Any code
> that wants a region out of the vmcore just marks it MEMBLOCK_NODUMP, when
> preparing vmcore elf header by walking memblock, these regionss are skipped;
> This series is simply one caller, marking the DTS /reserved-memory and
> /memreserve/ regions with MEMBLOCK_NODUMP.
Thanks, for memory not allocated from memblock, e.g buddy, is it still
good?
>
> x86 currently builds the vmcore elf header from iomem_resource, not
> memblock; it could be switched to memblock, but that would bring no
> benefit for the problem this series solves, so this series makes no
> x86 change. I'd personally be in favor of switching to memblock for
> a unified implementation across architectures.
>
> Best regards
> Wandun
>
>
> >
> >>
> >> 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-4: Preparation and bugfixes: fix the missing HugeTLB
> >> flagname, 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 5-9: 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 and /memreserve/ entries with
> >> MEMBLOCK_NODUMP flag.
> >> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> >> header.
> >>
> >> In v5, Sashiko found some pre-existing issues related to reserved-memory,
> >> and has no dependency on this series, so these issues have been addressed
> >> in a separate series [2].
> >>
> >> 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.
> >>
> >>
> >> 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.
> >>
> >> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> >> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> >> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
> >>
> >> Meijing Zhao (1):
> >> mm: memblock: add missing HugeTLB flag name
> >>
> >> Wandun Chen (9):
> >> 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
> >> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> >> arch/x86/kernel/crash.c | 2 +-
> >> drivers/of/fdt.c | 2 +
> >> drivers/of/of_private.h | 2 +
> >> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> >> include/linux/crash_core.h | 2 +
> >> include/linux/memblock.h | 9 ++++
> >> include/linux/of_reserved_mem.h | 1 +
> >> kernel/crash_core.c | 51 ++++++++++++++++++++--
> >> kernel/dma/contiguous.c | 1 +
> >> mm/memblock.c | 17 ++++++++
> >> 14 files changed, 131 insertions(+), 95 deletions(-)
> >>
> >> --
> >> 2.43.0
> >>
>
On 9/3/26 15:31, Baoquan He wrote:
> On 09/03/26 at 03:05pm, Wandun wrote:
>>
>>
>> On 9/2/26 16:53, Baoquan He wrote:
>>> Hi Wandun,
>>>
>>> On 09/02/26 at 03:31pm, 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.
>>>>
>>>> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
>>>> reserved memory on DT-based architectures (arm64, riscv, loongarch).
>>>> Reserved regions default are marked MEMBLOCK_NODUMP 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.
>>>>
>>>> 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) [1].
>>>
>>> Thanks for the effort. I am not against this patchset, and I haven't
>>> went through it carefully. Just from the cover letter, you mentioned
>>> generic, I am wondering if this can be generic for excluding other
>>> memory regions. Asking this because I try to find a way to exclude
>>> unwanted memory regions too, please check below link where there's
>>> the relevant discussion. We definitely don't like inventing wheels
>>> time after time. Do you think this memblock region excluding can
>>> be used in other places of kernel?
>>>
>>> https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
>>
>>
>> Thanks for taking a look, and for the pointer to the crash-wipe thread.
>>
>> To answer your question directly: the exclusion mechanism in this series
>> is already generic, memblock_mark_nodump() is the entry point. Any code
>> that wants a region out of the vmcore just marks it MEMBLOCK_NODUMP, when
>> preparing vmcore elf header by walking memblock, these regionss are skipped;
>> This series is simply one caller, marking the DTS /reserved-memory and
>> /memreserve/ regions with MEMBLOCK_NODUMP.
>
> Thanks, for memory not allocated from memblock, e.g buddy, is it still
> good?
Yes, still good, only need to pass the physical range to memblock_mark_nodump().
>
>>
>> x86 currently builds the vmcore elf header from iomem_resource, not
>> memblock; it could be switched to memblock, but that would bring no
>> benefit for the problem this series solves, so this series makes no
>> x86 change. I'd personally be in favor of switching to memblock for
>> a unified implementation across architectures.
>>
>> Best regards
>> Wandun
>>
>>
>>>
>>>>
>>>> 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-4: Preparation and bugfixes: fix the missing HugeTLB
>>>> flagname, 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 5-9: 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 and /memreserve/ entries with
>>>> MEMBLOCK_NODUMP flag.
>>>> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
>>>> header.
>>>>
>>>> In v5, Sashiko found some pre-existing issues related to reserved-memory,
>>>> and has no dependency on this series, so these issues have been addressed
>>>> in a separate series [2].
>>>>
>>>> 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.
>>>>
>>>>
>>>> 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.
>>>>
>>>> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
>>>> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
>>>> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
>>>>
>>>> Meijing Zhao (1):
>>>> mm: memblock: add missing HugeTLB flag name
>>>>
>>>> Wandun Chen (9):
>>>> 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
>>>> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
>>>> arch/x86/kernel/crash.c | 2 +-
>>>> drivers/of/fdt.c | 2 +
>>>> drivers/of/of_private.h | 2 +
>>>> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
>>>> include/linux/crash_core.h | 2 +
>>>> include/linux/memblock.h | 9 ++++
>>>> include/linux/of_reserved_mem.h | 1 +
>>>> kernel/crash_core.c | 51 ++++++++++++++++++++--
>>>> kernel/dma/contiguous.c | 1 +
>>>> mm/memblock.c | 17 ++++++++
>>>> 14 files changed, 131 insertions(+), 95 deletions(-)
>>>>
>>>> --
>>>> 2.43.0
>>>>
>>
On 09/03/26 at 03:43pm, Wandun wrote:
>
>
> On 9/3/26 15:31, Baoquan He wrote:
> > On 09/03/26 at 03:05pm, Wandun wrote:
> >>
> >>
> >> On 9/2/26 16:53, Baoquan He wrote:
> >>> Hi Wandun,
> >>>
> >>> On 09/02/26 at 03:31pm, 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.
> >>>>
> >>>> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
> >>>> reserved memory on DT-based architectures (arm64, riscv, loongarch).
> >>>> Reserved regions default are marked MEMBLOCK_NODUMP 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.
> >>>>
> >>>> 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) [1].
> >>>
> >>> Thanks for the effort. I am not against this patchset, and I haven't
> >>> went through it carefully. Just from the cover letter, you mentioned
> >>> generic, I am wondering if this can be generic for excluding other
> >>> memory regions. Asking this because I try to find a way to exclude
> >>> unwanted memory regions too, please check below link where there's
> >>> the relevant discussion. We definitely don't like inventing wheels
> >>> time after time. Do you think this memblock region excluding can
> >>> be used in other places of kernel?
> >>>
> >>> https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
> >>
> >>
> >> Thanks for taking a look, and for the pointer to the crash-wipe thread.
> >>
> >> To answer your question directly: the exclusion mechanism in this series
> >> is already generic, memblock_mark_nodump() is the entry point. Any code
> >> that wants a region out of the vmcore just marks it MEMBLOCK_NODUMP, when
> >> preparing vmcore elf header by walking memblock, these regionss are skipped;
> >> This series is simply one caller, marking the DTS /reserved-memory and
> >> /memreserve/ regions with MEMBLOCK_NODUMP.
> >
> > Thanks, for memory not allocated from memblock, e.g buddy, is it still
> > good?
>
> Yes, still good, only need to pass the physical range to memblock_mark_nodump().
That's interesting. If drivers or any component allocate memory from
buddy, then you will call memblock_mark_nodump() to mark the region
specifically (memblock_setclr_flag will split regions if it's a sub
region of existing memblock region), it won't impact anything?
>
> >
> >>
> >> x86 currently builds the vmcore elf header from iomem_resource, not
> >> memblock; it could be switched to memblock, but that would bring no
> >> benefit for the problem this series solves, so this series makes no
> >> x86 change. I'd personally be in favor of switching to memblock for
> >> a unified implementation across architectures.
> >>
> >> Best regards
> >> Wandun
> >>
> >>
> >>>
> >>>>
> >>>> 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-4: Preparation and bugfixes: fix the missing HugeTLB
> >>>> flagname, 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 5-9: 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 and /memreserve/ entries with
> >>>> MEMBLOCK_NODUMP flag.
> >>>> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
> >>>> header.
> >>>>
> >>>> In v5, Sashiko found some pre-existing issues related to reserved-memory,
> >>>> and has no dependency on this series, so these issues have been addressed
> >>>> in a separate series [2].
> >>>>
> >>>> 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.
> >>>>
> >>>>
> >>>> 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.
> >>>>
> >>>> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
> >>>> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
> >>>> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
> >>>>
> >>>> Meijing Zhao (1):
> >>>> mm: memblock: add missing HugeTLB flag name
> >>>>
> >>>> Wandun Chen (9):
> >>>> 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
> >>>> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
> >>>> arch/x86/kernel/crash.c | 2 +-
> >>>> drivers/of/fdt.c | 2 +
> >>>> drivers/of/of_private.h | 2 +
> >>>> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
> >>>> include/linux/crash_core.h | 2 +
> >>>> include/linux/memblock.h | 9 ++++
> >>>> include/linux/of_reserved_mem.h | 1 +
> >>>> kernel/crash_core.c | 51 ++++++++++++++++++++--
> >>>> kernel/dma/contiguous.c | 1 +
> >>>> mm/memblock.c | 17 ++++++++
> >>>> 14 files changed, 131 insertions(+), 95 deletions(-)
> >>>>
> >>>> --
> >>>> 2.43.0
> >>>>
> >>
>
On 9/3/26 5:38 PM, Baoquan He wrote:
> On 09/03/26 at 03:43pm, Wandun wrote:
>>
>>
>> On 9/3/26 15:31, Baoquan He wrote:
>>> On 09/03/26 at 03:05pm, Wandun wrote:
>>>>
>>>>
>>>> On 9/2/26 16:53, Baoquan He wrote:
>>>>> Hi Wandun,
>>>>>
>>>>> On 09/02/26 at 03:31pm, 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.
>>>>>>
>>>>>> This series introduces a MEMBLOCK_NODUMP flag in memblock to filter
>>>>>> reserved memory on DT-based architectures (arm64, riscv, loongarch).
>>>>>> Reserved regions default are marked MEMBLOCK_NODUMP 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.
>>>>>>
>>>>>> 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) [1].
>>>>>
>>>>> Thanks for the effort. I am not against this patchset, and I haven't
>>>>> went through it carefully. Just from the cover letter, you mentioned
>>>>> generic, I am wondering if this can be generic for excluding other
>>>>> memory regions. Asking this because I try to find a way to exclude
>>>>> unwanted memory regions too, please check below link where there's
>>>>> the relevant discussion. We definitely don't like inventing wheels
>>>>> time after time. Do you think this memblock region excluding can
>>>>> be used in other places of kernel?
>>>>>
>>>>> https://lore.kernel.org/all/aoLFai0gzzH2bGgy@MiWiFi-R3L-srv/T/#u
>>>>
>>>>
>>>> Thanks for taking a look, and for the pointer to the crash-wipe thread.
>>>>
>>>> To answer your question directly: the exclusion mechanism in this series
>>>> is already generic, memblock_mark_nodump() is the entry point. Any code
>>>> that wants a region out of the vmcore just marks it MEMBLOCK_NODUMP, when
>>>> preparing vmcore elf header by walking memblock, these regionss are skipped;
>>>> This series is simply one caller, marking the DTS /reserved-memory and
>>>> /memreserve/ regions with MEMBLOCK_NODUMP.
>>>
>>> Thanks, for memory not allocated from memblock, e.g buddy, is it still
>>> good?
>>
>> Yes, still good, only need to pass the physical range to memblock_mark_nodump().
>
> That's interesting. If drivers or any component allocate memory from
> buddy, then you will call memblock_mark_nodump() to mark the region
> specifically (memblock_setclr_flag will split regions if it's a sub
> region of existing memblock region), it won't impact anything?
IIUC, it won't impact anyting; memblock_mark_nodump() only set
the MEMBLOCK_NODUMP bit on the matching memblock.memory regions,
and from the buddy allocator's view, there is nothing changed.
The only effect is the region split you already pointed out: marking
a sub-range costs up to two extra entries in the memblock.memory
region array.
Best regards,
Wandun
>
>>
>>>
>>>>
>>>> x86 currently builds the vmcore elf header from iomem_resource, not
>>>> memblock; it could be switched to memblock, but that would bring no
>>>> benefit for the problem this series solves, so this series makes no
>>>> x86 change. I'd personally be in favor of switching to memblock for
>>>> a unified implementation across architectures.
>>>>
>>>> Best regards
>>>> Wandun
>>>>
>>>>
>>>>>
>>>>>>
>>>>>> 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-4: Preparation and bugfixes: fix the missing HugeTLB
>>>>>> flagname, 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 5-9: 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 and /memreserve/ entries with
>>>>>> MEMBLOCK_NODUMP flag.
>>>>>> Patch 10: Exclude MEMBLOCK_NODUMP regions from the vmcore ELF
>>>>>> header.
>>>>>>
>>>>>> In v5, Sashiko found some pre-existing issues related to reserved-memory,
>>>>>> and has no dependency on this series, so these issues have been addressed
>>>>>> in a separate series [2].
>>>>>>
>>>>>> 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.
>>>>>>
>>>>>>
>>>>>> 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.
>>>>>>
>>>>>> 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. 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 [3], 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/20260723234126.GA3253409-robh@kernel.org/
>>>>>> [2] https://lore.kernel.org/lkml/20260818092420.2859026-1-chenwandun1@gmail.com/
>>>>>> [3] https://lore.kernel.org/lkml/20260506144542.GA2072596-robh@kernel.org/
>>>>>>
>>>>>> Meijing Zhao (1):
>>>>>> mm: memblock: add missing HugeTLB flag name
>>>>>>
>>>>>> Wandun Chen (9):
>>>>>> 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
>>>>>> of: reserved_mem: mark /memreserve/ entries as 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/machine_kexec_file.c | 33 --------------
>>>>>> arch/x86/kernel/crash.c | 2 +-
>>>>>> drivers/of/fdt.c | 2 +
>>>>>> drivers/of/of_private.h | 2 +
>>>>>> drivers/of/of_reserved_mem.c | 48 ++++++++++++++++++++
>>>>>> include/linux/crash_core.h | 2 +
>>>>>> include/linux/memblock.h | 9 ++++
>>>>>> include/linux/of_reserved_mem.h | 1 +
>>>>>> kernel/crash_core.c | 51 ++++++++++++++++++++--
>>>>>> kernel/dma/contiguous.c | 1 +
>>>>>> mm/memblock.c | 17 ++++++++
>>>>>> 14 files changed, 131 insertions(+), 95 deletions(-)
>>>>>>
>>>>>> --
>>>>>> 2.43.0
>>>>>>
>>>>
>>
© 2016 - 2026 Red Hat, Inc.