Re: [PATCH v5 02/22] liveupdate: luo_core: integrate with KHO
From: Mike Rapoport <rppt@kernel.org>
Date: 2025-11-10 13:01:24
Also in:
linux-doc, linux-fsdevel, linux-mm, lkml
On Fri, Nov 07, 2025 at 04:03:00PM -0500, Pasha Tatashin wrote:
Integrate the LUO with the KHO framework to enable passing LUO state
across a kexec reboot.
When LUO is transitioned to a "prepared" state, it tells KHO to
finalize, so all memory segments that were added to KHO preservation
list are getting preserved. After "Prepared" state no new segments
can be preserved. If LUO is canceled, it also tells KHO to cancel the
serialization, and therefore, later LUO can go back into the prepared
state.
This patch introduces the following changes:
- During the KHO finalization phase allocate FDT blob.
- Populate this FDT with a LUO compatibility string ("luo-v1").
LUO now depends on `CONFIG_KEXEC_HANDOVER`. The core state transition
logic (`luo_do_*_calls`) remains unimplemented in this patch.
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
---...
quoted hunk ↗ jump to hunk
@@ -69,7 +197,22 @@ early_param("liveupdate", early_liveupdate_param); */ int liveupdate_reboot(void) { - return 0; + int err; + + if (!liveupdate_enabled()) + return 0; + + err = kho_finalize();
kho_finalize() should be really called from kernel_kexec(). We avoided it because of the concern that memory allocations that late in reboot could be an issue. But I looked at hibernate() and it does allocations on reboot->hibernate path, so adding kho_finalize() as the first step of kernel_kexec() seems fine. And if we prioritize stateless memory tracking in KHO, it won't be a concern at all.
+ if (err) {
+ pr_err("kho_finalize failed %d\n", err);
+ /*
+ * kho_finalize() may return libfdt errors, to aboid passing to
+ * userspace unknown errors, change this to EAGAIN.
+ */
+ err = -EAGAIN;
+ }
+
+ return err;
}
/**-- Sincerely yours, Mike.