Linux Documentation
 help / color / mirror / Atom feed
From: Pratyush Yadav <pratyush@kernel.org>
To: Sean Christopherson <seanjc@google.com>
Cc: Pratyush Yadav <pratyush@kernel.org>,
	 Tarun Sahu <tarunsahu@google.com>,
	 ackerleytng@google.com,  fuad.tabba@linux.dev,
	Andrew Morton <akpm@linux-foundation.org>,
	 dmatlack@google.com,  Shuah Khan <skhan@linuxfoundation.org>,
	 Jonathan Corbet <corbet@lwn.net>,
	david@redhat.com,  Pasha Tatashin <pasha.tatashin@soleen.com>,
	sagis@google.com,  Paolo Bonzini <pbonzini@redhat.com>,
	 Mike Rapoport <rppt@kernel.org>,
	 Alexander Graf <graf@amazon.com>,
	linux-kselftest@vger.kernel.org,  andre.przywara@arm.com,
	michael.roth@amd.com,  linux-kernel@vger.kernel.org,
	 linux-mm@kvack.org, will@kernel.org,  vannapurve@google.com,
	 maz@kernel.org, fvdl@google.com,  kvm@vger.kernel.org,
	 oliver.upton@linux.dev, kvmarm@lists.linux.dev,
	 alexandru.elisei@arm.com,  skhawaja@google.com,
	aneesh.kumar@kernel.org,  linux-doc@vger.kernel.org,
	 David Hildenbrand <david@kernel.org>,
	 yan.y.zhao@intel.com,  kexec@lists.infradead.org,
	suzuki.poulose@arm.com
