Re: [RFC PATCH 0/2] Add support for multiple versions to KHO
Logan Odell <[email protected]>
| Newsgroups | org.kvack.linux-mm |
|---|---|
| Message-ID | <CAD14LL9jt+g=tWwT1N5s-OrzuWeWz1TvCQLbCqTRZOi4UuEG_g@mail.gmail.com> |
0/2 is a typo, should be 0/4 :-) On Fri, Jul 31, 2026 at 2:53 PM Logan Odell <[email protected]> wrote: > The format of the preserved-data blob that LUO saves to KHO is expected > to change as new features are added, bugs are fixed, etc. Currently, > LUO handles this by embedding a compatibility string into struct luo_ser > which can be used to compare two kernels. This works if the changes > between kernels are fundamentally incompatible. In a case where a new > feature is added, we may want to support both versions in the new > kernel to retain compatibility. > > This series adds a KHO interface to embed multiple versions under a > single node in a subtree. > > We go from something like: > > / (Root Node) > └── LUO (Legacy Parent Node) > ├── preserved-data = <0xphys_luo> > └── blob-size = <0xsize_luo> > > To something like this: > > / (Root Node) > └── LUO (Versioned Parent Node) > ├── 1 (Version 1 Node) > │ ├── preserved-data = <0xphys_luo_v1> > │ └── blob-size = <0xsize_luo_v1> > └── 2 (Version 2 Node) > ├── preserved-data = <0xphys_luo_v2> > └── blob-size = <0xsize_luo_v2> > > We can also support mixed mode, allowing backwards compatibility in case > of a roll-back to a pre-multi version kernel: > > / (Root Node) > └── LUO (Versioned Parent Node) > ├── preserved-data = <0xphys_luo> > ├── blob-size = <0xphys_luo> > ├── 1 (Version 1 Node) > │ ├── preserved-data = <0xphys_luo_v1> > │ └── blob-size = <0xsize_luo_v1> > └── 2 (Version 2 Node) > ├── preserved-data = <0xphys_luo_v2> > └── blob-size = <0xsize_luo_v2> > > The first patch moves some common functionality for preserving a node > into a separate function. The second patch adds our new APIs. The third > patch adds support for multiple versions to the debugfs entries. The > forth patch adds new test cases to test_kho. > > Logan Odell (4): > kho: Move subtree blob logic to separate function > kho: Add support for multiple versions in subtrees > kho: Add support for multiple versions to debugfs > kho: Add test cases for versioned subtrees > > include/linux/kexec_handover.h | 14 ++ > include/linux/kho/abi/kexec_handover.h | 16 ++ > kernel/liveupdate/kexec_handover.c | 234 +++++++++++++++++- > kernel/liveupdate/kexec_handover_debugfs.c | 57 ++++- > lib/test_kho.c | 266 +++++++++++++++++++-- > 5 files changed, 540 insertions(+), 47 deletions(-) > > -- > 2.55.0.508.g3f0d502094-goog > >