[PATCH] liveupdate: kho: Enable KHO by default

Pasha Tatashin posted 1 patch 2 months, 4 weeks ago
kernel/liveupdate/kexec_handover.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] liveupdate: kho: Enable KHO by default
Posted by Pasha Tatashin 2 months, 4 weeks ago
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
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Mike Rapoport 2 months, 3 weeks ago
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.
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Pasha Tatashin 2 months, 3 weeks ago
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.
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Mike Rapoport 2 months, 3 weeks ago
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.
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Alexander Graf 2 months, 3 weeks ago
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
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Mike Rapoport 2 months, 4 weeks ago
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.
Re: [PATCH] liveupdate: kho: Enable KHO by default
Posted by Pratyush Yadav 2 months, 4 weeks ago
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