Subject: Re: [PATCH v4 05/11] KVM: LUO: Support VM preservation across live updates
Date: Tue, 18 Aug 2026 15:43:16 +0200	[thread overview]
Message-ID: <2vxzy0e3zgqz.fsf@kernel.org> (raw)
In-Reply-To: <aoMcqp0gr06YXAPU@google.com> (Sean Christopherson's message of "Mon, 17 Aug 2026 07:37:30 -0700")

Hi Sean,

On Mon, Aug 17 2026, Sean Christopherson wrote:

> On Sat, Aug 15, 2026, Pratyush Yadav wrote:
>> On Wed, Aug 12 2026, Sean Christopherson wrote:
>> > On Wed, Aug 12, 2026, Pratyush Yadav wrote:
>> >> This is ABI between kernels. It needs to be stable-ish so you can move
>> >> from one kernel version to another. At the same time, unlike userspace
>> >> ABI, it can change.
>> >
>> > Uh, yeah, so KVM has been managing such immutable ABI for practically its entire
>> > existence.  KVM's save/restore uAPI has exactly what you're describing: serialization
>> > ABI that needs to be backwards and forwards compatible between different kernels
>> > in order to support both upgrade and rollback scenarios via live migration.
>> 
>> I think there is a slight difference between KVM's save/resture uAPI and
>> live update's ABI. With KVM's uAPI, you need to maintain strict
>> backwards compatibility because userspace reads what you output. So if
>> you change the layout, userspace will interpret it wrong and might
>> break.
>> 
>> With live update, the ABI never gets to userspace. It is used to talk
>> between kernels directly. So if you do break that, your userspace keeps
>> working fine, you just might not be able to live update to the
>> incompatible kernel.
>> 
>> So with live update, we don't need to keep backwards compatibility in
>> the ABI forever. Of course, it is good to minimize changes, but we have
>> more freedom to change it.
>
> Ah.  So this is the heart of the disconnect.  I very strongly disagree with the
> statement that live update doesn't need to support backwards compatibility.  I
> can totally believe that the folks working on live update are ok breaking backwards
> compatibility because their use cases are "fine" with such breakage.  And I can
> also believe live update as an upstream kernel feature being developed by those
> same folks is also ok with breaking backwards compatibility.
>
> But with my upstream KVM maintainer hat on, I am not ok with that.  I did not agree
> to support a world where KVM is allowed to break backwards compatibility, so long
> as it's done "carefully" or whatever.  If y'all want to deal with the resulting
> complexity, that's fine by me, but you'll be doing it without KVM.

Let's step back a bit. I don't think backwards compatibility in the
_ABI_ is all that important in live update's context. What is important
is that our users are able to live update from kernel version X to Y.
The line format the kernel uses to describe its state is an
implementation detail. Our users never see it.

The high level idea is that when you need to make a change to the ABI so
the kernel can better describe the objects/resources/files it is
passing, you create a new version of the ABI and allow transitions from
older versions.

Say you make some changes and need an ABI version v5. You don't get rid
of v4. You keep it around. LUO core will facilitate picking the right
version for the next kernel. So it will be possible to seamlessly
upgrade your kernel that speaks v4 to a new kernel that speaks v4 and
v5. Now this kernel can start speaking v5 if its successor speaks v5
too. And so on for going to v6 and v7, etc.

After a "reasonable" time given for upgrades, you deprecate v4. v4 has
been around long enough and our users have had a chance to go to kernels
speaking newer versions. That's when you remove the code for v4 from the
kernel.

We can argue what "reasonable" means, but the core idea stays. 

It will still be possible to go back to v4 or earlier, but you'd need an
extra stop along the way. And of course, vendors can keep a wider
support matrix downstream if they see the need for it.

Does this idea of "backwards compatibility" sound acceptable to you, at
least at a high level?

Now coming back to today's reality. We don't yet support this version
transition. I proposed the idea at LPC 2025 [0]. Logan Odell has taken
over the work since I have other things on my plate, but it is something
being actively developed. Logan recently sent some RFCs [1] for this
too, though TBH I haven't yet gotten to those patches. We also have
proposed a talk about this at LPC 2026, it would be great if you could
attend (if the talk gets accepted).

If you say that we should figure this version transition out and land it
upstream before we land the KVM code, I think that's a fair ask. I can
work with that.

But I think we first need to agree on the principles of the
compatibility model I described above.

[0] https://lpc.events/event/19/contributions/2049/
[1] https://lore.kernel.org/kexec/20260731215224.831696-1-loganodell@google.com/T/#u

>
> I totally understand that exploratory work and initial development is best done
> in private and/or in a small working groups.  But decisions that will significantly
> impact multiple subsystems need to be made *with* those subystems.  I mean,
> obviously it's possible to make a decision in a small group and then "publish"
> the result later, but then as is happening here, the community and subsystem
> maintainers like me may refuse to play ball if they disagree.

The design of live update was discussed and agreed upon in the open.
David Rientjes (and now Pasha) has been hosting the live update
biweeklies [2] from the very start of the project. The series is open to
everyone and notes shared for those who couldn't join. This meeting was
attended by a lot of people from different companies and different
subsystem backgrounds.

There have also been a microconference at LPC 2025 where topics around
live update in PCI, MM, VFIO, IOMMU, etc. were discussed, along with
presentations at subsystem tracks in other conferences.

Of course, it is impossible to get all maintainers of all subsystems to
attend these sessions or conferences. That's fine.

But I think it is quite unfair to say that live update is developed in
private or in small groups.

[2] https://lore.kernel.org/all/?q=s%3A%22%5BHypervisor+Live+Update%5D%22

-- 
Regards,
Pratyush Yadav

  reply	other threads:[~2026-08-18 13:43 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-28 12:11 [PATCH v4 00/11] liveupdate: kvm: Guest_memfd preservation Tarun Sahu
2026-07-28 12:11 ` [PATCH v4 01/11] liveupdate: Add LIVEUPDATE_GUEST_MEMFD config option Tarun Sahu
2026-08-10 22:58   ` Sean Christopherson
2026-08-11 13:26     ` tarunsahu
2026-08-11 14:48       ` Sean Christopherson
2026-08-18 16:11         ` tarunsahu
2026-07-28 12:11 ` [PATCH v4 02/11] KVM: Introduce kvm_create_vm_file() helper Tarun Sahu
2026-07-30 17:36   ` Ackerley Tng
2026-08-10 10:14     ` tarunsahu
2026-08-10 23:05   ` Sean Christopherson
2026-07-28 12:11 ` [PATCH v4 03/11] KVM: Export kvm_uevent_notify_vm_create() Tarun Sahu
2026-07-28 12:11 ` [PATCH v4 04/11] KVM: Track weak reference to vm_file in struct kvm Tarun Sahu
2026-08-10 23:23   ` Sean Christopherson
2026-08-18 16:29     ` tarunsahu
2026-07-28 12:11 ` [PATCH v4 05/11] KVM: LUO: Support VM preservation across live updates Tarun Sahu
2026-08-10 23:42   ` Sean Christopherson
2026-08-11 11:31     ` Pratyush Yadav
2026-08-11 14:05       ` Sean Christopherson
2026-08-12 13:45         ` Pratyush Yadav
2026-08-12 15:17           ` Sean Christopherson
     [not found]             ` <2vxzqzjz1x5f.fsf@kernel.org>
2026-08-17 14:37               ` Sean Christopherson
2026-08-18 13:43                 ` Pratyush Yadav [this message]
2026-08-18 16:02                   ` Sean Christopherson
2026-08-18 15:28               ` tarunsahu
2026-08-18 16:10         ` tarunsahu
2026-07-28 12:11 ` [PATCH v4 06/11] KVM: guest_memfd: Move internal definitions to internal header Tarun Sahu
2026-07-30 18:12   ` Ackerley Tng
2026-08-11 10:31     ` Pratyush Yadav
2026-07-28 12:11 ` [PATCH v4 07/11] KVM: guest_memfd: Add support for freezing mappings Tarun Sahu
2026-07-30 17:46   ` Ackerley Tng
2026-08-10 13:15     ` tarunsahu
2026-07-30 18:12   ` Ackerley Tng
2026-08-10 13:08     ` tarunsahu
2026-08-10 23:44   ` Sean Christopherson
2026-08-18 16:33     ` tarunsahu
2026-07-28 12:11 ` [PATCH v4 08/11] KVM: guest_memfd: Add support for preservation via LUO Tarun Sahu
2026-07-30 18:16   ` Ackerley Tng
2026-08-10 13:20     ` tarunsahu
2026-07-28 12:11 ` [PATCH v4 09/11] docs: liveupdate: Add documentation for VM and guest_memfd preservation Tarun Sahu
2026-07-28 12:11 ` [PATCH v4 10/11] KVM: selftests: Split ____vm_create() and add vm_create_from_fd() Tarun Sahu
2026-07-28 12:11 ` [PATCH v4 11/11] KVM: selftests: Add guest_memfd_preservation_test Tarun Sahu
2026-07-30 18:18   ` Ackerley Tng
2026-08-10 13:22     ` tarunsahu
2026-08-18 16:35       ` tarunsahu
2026-08-11 10:06     ` Pratyush Yadav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2vxzy0e3zgqz.fsf@kernel.org \
    --to=pratyush@kernel.org \
    --cc=ackerleytng@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexandru.elisei@arm.com \
    --cc=andre.przywara@arm.com \
    --cc=aneesh.kumar@kernel.org \
    --cc=corbet@lwn.net \
    --cc=david@kernel.org \
    --cc=david@redhat.com \
    --cc=dmatlack@google.com \
    --cc=fuad.tabba@linux.dev \
    --cc=fvdl@google.com \
    --cc=graf@amazon.com \
    --cc=kexec@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maz@kernel.org \
    --cc=michael.roth@amd.com \
    --cc=oliver.upton@linux.dev \
    --cc=pasha.tatashin@soleen.com \
    --cc=pbonzini@redhat.com \
    --cc=rppt@kernel.org \
    --cc=sagis@google.com \
    --cc=seanjc@google.com \
    --cc=skhan@linuxfoundation.org \
    --cc=skhawaja@google.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tarunsahu@google.com \
    --cc=vannapurve@google.com \
    --cc=will@kernel.org \
    --cc=yan.y.zhao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox