Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
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: Fri, 4 Sep 2026 22:19:56 -0300	[thread overview]
Message-ID: <20260905011956.GA856309@nvidia.com> (raw)
In-Reply-To: <aoSCCTTBn9D5hqzk@google.com>

On Tue, Aug 18, 2026 at 09:02:17AM -0700, Sean Christopherson wrote:
> On Tue, Aug 18, 2026, Pratyush Yadav wrote:
> > 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:
> > >> 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 rule is thou shalt not break userspace.  Whether or not the
> breakage is the result of an explicit ABI change is irrelevant.

I argued strongly for this simpler approach, I will write here the
reasoning I gave.

Firstly, "live update" is not uABI per-say. It is not "userspace
breaking", and it is not a "regression". It is an internal kernel
mechanism to allow the kernel to self-upgrade. In the industry it is
typical any of these hitless update/patch/etc schemes to only work
between a few tightly controlled version pairs.

Asking upstream to carry a full matrix of every single version pair
ever released is massive over-engineering and cost on upstream
maintainers. Refusing to do this is not a uABI breakage, it is not a
regression, it is simply a lack of a feature.

I think upstream should start by agreeing to only support forward
going upgrades within a single stable branch. If live update becomes a
success then maybe we could do from a stable branch to the immediate
next stable branch too. I don't know.

This alone is already much more powerful than live patching.

The balancing issue here is the impact on the kernel subsystems
adopting luo. Every time you change anything about the internal
function of the subystem you now have to go test a massive version
pair matrix to make sure everything works? No thanks.

Luo is very invasive and a huge PITA at the best of times. It doesn't
need to be even worse.

> It's probably fine for Google and other large companies that tightly
> control their kernels and use cases, and have the resources to
> juggle the resulting complexity, e.g. have kernel engineers on staff
> to track feature and dependencies, coordinate and plan kernel
> upgrades, etc.

Every downstream that wants to support luo is going to necessarily
severely restrict the version pairs that can work. Like a RH type
distro may only support it for 9.1.x -> 9.1.x+1 - they can carry the
cost of figuring out how to manage their patching and compatability
matrix on their own with the tools upstream provides.

> engineers on staff to help them thread the needle you describe
> above.  And if supporting live update as a general feature for all
> users of the kernel isn't being factored into design considerations,
> then that needs to change, otherwise this is all dead in the water.

General uses can use upstream and do CVE upgrades within a single
stable branch. That's good enough, lets start there. We don't need to
boil the ocean.

> I also don't see the point.  Maintaining a rigid save/restore ABI is
> annoying, but it's not _hard_ (or at least, not _that_ hard),
> especially if there's a set

I was told KVM had the smallest luo footprint of everything, so
perhaps your perspective is different.

In other places luo becomes coupled to the internal datastructures of
the kernel, we literally have to preserve lots of kernel memory
utterly unchanged without any kind of serialization at all. This
inevitably creates restrictions on the evolution of the kernel in
general if we can no longer change in-kernel architecture because it
would make some data structure incompatible with a kernel 10 years
old.

There is also a need for *downgrade*. Meaning the N+1 kernel has to
strictly emulate the limitations and capabilities of the N kernel so
it can be rolled back. Can you imagine the nightmare of trying to
codify the feature progression for every single kernel release forever
in some impossible scheme to enable this? Again, no thanks.

So, what upstream can reasonably do, that still provides real value
without severely burdening every subsystem, is upgrades within a
stable kernel branch only.

If some distro or CSP wants to do more, they can deal with it. They
have a far, far simpler problem because they can exactly lock down
their version pairs to a very small universe. They don't need a single
kernel that can emulate 10 different releases of behaviors
concurrently.

Jason


  parent reply	other threads:[~2026-09-05  1:20 UTC|newest]

Thread overview: 51+ 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-08-11 13:27     ` tarunsahu
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
2026-08-15 10:43             ` Pratyush Yadav
2026-08-17 14:37               ` Sean Christopherson
2026-08-18 13:43                 ` Pratyush Yadav
2026-08-18 16:02                   ` Sean Christopherson
2026-08-21 13:43                     ` Pratyush Yadav
2026-08-21 15:34                       ` Sean Christopherson
2026-09-03 15:23                         ` tarunsahu
2026-09-05  1:19                     ` Jason Gunthorpe [this message]
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=20260905011956.GA856309@nvidia.com \
    --to=jgg@nvidia.com \
    --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=pratyush@kernel.org \
    --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