[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a1aa7736-d014-477f-a516-2281a70fc8c1@linux.dev>
Date: Wed, 12 Nov 2025 18:11:45 -0800
From: "Yanjun.Zhu" <yanjun.zhu@...ux.dev>
To: Pasha Tatashin <pasha.tatashin@...een.com>
Cc: Pratyush Yadav <pratyush@...nel.org>, akpm@...ux-foundation.org,
brauner@...nel.org, corbet@....net, graf@...zon.com, jgg@...pe.ca,
linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org,
linux-mm@...ck.org, masahiroy@...nel.org, ojeda@...nel.org,
rdunlap@...radead.org, rppt@...nel.org, tj@...nel.org
Subject: Re: [PATCH v9 1/9] kho: make debugfs interface optional
On 11/12/25 5:41 PM, Yanjun.Zhu wrote:
>
> On 11/11/25 7:26 AM, Pasha Tatashin wrote:
>> On Mon, Nov 10, 2025 at 11:11 PM Zhu Yanjun <yanjun.zhu@...ux.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]
>
>
> Thanks a lot. It can work now. The logs are as below:
>
> "
>
> # [STAGE 2] Starting post-kexec verification...
> # [STAGE 2] Retrieving all sessions...
> # [STAGE 2] Verifying contents of session 'multi-test-files-1'...
> # [STAGE 2] Verifying contents of session 'multi-test-files-2'...
> # [STAGE 2] Test data verified successfully.
> # [STAGE 2] Finalizing all test sessions...
> # [STAGE 2] Finalizing state session...
> #
> --- MULTI-SESSION KEXEC TEST PASSED ---
> "
>
> Yanjun.Zhu
Hi, Pasha
In my tests, I found that luo_kexec_simple and luo_multi_session
currently depend on the glibc-static library.
If this library is not installed, build errors occur.
By making the following changes, luo_kexec_simple and luo_multi_session
would no longer depend on glibc-static, reducing external library
dependencies.
I am not sure whether you agree with these proposed changes.
diff --git a/tools/testing/selftests/liveupdate/Makefile
b/tools/testing/selftests/liveupdate/Makefile
index 6ee6efeec62d..b226b9976150 100644
--- a/tools/testing/selftests/liveupdate/Makefile
+++ b/tools/testing/selftests/liveupdate/Makefile
@@ -3,7 +3,6 @@
KHDR_INCLUDES ?= -I../../../../usr/include
CFLAGS += -Wall -O2 -Wno-unused-function
CFLAGS += $(KHDR_INCLUDES)
-LDFLAGS += -static
OUTPUT ?= .
# --- Test Configuration (Edit this section when adding new tests) ---
Yanjun.Zhu
>
>
>>
>> Pasha
>>
>>> 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@...nel.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@...ux.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@...een.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/60205b9a95c319dc9965f119303a1d83f0ff08fa.
>>>>>>>>
>>>>>>>>
>>>>>>>> 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
Powered by blists - more mailing lists