From: Mike Rapoport <rppt@kernel.org>
To: Evangelos Petrongonas <epetron@amazon.de>
Cc: Ard Biesheuvel <ardb@kernel.org>,
Alexander Graf <graf@amazon.com>,
Changyuan Lyu <changyuanl@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Baoquan He <bhe@redhat.com>,
kexec@lists.infradead.org, linux-mm@kvack.org,
linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org,
nh-open-source@amazon.com
Subject: Re: [PATCH v2 1/2] kexec: introduce is_kho_boot()
Date: Wed, 20 Aug 2025 11:24:17 +0300 [thread overview]
Message-ID: <aKWGMbueQBaB5Wsi@kernel.org> (raw)
In-Reply-To: <7043f4da31390c58bb7721a3774c30998997df44.1755643201.git.epetron@amazon.de>
On Tue, Aug 19, 2025 at 11:22:45PM +0000, Evangelos Petrongonas wrote:
> During early initialisation, after a kexec, other components, like EFI
> need to know if a KHO enabled kexec is performed. The `kho_is_enabled`
> function is not enough as in the early stages, it only reflects
> whether the cmdline has KHO enabled, not if an actual KHO FDT exists.
>
> Extend the KHO API with `is_kho_boot()` to provide a way for components
> to check if a KHO enabled kexec is performed.
>
> Signed-off-by: Evangelos Petrongonas <epetron@amazon.de>
> ---
> include/linux/kexec_handover.h | 6 ++++++
> kernel/kexec_handover.c | 20 ++++++++++++++++++++
> 2 files changed, 26 insertions(+)
>
> diff --git a/include/linux/kexec_handover.h b/include/linux/kexec_handover.h
> index 348844cffb13..559d13a3bc44 100644
> --- a/include/linux/kexec_handover.h
> +++ b/include/linux/kexec_handover.h
> @@ -40,6 +40,7 @@ struct kho_serialization;
>
> #ifdef CONFIG_KEXEC_HANDOVER
> bool kho_is_enabled(void);
> +bool is_kho_boot(void);
>
> int kho_preserve_folio(struct folio *folio);
> int kho_preserve_phys(phys_addr_t phys, size_t size);
> @@ -60,6 +61,11 @@ static inline bool kho_is_enabled(void)
> return false;
> }
>
> +static inline bool is_kho_boot(void)
> +{
> + return false;
> +}
> +
> static inline int kho_preserve_folio(struct folio *folio)
> {
> return -EOPNOTSUPP;
> diff --git a/kernel/kexec_handover.c b/kernel/kexec_handover.c
> index 69b953551677..a1a4e76e0ff1 100644
> --- a/kernel/kexec_handover.c
> +++ b/kernel/kexec_handover.c
> @@ -925,6 +925,26 @@ static const void *kho_get_fdt(void)
> return kho_in.fdt_phys ? phys_to_virt(kho_in.fdt_phys) : NULL;
> }
>
> +/**
> + * is_kho_boot - check if current kernel was booted via KHO-enabled
> + * kexec
> + *
> + * This function checks if the current kernel was loaded through a kexec
> + * operation with KHO enabled, by verifying both that KHO is enabled via
> + * cmdline AND that a valid KHO FDT was passed.
> + *
> + * Note: This function returns reliable results only after
> + * kho_populate() has been called during early boot. Before that,
> + * it may return false even if KHO data is present.
> + *
> + * Return: true if booted via KHO-enabled kexec, false otherwise
> + */
> +bool is_kho_boot(void)
> +{
> + return !!kho_get_fdt() && kho_enable;
Let's drop '&& kho_enable' and presume that a kernel that booted with KHO
FDT goes through KHO revival.
With that change feel free to add
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> +}
> +EXPORT_SYMBOL_GPL(is_kho_boot);
> +
> /**
> * kho_retrieve_subtree - retrieve a preserved sub FDT by its name.
> * @name: the name of the sub FDT passed to kho_add_subtree().
> --
> 2.47.3
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2025-08-20 9:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-19 23:22 [PATCH v2 0/2] efi: Fix EFI boot with kexec handover (KHO) Evangelos Petrongonas
2025-08-19 23:22 ` [PATCH v2 1/2] kexec: introduce is_kho_boot() Evangelos Petrongonas
2025-08-20 8:24 ` Mike Rapoport [this message]
2025-08-19 23:22 ` [PATCH v2 2/2] efi: Support booting with kexec handover (KHO) Evangelos Petrongonas
2025-08-20 8:09 ` Mike Rapoport
2025-08-20 8:20 ` [PATCH v2 0/2] efi: Fix EFI boot " Mike Rapoport
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=aKWGMbueQBaB5Wsi@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=bhe@redhat.com \
--cc=changyuanl@google.com \
--cc=epetron@amazon.de \
--cc=graf@amazon.com \
--cc=kexec@lists.infradead.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nh-open-source@amazon.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.