On Wed, Oct 14, 2026 10:06:26PM -0700, Markus Armbruster wrote:
> Dongli Zhang <[email protected]> writes:
>
>> On Wed, Oct 14, 2026 12:42:55AM -0700, Markus Armbruster wrote:
>>> Dongli Zhang <[email protected]> writes:
>>>
>>>> Add the cpr-luo migration mode for CPR through the Linux Live Update
>>>> Orchestrator (LUO). Subsequent changes preserve CPR state and RAMBlock
>>>> backing file descriptors in an LUO session across a host kernel update.
>>>>
>>>> Signed-off-by: Dongli Zhang <[email protected]>
>>>> ---
>>>> qapi/migration.json | 11 ++++++++++-
>>>> 1 file changed, 10 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/qapi/migration.json b/qapi/migration.json
>>>> index 889a9b89c2..ab117c3897 100644
>>>> --- a/qapi/migration.json
>>>> +++ b/qapi/migration.json
>>>> @@ -712,9 +712,18 @@
>>>> # with the '-machine aux-ram-share=on' option.
>>>> #
>>>> # (since 10.2)
>>>> +#
>>>> +# @cpr-luo: A CPR mode that preserves guest RAM backing file
>>>> +# descriptors and CPR state through the Linux Live Update
>>>> +# Orchestrator (LUO) across a host kernel update.
>>>> +#
>>>> +# This mode requires Linux with LUO support.
>>>
>>> Pardon my ignorant question: host or guest kernel?
>>>
>> Host KVM kernel.
>
> Suggest something like "This mode requires Linux with LUO support on the
> host", or "This mode requires the host to run Linux with LUO support".
Thank you very much!
>
>> cpr-luo is more similar to cpr-exec (assuming VFIO is not involved).
>>
>> cpr-exec (same process across exec):
>>
>> - RAMBlock fds are preserved across exec(). The metadata is transferred to
>> the
>> target via a memfd passed through an environment variable.
>> - The device state (i.e., virtio) is transferred through the main stream
>> (i.e.,
>> a file).
>>
>> cpr-transfer (two processes):
>>
>> - RAMBlock fds are preserved and transferred to the target QEMU via a UNIX
>> domain socket.
>> - The device state (i.e., virtio) is transferred through the main stream
>> (i.e.,
>> local TCP).
>>
>> cpr-reboot (across reboot):
>>
>> - The RAMBlock is always reconstructed. It is just a matter of whether to
>> save/load the memory data, depending on whether x-ignore-shared is enabled.
>> - The vmstate (i.e., virtio) is transferred through the main stream (i.e., a
>> file).
>>
>> New cpr-luo (across kexec/LUO/KHO):
>>
>> - RAMBlock fds are preserved and transferred across kexec to the target QEMU
>> via
>> LUO/KHO, identified by a LUO session and tokens.
>> - The device state (i.e., virtio) is transferred through the main stream
>> (i.e.,
>> a file).
>
> Is this covered in the documentation?
The existing doc is already in the QEMU source code and explains the usage and
basic mechanism.
https://www.qemu.org/docs/master/devel/migration/CPR.html
I just prefer to summarize it in my own way, as in my previous email, as that
helps me compare different modes. I have added cpr-luo to the doc in patch 0021.
Thank you very much!
Dongli Zhang