kernel/liveupdate/kexec_handover.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Upcoming LUO requires KHO for its operations, the requirement to place
both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
by default.
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
---
kernel/liveupdate/kexec_handover.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
index b54ca665e005..568cd9fe9aca 100644
--- a/kernel/liveupdate/kexec_handover.c
+++ b/kernel/liveupdate/kexec_handover.c
@@ -51,7 +51,7 @@ union kho_page_info {
static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
-static bool kho_enable __ro_after_init;
+static bool kho_enable __ro_after_init = true;
bool kho_is_enabled(void)
{
base-commit: ab40c92c74c6b0c611c89516794502b3a3173966
--
2.51.2.1041.gc1ab5b90ca-goog
On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote:
> Upcoming LUO requires KHO for its operations, the requirement to place
> both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
> by default.
I though more about this and it seems too much of a change. kho=1 enables
scratch areas and that significantly changes how free pages are distributed
in the free lists.
Let's go with a Kconfig option we discussed of-list:
(this is on top of the current mmotm/mm-nonmm-unstable)
From 823299d80aa4f7c16ef6cfd798a19e1dfe1a91ab Mon Sep 17 00:00:00 2001
From: Pasha Tatashin <pasha.tatashin@soleen.com>
Date: Fri, 14 Nov 2025 09:27:47 +0200
Subject: [PATCH] kho: Allow KHO to be enabled by default
Upcoming LUO requires KHO for its operations, the requirement to place
both KHO=on and liveupdate=on becomes reduntant. Let's allow KHO to be
enabled by default, and CONFIG_LIVEUPDATE can select this CONFIG.
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
---
kernel/liveupdate/Kconfig | 8 ++++++++
kernel/liveupdate/kexec_handover.c | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/kernel/liveupdate/Kconfig b/kernel/liveupdate/Kconfig
index d7344d347f69..25c9a4d7781f 100644
--- a/kernel/liveupdate/Kconfig
+++ b/kernel/liveupdate/Kconfig
@@ -63,4 +63,12 @@ config KEXEC_HANDOVER_DEBUGFS
Also, enables inspecting the KHO fdt trees with the debugfs binary
blobs.
+config KEXEC_HANDOVER_ENABLE_DEFAULT
+ bool "Enable kexec handover by default"
+ depends on KEXEC_HANDOVER
+ help
+ Enable the kexec handover by default. It is equivalent of passing
+ kho=on via kernel parameter, and can be overwritten to off via
+ kho=off.
+
endmenu
diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
index 568cd9fe9aca..23a3df297bb3 100644
--- a/kernel/liveupdate/kexec_handover.c
+++ b/kernel/liveupdate/kexec_handover.c
@@ -51,7 +51,7 @@ union kho_page_info {
static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
-static bool kho_enable __ro_after_init = true;
+static bool kho_enable __ro_after_init = IS_ENABLED(CONFIG_KEXEC_HANDOVER_ENABLE_DEFAULT);
bool kho_is_enabled(void)
{
--
2.50.1
--
Sincerely yours,
Mike.
On Fri, Nov 14, 2025 at 2:30 AM Mike Rapoport <rppt@kernel.org> wrote:
>
> On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote:
> > Upcoming LUO requires KHO for its operations, the requirement to place
> > both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
> > by default.
>
> I though more about this and it seems too much of a change. kho=1 enables
> scratch areas and that significantly changes how free pages are distributed
> in the free lists.
>
> Let's go with a Kconfig option we discussed of-list:
> (this is on top of the current mmotm/mm-nonmm-unstable)
I will include this into the KHO simplification series
>
> From 823299d80aa4f7c16ef6cfd798a19e1dfe1a91ab Mon Sep 17 00:00:00 2001
> From: Pasha Tatashin <pasha.tatashin@soleen.com>
> Date: Fri, 14 Nov 2025 09:27:47 +0200
> Subject: [PATCH] kho: Allow KHO to be enabled by default
>
> Upcoming LUO requires KHO for its operations, the requirement to place
> both KHO=on and liveupdate=on becomes reduntant. Let's allow KHO to be
> enabled by default, and CONFIG_LIVEUPDATE can select this CONFIG.
>
> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> ---
> kernel/liveupdate/Kconfig | 8 ++++++++
> kernel/liveupdate/kexec_handover.c | 2 +-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/liveupdate/Kconfig b/kernel/liveupdate/Kconfig
> index d7344d347f69..25c9a4d7781f 100644
> --- a/kernel/liveupdate/Kconfig
> +++ b/kernel/liveupdate/Kconfig
> @@ -63,4 +63,12 @@ config KEXEC_HANDOVER_DEBUGFS
> Also, enables inspecting the KHO fdt trees with the debugfs binary
> blobs.
>
> +config KEXEC_HANDOVER_ENABLE_DEFAULT
> + bool "Enable kexec handover by default"
> + depends on KEXEC_HANDOVER
> + help
> + Enable the kexec handover by default. It is equivalent of passing
> + kho=on via kernel parameter, and can be overwritten to off via
> + kho=off.
> +
> endmenu
> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
> index 568cd9fe9aca..23a3df297bb3 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -51,7 +51,7 @@ union kho_page_info {
>
> static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
>
> -static bool kho_enable __ro_after_init = true;
> +static bool kho_enable __ro_after_init = IS_ENABLED(CONFIG_KEXEC_HANDOVER_ENABLE_DEFAULT);
>
> bool kho_is_enabled(void)
> {
> --
> 2.50.1
>
>
>
> --
> Sincerely yours,
> Mike.
On Fri, Nov 14, 2025 at 09:13:01AM -0500, Pasha Tatashin wrote: > On Fri, Nov 14, 2025 at 2:30 AM Mike Rapoport <rppt@kernel.org> wrote: > > > > On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote: > > > Upcoming LUO requires KHO for its operations, the requirement to place > > > both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled > > > by default. > > > > I though more about this and it seems too much of a change. kho=1 enables > > scratch areas and that significantly changes how free pages are distributed > > in the free lists. > > > > Let's go with a Kconfig option we discussed of-list: > > (this is on top of the current mmotm/mm-nonmm-unstable) > > I will include this into the KHO simplification series Please add Alex's Reviewed-by as well. -- Sincerely yours, Mike.
On 14.11.25 08:30, Mike Rapoport wrote:
> On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote:
>> Upcoming LUO requires KHO for its operations, the requirement to place
>> both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
>> by default.
> I though more about this and it seems too much of a change. kho=1 enables
> scratch areas and that significantly changes how free pages are distributed
> in the free lists.
>
> Let's go with a Kconfig option we discussed of-list:
> (this is on top of the current mmotm/mm-nonmm-unstable)
>
> From 823299d80aa4f7c16ef6cfd798a19e1dfe1a91ab Mon Sep 17 00:00:00 2001
> From: Pasha Tatashin <pasha.tatashin@soleen.com>
> Date: Fri, 14 Nov 2025 09:27:47 +0200
> Subject: [PATCH] kho: Allow KHO to be enabled by default
>
> Upcoming LUO requires KHO for its operations, the requirement to place
> both KHO=on and liveupdate=on becomes reduntant. Let's allow KHO to be
> enabled by default, and CONFIG_LIVEUPDATE can select this CONFIG.
Looks much better, yes :). You can also imply this option automatically
when LUO=y.
Reviewed-by: Alexander Graf <graf@amazon.com>
Alex
>
> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> ---
> kernel/liveupdate/Kconfig | 8 ++++++++
> kernel/liveupdate/kexec_handover.c | 2 +-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/liveupdate/Kconfig b/kernel/liveupdate/Kconfig
> index d7344d347f69..25c9a4d7781f 100644
> --- a/kernel/liveupdate/Kconfig
> +++ b/kernel/liveupdate/Kconfig
> @@ -63,4 +63,12 @@ config KEXEC_HANDOVER_DEBUGFS
> Also, enables inspecting the KHO fdt trees with the debugfs binary
> blobs.
>
> +config KEXEC_HANDOVER_ENABLE_DEFAULT
> + bool "Enable kexec handover by default"
> + depends on KEXEC_HANDOVER
> + help
> + Enable the kexec handover by default. It is equivalent of passing
> + kho=on via kernel parameter, and can be overwritten to off via
> + kho=off.
> +
> endmenu
> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
> index 568cd9fe9aca..23a3df297bb3 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -51,7 +51,7 @@ union kho_page_info {
>
> static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
>
> -static bool kho_enable __ro_after_init = true;
> +static bool kho_enable __ro_after_init = IS_ENABLED(CONFIG_KEXEC_HANDOVER_ENABLE_DEFAULT);
>
> bool kho_is_enabled(void)
> {
> --
> 2.50.1
>
>
>
> --
> Sincerely yours,
> Mike.
Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Christof Hellmis
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597
On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote:
>
> Subject: [PATCH] liveupdate: kho: Enable KHO by default
No need to put a directory (liveupdate) prefix here. "kho: " is enough.
With that fixed
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> Upcoming LUO requires KHO for its operations, the requirement to place
> both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
> by default.
>
> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> ---
> kernel/liveupdate/kexec_handover.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
> index b54ca665e005..568cd9fe9aca 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -51,7 +51,7 @@ union kho_page_info {
>
> static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
>
> -static bool kho_enable __ro_after_init;
> +static bool kho_enable __ro_after_init = true;
>
> bool kho_is_enabled(void)
> {
>
> base-commit: ab40c92c74c6b0c611c89516794502b3a3173966
> --
> 2.51.2.1041.gc1ab5b90ca-goog
>
--
Sincerely yours,
Mike.
On Mon, Nov 10 2025, Mike Rapoport wrote:
> On Mon, Nov 10, 2025 at 01:07:15PM -0500, Pasha Tatashin wrote:
>>
>> Subject: [PATCH] liveupdate: kho: Enable KHO by default
>
> No need to put a directory (liveupdate) prefix here. "kho: " is enough.
+1
>
> With that fixed
>
> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
>
>> Upcoming LUO requires KHO for its operations, the requirement to place
>> both KHO=on and liveupdate=on becomes redundant. Set KHO to be enabled
>> by default.
>>
>> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
>> ---
>> kernel/liveupdate/kexec_handover.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
>> index b54ca665e005..568cd9fe9aca 100644
>> --- a/kernel/liveupdate/kexec_handover.c
>> +++ b/kernel/liveupdate/kexec_handover.c
>> @@ -51,7 +51,7 @@ union kho_page_info {
>>
>> static_assert(sizeof(union kho_page_info) == sizeof(((struct page *)0)->private));
>>
>> -static bool kho_enable __ro_after_init;
>> +static bool kho_enable __ro_after_init = true;
>>
>> bool kho_is_enabled(void)
>> {
>>
>> base-commit: ab40c92c74c6b0c611c89516794502b3a3173966
>> --
>> 2.51.2.1041.gc1ab5b90ca-goog
>>
--
Regards,
Pratyush Yadav
© 2016 - 2026 Red Hat, Inc.