From: Mike Rapoport <rppt@kernel.org>
To: Breno Leitao <leitao@debian.org>
Cc: Alexander Graf <graf@amazon.com>,
Pasha Tatashin <pasha.tatashin@soleen.com>,
Pratyush Yadav <pratyush@kernel.org>,
linux-kernel@vger.kernel.org, kexec@lists.infradead.org,
linux-mm@kvack.org, usamaarif642@gmail.com,
SeongJae Park <sj@kernel.org>,
kernel-team@meta.com
Subject: Re: [PATCH v7 2/6] kho: rename fdt parameter to blob in kho_add/remove_subtree()
Date: Mon, 9 Mar 2026 09:58:02 +0200 [thread overview]
Message-ID: <aa59irg2P-sejKO5@kernel.org> (raw)
In-Reply-To: <20260306-kho-v7-2-404d14c188bb@debian.org>
On Fri, Mar 06, 2026 at 04:39:21AM -0800, Breno Leitao wrote:
> Since kho_add_subtree() now accepts arbitrary data blobs (not just
> FDTs), rename the parameter from 'fdt' to 'blob' to better reflect
> its purpose. Apply the same rename to kho_remove_subtree() for
> consistency.
>
> Also rename kho_debugfs_fdt_add() and kho_debugfs_fdt_remove() to
> kho_debugfs_blob_add() and kho_debugfs_blob_remove() respectively,
> with the same parameter rename from 'fdt' to 'blob'.
>
> Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> ---
> include/linux/kexec_handover.h | 8 ++++----
> kernel/liveupdate/kexec_handover.c | 25 +++++++++++++------------
> kernel/liveupdate/kexec_handover_debugfs.c | 25 +++++++++++++------------
> kernel/liveupdate/kexec_handover_internal.h | 16 ++++++++--------
> 4 files changed, 38 insertions(+), 36 deletions(-)
>
> diff --git a/include/linux/kexec_handover.h b/include/linux/kexec_handover.h
> index abb1d324f42d0..0666cf298c7f4 100644
> --- a/include/linux/kexec_handover.h
> +++ b/include/linux/kexec_handover.h
> @@ -32,8 +32,8 @@ void kho_restore_free(void *mem);
> struct folio *kho_restore_folio(phys_addr_t phys);
> struct page *kho_restore_pages(phys_addr_t phys, unsigned long nr_pages);
> void *kho_restore_vmalloc(const struct kho_vmalloc *preservation);
> -int kho_add_subtree(const char *name, void *fdt, size_t size);
> -void kho_remove_subtree(void *fdt);
> +int kho_add_subtree(const char *name, void *blob, size_t size);
> +void kho_remove_subtree(void *blob);
> int kho_retrieve_subtree(const char *name, phys_addr_t *phys);
>
> void kho_memory_init(void);
> @@ -97,12 +97,12 @@ static inline void *kho_restore_vmalloc(const struct kho_vmalloc *preservation)
> return NULL;
> }
>
> -static inline int kho_add_subtree(const char *name, void *fdt, size_t size)
> +static inline int kho_add_subtree(const char *name, void *blob, size_t size)
> {
> return -EOPNOTSUPP;
> }
>
> -static inline void kho_remove_subtree(void *fdt) { }
> +static inline void kho_remove_subtree(void *blob) { }
>
> static inline int kho_retrieve_subtree(const char *name, phys_addr_t *phys)
> {
> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
> index 55bdc5d2d1929..ebaf3104c36ab 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -749,13 +749,13 @@ static void __init kho_reserve_scratch(void)
> }
>
> /**
> - * kho_add_subtree - record the physical address of a sub FDT in KHO root tree.
> + * kho_add_subtree - record the physical address of a sub blob in KHO root tree.
> * @name: name of the sub tree.
> - * @fdt: the sub tree blob.
> + * @blob: the sub tree blob.
> * @size: size of the blob in bytes.
> *
> * Creates a new child node named @name in KHO root FDT and records
> - * the physical address of @fdt. The pages of @fdt must also be preserved
> + * the physical address of @blob. The pages of @blob must also be preserved
> * by KHO for the new kernel to retrieve it after kexec.
> *
> * A debugfs blob entry is also created at
> @@ -764,9 +764,9 @@ static void __init kho_reserve_scratch(void)
> *
> * Return: 0 on success, error code on failure
> */
> -int kho_add_subtree(const char *name, void *fdt, size_t size)
> +int kho_add_subtree(const char *name, void *blob, size_t size)
> {
> - phys_addr_t phys = virt_to_phys(fdt);
> + phys_addr_t phys = virt_to_phys(blob);
> void *root_fdt = kho_out.fdt;
> int err = -ENOMEM;
> int off, fdt_err;
> @@ -789,7 +789,8 @@ int kho_add_subtree(const char *name, void *fdt, size_t size)
> if (err < 0)
> goto out_pack;
>
> - WARN_ON_ONCE(kho_debugfs_fdt_add(&kho_out.dbg, name, fdt, size, false));
> + WARN_ON_ONCE(kho_debugfs_blob_add(&kho_out.dbg, name, blob,
> + size, false));
>
> out_pack:
> fdt_pack(root_fdt);
> @@ -798,9 +799,9 @@ int kho_add_subtree(const char *name, void *fdt, size_t size)
> }
> EXPORT_SYMBOL_GPL(kho_add_subtree);
>
> -void kho_remove_subtree(void *fdt)
> +void kho_remove_subtree(void *blob)
> {
> - phys_addr_t target_phys = virt_to_phys(fdt);
> + phys_addr_t target_phys = virt_to_phys(blob);
> void *root_fdt = kho_out.fdt;
> int off;
> int err;
> @@ -822,7 +823,7 @@ void kho_remove_subtree(void *fdt)
>
> if ((phys_addr_t)*val == target_phys) {
> fdt_del_node(root_fdt, off);
> - kho_debugfs_fdt_remove(&kho_out.dbg, fdt);
> + kho_debugfs_blob_remove(&kho_out.dbg, blob);
> break;
> }
> }
> @@ -1452,9 +1453,9 @@ static __init int kho_init(void)
> return 0;
> }
>
> - WARN_ON_ONCE(kho_debugfs_fdt_add(&kho_out.dbg, "fdt",
> - kho_out.fdt,
> - fdt_totalsize(kho_out.fdt), true));
> + WARN_ON_ONCE(kho_debugfs_blob_add(&kho_out.dbg, "fdt",
> + kho_out.fdt,
> + fdt_totalsize(kho_out.fdt), true));
>
> return 0;
>
> diff --git a/kernel/liveupdate/kexec_handover_debugfs.c b/kernel/liveupdate/kexec_handover_debugfs.c
> index b5a1e09ca8f14..7a100f2bf3947 100644
> --- a/kernel/liveupdate/kexec_handover_debugfs.c
> +++ b/kernel/liveupdate/kexec_handover_debugfs.c
> @@ -23,8 +23,9 @@ struct fdt_debugfs {
> struct dentry *file;
> };
>
> -static int __kho_debugfs_fdt_add(struct list_head *list, struct dentry *dir,
> - const char *name, const void *fdt, size_t size)
> +static int __kho_debugfs_blob_add(struct list_head *list, struct dentry *dir,
> + const char *name, const void *blob,
> + size_t size)
> {
> struct fdt_debugfs *f;
> struct dentry *file;
> @@ -33,7 +34,7 @@ static int __kho_debugfs_fdt_add(struct list_head *list, struct dentry *dir,
> if (!f)
> return -ENOMEM;
>
> - f->wrapper.data = (void *)fdt;
> + f->wrapper.data = (void *)blob;
> f->wrapper.size = size;
>
> file = debugfs_create_blob(name, 0400, dir, &f->wrapper);
> @@ -48,8 +49,8 @@ static int __kho_debugfs_fdt_add(struct list_head *list, struct dentry *dir,
> return 0;
> }
>
> -int kho_debugfs_fdt_add(struct kho_debugfs *dbg, const char *name,
> - const void *fdt, size_t size, bool root)
> +int kho_debugfs_blob_add(struct kho_debugfs *dbg, const char *name,
> + const void *blob, size_t size, bool root)
> {
> struct dentry *dir;
>
> @@ -58,15 +59,15 @@ int kho_debugfs_fdt_add(struct kho_debugfs *dbg, const char *name,
> else
> dir = dbg->sub_fdt_dir;
>
> - return __kho_debugfs_fdt_add(&dbg->fdt_list, dir, name, fdt, size);
> + return __kho_debugfs_blob_add(&dbg->fdt_list, dir, name, blob, size);
> }
>
> -void kho_debugfs_fdt_remove(struct kho_debugfs *dbg, void *fdt)
> +void kho_debugfs_blob_remove(struct kho_debugfs *dbg, void *blob)
> {
> struct fdt_debugfs *ff;
>
> list_for_each_entry(ff, &dbg->fdt_list, list) {
> - if (ff->wrapper.data == fdt) {
> + if (ff->wrapper.data == blob) {
> debugfs_remove(ff->file);
> list_del(&ff->list);
> kfree(ff);
> @@ -112,8 +113,8 @@ __init void kho_in_debugfs_init(struct kho_debugfs *dbg, const void *fdt)
> goto err_rmdir;
> }
>
> - err = __kho_debugfs_fdt_add(&dbg->fdt_list, dir, "fdt", fdt,
> - fdt_totalsize(fdt));
> + err = __kho_debugfs_blob_add(&dbg->fdt_list, dir, "fdt", fdt,
> + fdt_totalsize(fdt));
> if (err)
> goto err_rmdir;
>
> @@ -132,8 +133,8 @@ __init void kho_in_debugfs_init(struct kho_debugfs *dbg, const void *fdt)
> continue;
> }
> sub_fdt = phys_to_virt(*fdt_phys);
> - err = __kho_debugfs_fdt_add(&dbg->fdt_list, sub_fdt_dir, name,
> - sub_fdt, fdt_totalsize(sub_fdt));
> + err = __kho_debugfs_blob_add(&dbg->fdt_list, sub_fdt_dir, name,
> + sub_fdt, fdt_totalsize(sub_fdt));
> if (err) {
> pr_warn("failed to add fdt %s to debugfs: %pe\n", name,
> ERR_PTR(err));
> diff --git a/kernel/liveupdate/kexec_handover_internal.h b/kernel/liveupdate/kexec_handover_internal.h
> index 2a28cb8db9b0a..0399ff1077750 100644
> --- a/kernel/liveupdate/kexec_handover_internal.h
> +++ b/kernel/liveupdate/kexec_handover_internal.h
> @@ -26,19 +26,19 @@ extern unsigned int kho_scratch_cnt;
> int kho_debugfs_init(void);
> void kho_in_debugfs_init(struct kho_debugfs *dbg, const void *fdt);
> int kho_out_debugfs_init(struct kho_debugfs *dbg);
> -int kho_debugfs_fdt_add(struct kho_debugfs *dbg, const char *name,
> - const void *fdt, size_t size, bool root);
> -void kho_debugfs_fdt_remove(struct kho_debugfs *dbg, void *fdt);
> +int kho_debugfs_blob_add(struct kho_debugfs *dbg, const char *name,
> + const void *blob, size_t size, bool root);
> +void kho_debugfs_blob_remove(struct kho_debugfs *dbg, void *blob);
> #else
> static inline int kho_debugfs_init(void) { return 0; }
> static inline void kho_in_debugfs_init(struct kho_debugfs *dbg,
> const void *fdt) { }
> static inline int kho_out_debugfs_init(struct kho_debugfs *dbg) { return 0; }
> -static inline int kho_debugfs_fdt_add(struct kho_debugfs *dbg, const char *name,
> - const void *fdt, size_t size,
> - bool root) { return 0; }
> -static inline void kho_debugfs_fdt_remove(struct kho_debugfs *dbg,
> - void *fdt) { }
> +static inline int kho_debugfs_blob_add(struct kho_debugfs *dbg,
> + const char *name, const void *blob,
> + size_t size, bool root) { return 0; }
> +static inline void kho_debugfs_blob_remove(struct kho_debugfs *dbg,
> + void *blob) { }
> #endif /* CONFIG_KEXEC_HANDOVER_DEBUGFS */
>
> #ifdef CONFIG_KEXEC_HANDOVER_DEBUG
>
> --
> 2.47.3
>
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2026-03-09 7:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-06 12:39 [PATCH v7 0/6] kho: history: track previous kernel version and kexec boot count Breno Leitao
2026-03-06 12:39 ` [PATCH v7 1/6] kho: add size parameter to kho_add_subtree() Breno Leitao
2026-03-06 12:39 ` [PATCH v7 2/6] kho: rename fdt parameter to blob in kho_add/remove_subtree() Breno Leitao
2026-03-09 7:58 ` Mike Rapoport [this message]
2026-03-06 12:39 ` [PATCH v7 3/6] kho: persist blob size in KHO FDT Breno Leitao
2026-03-09 8:04 ` Mike Rapoport
2026-03-06 12:39 ` [PATCH v7 4/6] kho: fix kho_in_debugfs_init() to handle non-FDT blobs Breno Leitao
2026-03-09 8:22 ` Mike Rapoport
2026-03-09 13:01 ` Breno Leitao
2026-03-06 12:39 ` [PATCH v7 5/6] kho: kexec-metadata: track previous kernel chain Breno Leitao
2026-03-06 12:39 ` [PATCH v7 6/6] kho: document kexec-metadata tracking feature Breno Leitao
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=aa59irg2P-sejKO5@kernel.org \
--to=rppt@kernel.org \
--cc=graf@amazon.com \
--cc=kernel-team@meta.com \
--cc=kexec@lists.infradead.org \
--cc=leitao@debian.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pasha.tatashin@soleen.com \
--cc=pratyush@kernel.org \
--cc=sj@kernel.org \
--cc=usamaarif642@gmail.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.