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

Reply via email to