On 11/11/25 7:26 AM, Pasha Tatashin wrote:
On Mon, Nov 10, 2025 at 11:11 PM Zhu Yanjun yanjun.zhu@linux.dev wrote:
In FC42, when I run "./luo_multi_session"
# ./luo_multi_session # [STAGE 1] Starting pre-kexec setup for multi-session test... # [STAGE 1] Creating state file for next stage (2)... # [STAGE 1] Creating empty sessions 'multi-test-empty-1' and 'multi-test-empty-2'... # [STAGE 1] Creating session 'multi-test-files-1' with one memfd... # [STAGE 1] Creating session 'multi-test-files-2' with two memfds... # [STAGE 1] Executing kexec...
Then the system hang. And via virt-viewer, a calltrace will appear.
Looks like mountroot fails, are you passing the same kernel parameters as the during cold boot? i.e. kexec -l -s --reuse-cmdline --initrd=[initramfs] [kernel]
Pasha
Hi, Pasha
Following your advice, the following can work well.
I am not sure if we can merge this commit into selftests/liveupdate mainline?
commit 44764c48a658987b7729c5bc2be9fd87832cfbdf (HEAD -> linux-next/master) Author: Zhu Yanjun yanjun.zhu@linux.dev Date: Thu Nov 13 11:45:21 2025 -0800
selftests/liveupdate: Fix the error "Unable to mount root fs on unknown-block"
If the initrd is not provide, the followings will appear. " Call Trace: <TASK> dump_stack_lvl+0x5d/0x80 vpanic+0x118/8x320 panic+0x6b/0x6b ? do_mount_root+0x115/0x130 mount_root_generic+0x1cf/0x270 prepare_namespace+0x1e1/0x230 kernel_init_freeable+0x136/8x140 ?_pfx_kernel_init+0x10/0x10 kernel_init+0x1a/0x140 ret_from_fork+0x130/0x1a8 ?_pfx_kernel_init+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </ TASK> Kernel Offset: 0x3000000 from Oxffffffff81000000 "
Signed-off-by: Zhu Yanjun yanjun.zhu@linux.dev
diff --git a/tools/testing/selftests/liveupdate/do_kexec.sh b/tools/testing/selftests/liveupdate/do_kexec.sh index bb396a92c3b8..4ee59abd0dd4 100755 --- a/tools/testing/selftests/liveupdate/do_kexec.sh +++ b/tools/testing/selftests/liveupdate/do_kexec.sh @@ -2,5 +2,5 @@ # SPDX-License-Identifier: GPL-2.0 set -e
-kexec -l -s --reuse-cmdline /boot/bzImage +kexec -l -s --reuse-cmdline /boot/bzImage --initrd /boot/initramfs-`uname -r`.img kexec -e
Thanks a lot.
Yanjun.Zhu
The call trace is in the attachment.
Yanjun.Zhu
在 2025/11/10 7:26, Pasha Tatashin 写道:
On Mon, Nov 10, 2025 at 8:16 AM Pratyush Yadav pratyush@kernel.org wrote:
On Sun, Nov 09 2025, Zhu Yanjun wrote:
在 2025/11/8 10:13, Pasha Tatashin 写道:
On Fri, Nov 7, 2025 at 6:36 PM Yanjun.Zhu yanjun.zhu@linux.dev wrote: > On 11/7/25 4:02 AM, Pasha Tatashin wrote: >> On Fri, Nov 7, 2025 at 7:00 AM Pasha Tatashin pasha.tatashin@soleen.com wrote: >>>> Hi, Pasha >>>> >>>> In our previous discussion, we talked about counting the number of times >>>> the kernel is rebooted via kexec. At that time, you suggested adding a >>>> variable in debugfs to keep track of this count. >>>> However, since debugfs is now optional, where would be an appropriate >>>> place to store this variable? >>> It is an optional config and can still be enabled if the live update >>> reboot number value needs to be accessed through debugfs. However, >>> given that debugfs does not guarantee a stable interface, tooling >>> should not be built to require these interfaces. >>> >>> In the WIP LUO [1] I have, I pr_info() the live update number during >>> boot and also store it in the incoming LUO FDT tree, which can also be >>> accessed through this optional debugfs interface. >>> >>> The pr_info message appears like this during boot: >>> [ 0.000000] luo: Retrieved live update data, liveupdate number: 17 >>> >>> Pasha >> Forgot to add link to WIP LUOv5: >> [1] https://github.com/soleen/linux/tree/luo/v5rc04 > Thanks a lot. I’ve carefully read this commit: > https://github.com/soleen/linux/commit/60205b9a95c319dc9965f119303a1d83f0ff0.... > > To be honest, I’d like to run some tests with who/luo, including the > selftest for kho/luo. Could you please share the steps with me? > > If the testing steps have already been documented somewhere, could you > please share the link? Currently the test performs in-kernel tests for FLB data, it creates a number of FLB for every registered LUO file-handler, which at the moment is only memfd.
It works together with any of the kexec based live update tests. In v5, I introduce two tests: luo_kexec_simple luo_multi_session
For example, with luo_multi_session:
Hi, Pasha
I enabled "CONFIG_LIVEUPDATE=y"
# ./luo_multi_session 1..0 # SKIP Failed to open /dev/liveupdate. Is the luo module loaded?
# ls /dev/liveupdate ls: cannot access '/dev/liveupdate': No such file or directory
# grep "LIVEUPDATE" -inrHI /boot/config-`uname -r` /boot/config-next-20251107-luo+:349:CONFIG_LIVEUPDATE=y /boot/config-next-20251107-luo+:11985:CONFIG_LIVEUPDATE_TEST=y
I made tests on FC42. But /dev/liveupdate is missing.
You need to add liveupdate=1 to your kernel cmdline to enable LUO and get /dev/liveupdate.
+1, kernel parameters require: kho=1 liveupdate=1
Pasha, your LUO series doesn't add the liveupdate parameter to kernel-parameters.txt. I think it should be done in the next version to this parameter is discoverable.
Yeah, that is missing, I will update that in a standalone patch, or in a next version.
Thanks, Pasha
-- Best Regards, Yanjun.Zhu