[RFC PATCH 0/3] liveupdate: Move to feature flags for LUO and memfd ABI compatibility
Sean Christopherson
seanjc at google.com
Wed Sep 9 17:58:28 PDT 2026
On Fri, Sep 04, 2026, Jason Gunthorpe wrote:
> On Fri, Sep 04, 2026 at 10:24:21PM +0000, David Matlack wrote:
>
> > The proposal here (which is inspired by the KVM UAPI) is to ensure every
> > LUO ABI struct has 2 properties:
> >
> > 1. A field to encode options/features (e.g. u64 flags).
> > 2. A way way to grow without breaking backward compatibility (e.g. so
> > we can add new fields).
> >
> > Each flag can mean whatever it needs to. e.g. It can indicate the
> > precence of one or more fields (i.e. new fields in the struct), or it
> > can mean a field now has a different meaning (i.e. union in the struct).
> >
> > This would enable adding support for new features without breaking
> > backward compatibility. Downstream users would have to ensure their
> > kernel does not start using a new feature while it can still rollback to
> > a version that does not support the new feature.
>
> This was never the biggest problem. The main issue was the functional
> behaviors of the kernel that cannot be represented simply as data in a
> struct with some flag bits.
>
> Like for instance kernel A supports memfd folio sizes far larger than
> kernel B because we fixed MAX_ORDER. You can't fix that just with
> simplistic flags.
Can you elaborate on why the folio sizes matter? Honest question, because I don't
understand why the serialization format wouldn't express things as "N contiguous
pages starting at PFN X". Then the implementation would rebuild its folios as
appropriate.
I could see things like HugeTLB not working if someone booted the kernel with
support for only 1GiB pages and then tried to feed it payload with sub-1GiB ranges.
But to me, those sorts of things fall into the "well yeah, don't do that" category.
More information about the kexec
mailing list