From: Rob Herring <robh@kernel.org>
To: Chen Wandun <chenwandun1@gmail.com>
Cc: kexec@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
akpm@linux-foundation.org, bhe@redhat.com, rppt@kernel.org,
pasha.tatashin@soleen.com, pratyush@kernel.org,
ruirui.yang@linux.dev, corbet@lwn.net, skhan@linuxfoundation.org,
catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org,
kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com,
aou@eecs.berkeley.edu, saravanak@kernel.org,
chenwandun@lixiang.com, zhaomeijing@lixiang.com,
everyzhao@126.com
Subject: Re: [PATCH 07/11] of: reserved_mem: add no-dump crash_mem exclusion helpers
Date: Wed, 6 May 2026 09:50:22 -0500 [thread overview]
Message-ID: <20260506145022.GA2084721-robh@kernel.org> (raw)
In-Reply-To: <20260429065831.1510858-8-chenwandun@lixiang.com>
On Wed, Apr 29, 2026 at 02:58:27PM +0800, Chen Wandun wrote:
> Provide two kdump-oriented helpers so that arch kexec_file code does
> not have to open-code the no-dump filtering loop:
>
> - of_reserved_mem_no_dump_nr_ranges() returns the number of reserved
> regions flagged with linux,no-dump. Each exclusion may split one
> existing crash_mem range into two, so callers use this count to
> pre-size their crash_mem allocation.
>
> - of_reserved_mem_exclude_no_dump() walks the reserved_mem[] array
> and calls crash_exclude_mem_range() for each no-dump region.
>
> Both helpers are guarded by CONFIG_KEXEC_FILE; empty inline stubs are
> provided for the !KEXEC_FILE case so architecture code can call them
> unconditionally.
>
> The consumers are added in the following arm64, riscv and loongarch
> patches in this series.
>
> Signed-off-by: Chen Wandun <chenwandun@lixiang.com>
> Tested-by: Zhao Meijing <zhaomeijing@lixiang.com>
> ---
> drivers/of/of_reserved_mem.c | 54 +++++++++++++++++++++++++++++++++
> include/linux/of_reserved_mem.h | 15 +++++++++
> 2 files changed, 69 insertions(+)
>
> diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
> index 4b80420da2d2..038056a6408a 100644
> --- a/drivers/of/of_reserved_mem.c
> +++ b/drivers/of/of_reserved_mem.c
> @@ -27,6 +27,10 @@
>
> #include "of_private.h"
>
> +#ifdef CONFIG_KEXEC_FILE
> +#include <linux/crash_core.h>
> +#endif
You shouldn't need ifdef around includes.
> +
> static struct reserved_mem reserved_mem_array[MAX_RESERVED_REGIONS] __initdata;
> static struct reserved_mem *reserved_mem __refdata = reserved_mem_array;
> static int total_reserved_mem_cnt = MAX_RESERVED_REGIONS;
> @@ -916,6 +920,56 @@ struct reserved_mem *of_reserved_mem_lookup(struct device_node *np)
> }
> EXPORT_SYMBOL_GPL(of_reserved_mem_lookup);
>
> +#ifdef CONFIG_KEXEC_FILE
Use 'if (IS_ENABLED())' within the function.
> +/**
> + * of_reserved_mem_no_dump_nr_ranges() - count reserved regions flagged
> + * with the linux,no-dump property.
> + *
> + * Each such region may split an existing crash_mem range into two when
> + * it is excluded, so callers can use this count to pre-size their
> + * crash_mem allocation.
> + */
> +unsigned int of_reserved_mem_no_dump_nr_ranges(void)
> +{
> + unsigned int i, n = 0;
> +
> + for (i = 0; i < reserved_mem_count; i++)
> + if (reserved_mem[i].no_dump)
> + n++;
> + return n;
> +}
> +
> +/**
> + * of_reserved_mem_exclude_no_dump() - exclude no-dump reserved regions
> + * from a crash_mem list.
> + * @cmem: crash memory list to modify
> + *
> + * Walks the reserved_mem[] array and calls crash_exclude_mem_range() for
> + * every region with no_dump set. Intended to be called from arch kdump
> + * code when constructing the elfcorehdr.
> + *
> + * Returns 0 on success, or a negative error returned by
> + * crash_exclude_mem_range() on the first failure.
> + */
> +int of_reserved_mem_exclude_no_dump(struct crash_mem *cmem)
> +{
> + unsigned int i;
> + int ret;
> +
> + for (i = 0; i < reserved_mem_count; i++) {
> + struct reserved_mem *r = &reserved_mem[i];
> +
> + if (!r->no_dump || !r->size)
> + continue;
> + ret = crash_exclude_mem_range(cmem, r->base,
> + r->base + r->size - 1);
> + if (ret)
> + return ret;
> + }
> + return 0;
> +}
> +#endif /* CONFIG_KEXEC_FILE */
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Chen Wandun <chenwandun1@gmail.com>
Cc: kexec@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
akpm@linux-foundation.org, bhe@redhat.com, rppt@kernel.org,
pasha.tatashin@soleen.com, pratyush@kernel.org,
ruirui.yang@linux.dev, corbet@lwn.net, skhan@linuxfoundation.org,
catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org,
kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com,
aou@eecs.berkeley.edu, saravanak@kernel.org,
chenwandun@lixiang.com, zhaomeijing@lixiang.com,
everyzhao@126.com
Subject: Re: [PATCH 07/11] of: reserved_mem: add no-dump crash_mem exclusion helpers
Date: Wed, 6 May 2026 09:50:22 -0500 [thread overview]
Message-ID: <20260506145022.GA2084721-robh@kernel.org> (raw)
In-Reply-To: <20260429065831.1510858-8-chenwandun@lixiang.com>
On Wed, Apr 29, 2026 at 02:58:27PM +0800, Chen Wandun wrote:
> Provide two kdump-oriented helpers so that arch kexec_file code does
> not have to open-code the no-dump filtering loop:
>
> - of_reserved_mem_no_dump_nr_ranges() returns the number of reserved
> regions flagged with linux,no-dump. Each exclusion may split one
> existing crash_mem range into two, so callers use this count to
> pre-size their crash_mem allocation.
>
> - of_reserved_mem_exclude_no_dump() walks the reserved_mem[] array
> and calls crash_exclude_mem_range() for each no-dump region.
>
> Both helpers are guarded by CONFIG_KEXEC_FILE; empty inline stubs are
> provided for the !KEXEC_FILE case so architecture code can call them
> unconditionally.
>
> The consumers are added in the following arm64, riscv and loongarch
> patches in this series.
>
> Signed-off-by: Chen Wandun <chenwandun@lixiang.com>
> Tested-by: Zhao Meijing <zhaomeijing@lixiang.com>
> ---
> drivers/of/of_reserved_mem.c | 54 +++++++++++++++++++++++++++++++++
> include/linux/of_reserved_mem.h | 15 +++++++++
> 2 files changed, 69 insertions(+)
>
> diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
> index 4b80420da2d2..038056a6408a 100644
> --- a/drivers/of/of_reserved_mem.c
> +++ b/drivers/of/of_reserved_mem.c
> @@ -27,6 +27,10 @@
>
> #include "of_private.h"
>
> +#ifdef CONFIG_KEXEC_FILE
> +#include <linux/crash_core.h>
> +#endif
You shouldn't need ifdef around includes.
> +
> static struct reserved_mem reserved_mem_array[MAX_RESERVED_REGIONS] __initdata;
> static struct reserved_mem *reserved_mem __refdata = reserved_mem_array;
> static int total_reserved_mem_cnt = MAX_RESERVED_REGIONS;
> @@ -916,6 +920,56 @@ struct reserved_mem *of_reserved_mem_lookup(struct device_node *np)
> }
> EXPORT_SYMBOL_GPL(of_reserved_mem_lookup);
>
> +#ifdef CONFIG_KEXEC_FILE
Use 'if (IS_ENABLED())' within the function.
> +/**
> + * of_reserved_mem_no_dump_nr_ranges() - count reserved regions flagged
> + * with the linux,no-dump property.
> + *
> + * Each such region may split an existing crash_mem range into two when
> + * it is excluded, so callers can use this count to pre-size their
> + * crash_mem allocation.
> + */
> +unsigned int of_reserved_mem_no_dump_nr_ranges(void)
> +{
> + unsigned int i, n = 0;
> +
> + for (i = 0; i < reserved_mem_count; i++)
> + if (reserved_mem[i].no_dump)
> + n++;
> + return n;
> +}
> +
> +/**
> + * of_reserved_mem_exclude_no_dump() - exclude no-dump reserved regions
> + * from a crash_mem list.
> + * @cmem: crash memory list to modify
> + *
> + * Walks the reserved_mem[] array and calls crash_exclude_mem_range() for
> + * every region with no_dump set. Intended to be called from arch kdump
> + * code when constructing the elfcorehdr.
> + *
> + * Returns 0 on success, or a negative error returned by
> + * crash_exclude_mem_range() on the first failure.
> + */
> +int of_reserved_mem_exclude_no_dump(struct crash_mem *cmem)
> +{
> + unsigned int i;
> + int ret;
> +
> + for (i = 0; i < reserved_mem_count; i++) {
> + struct reserved_mem *r = &reserved_mem[i];
> +
> + if (!r->no_dump || !r->size)
> + continue;
> + ret = crash_exclude_mem_range(cmem, r->base,
> + r->base + r->size - 1);
> + if (ret)
> + return ret;
> + }
> + return 0;
> +}
> +#endif /* CONFIG_KEXEC_FILE */
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2026-05-06 14:51 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-29 6:58 [PATCH 00/11] kdump: reduce vmcore size and capture time via linux,no-dump Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 01/11] of: reserved_mem: fix region count for nodes with multiple reg entries Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-05-06 1:47 ` Rob Herring
2026-05-06 1:47 ` Rob Herring
2026-05-07 8:41 ` Wandun
2026-05-07 8:41 ` Wandun
2026-04-29 6:58 ` [PATCH 02/11] of: reserved_mem: reject reserved memory outside physical address range Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-05-06 1:51 ` Rob Herring
2026-05-06 1:51 ` Rob Herring
2026-05-07 9:35 ` Wandun
2026-05-07 9:35 ` Wandun
2026-04-29 6:58 ` [PATCH 03/11] of: reserved_mem: avoid unconditional save of reg entries in fdt_scan_reserved_mem_late() Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 04/11] of: reserved_mem: skip reserved_mem array allocation when there is nothing to save Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 05/11] of: reserved_mem: add linux,no-dump property support for reserved memory regions Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-05-06 14:45 ` Rob Herring
2026-05-06 14:45 ` Rob Herring
2026-05-07 9:41 ` Wandun
2026-05-07 9:41 ` Wandun
2026-04-29 6:58 ` [PATCH 06/11] of: reserved_mem: save /memreserve/ entries into reserved_mem array Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 07/11] of: reserved_mem: add no-dump crash_mem exclusion helpers Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-05-06 14:50 ` Rob Herring [this message]
2026-05-06 14:50 ` Rob Herring
2026-05-07 8:48 ` Wandun
2026-05-07 8:48 ` Wandun
2026-04-29 6:58 ` [PATCH 08/11] arm64: kdump: exclude no-dump reserved memory regions from vmcore Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 09/11] riscv: " Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 10/11] loongarch: " Chen Wandun
2026-04-29 6:58 ` Chen Wandun
2026-04-29 6:58 ` [PATCH 11/11] Documentation: admin-guide: kdump: document linux,no-dump DT property Chen Wandun
2026-04-29 6:58 ` Chen 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=20260506145022.GA2084721-robh@kernel.org \
--to=robh@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=aou@eecs.berkeley.edu \
--cc=bhe@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=chenwandun1@gmail.com \
--cc=chenwandun@lixiang.com \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=everyzhao@126.com \
--cc=kernel@xen0n.name \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=loongarch@lists.linux.dev \
--cc=palmer@dabbelt.com \
--cc=pasha.tatashin@soleen.com \
--cc=pjw@kernel.org \
--cc=pratyush@kernel.org \
--cc=rppt@kernel.org \
--cc=ruirui.yang@linux.dev \
--cc=saravanak@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=will@kernel.org \
--cc=zhaomeijing@lixiang.com \
/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.