From: Petr Mladek <pmladek@suse.com>
To: Yafang Shao <laoar.shao@gmail.com>,
jpoimboe@kernel.org, joe.lawrence@redhat.com
Cc: mbenes@suse.cz, song@kernel.org, live-patching@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v13 0/9] livepatch: Add support for scoped atomic replace
Date: Thu, 12 Nov 2026 14:22:02 +0100 [thread overview]
Message-ID: <avW9ehNSLH2zcXMM@pathway.suse.cz> (raw)
In-Reply-To: <20261026133651.40061-1-laoar.shao@gmail.com>
On Mon 2026-10-26 21:36:42, Yafang Shao wrote:
> Atomic replacement is currently all-or-nothing: a livepatch with
> "replace" set either atomically replaces all previously installed
> livepatches, or - with "replace" disabled - it replaces none. There
> is no way to atomically replace only a selected set of livepatches
> while keeping the rest running untouched.
>
> We previously proposed a BPF+livepatch method to enable rapid
> experimentation with new kernel features without interrupting production
> workloads:
>
> https://lore.kernel.org/live-patching/20260402092607.96430-1-laoar.shao@gmail.com/
>
> In the resulting discussion, Song and Petr suggested that it should be
> possible to selectively replace or skip individual livepatches.
>
> This patchset introduces a more flexible model using two new fields in
> struct klp_patch:
>
> - provides: an unsigned int id identifying the replacement scope of
> the livepatch. Livepatches that share the same provides id replace
> each other, so at most one livepatch of each provides id can be
> enabled at a time. By default (provides=0), every livepatch that
> does not declare an explicit provides id belongs to the same scope:
> loading a new provides=0 livepatch atomically replaces the
> previously enabled one.
>
> - obsoletes: an optional array of unsigned int ids specifying
> additional provides ids to be replaced. This allows a new patch
> to explicitly obsolete patches from different scopes.
>
> A new livepatch atomically replaces any existing livepatch that
> satisfies either of the following conditions:
>
> 1. it has the same provides id as the new patch,
> 2. its provides id is listed in the new patch's obsoletes list.
>
> A new livepatch that does not replace an existing one can coexist
> with it. In this case, the two livepatches must not modify the same
> function, or use the state with the same id. Any attempt to load an
> incompatible livepatch will be rejected by the kernel.
>
> Previously, setting 'replace' to 0 was the only way to keep
> certain livepatches persistent on the system, forcing developers to
> disable atomic replacement entirely. With the introduction of provides
> and obsoletes, developers now have a selective option to keep specific
> livepatches persistent while maintaining atomic replacement capabilities
> elsewhere.
>
> IMPORTANT:
> - this design deprecates the traditional non-atomic-replace model.
> - the behavior of replacing all non-atomic-replace livepatches with a
> single atomic-replace livepatch is also deprecated.
>
> The new "provides" and "obsoletes" attributes are exposed through
> sysfs and the kselftests cover the replacement and coexistence
> semantics described above.
>
> At present, KLP state, shadow variables, and callbacks are not
> integrated with the new provides/obsoletes mechanism in this patchset.
> Support for these features is deferred until Petr's klp-state-transfer
> infrastructure is completed and merged:
>
> https://github.com/pmladek/linux/tree/klp-state-transfer-v1-iter12
>
> It is based on livepatching tree's for-next branch.
I double checked the patchset and it looks ready for linux-next.
Just to be sure, Joe, Josh, anyone else, would you still like
to review this patchset, please? I am going to commit it early
next week unless anyone complains ;-)
Best Regards,
Petr
prev parent reply other threads:[~2026-11-12 13:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 13:36 [PATCH v13 0/9] livepatch: Add support for scoped atomic replace Yafang Shao
2026-10-26 13:36 ` [PATCH v13 1/9] selftests/livepatch: Clarify test module file names Yafang Shao
2026-10-26 13:36 ` [PATCH v13 2/9] selftests/livepatch: Adapt atomic replace tests to provides/obsoletes Yafang Shao
2026-10-26 13:36 ` [PATCH v13 3/9] livepatch: Make klp_find_func() non static Yafang Shao
2026-10-26 13:36 ` [PATCH v13 4/9] livepatch: Call klp_init_patch_early() earlier Yafang Shao
2026-10-26 13:36 ` [PATCH v13 5/9] livepatch: Implement provides and obsoletes for scoped atomic replace Yafang Shao
2026-10-26 13:36 ` [PATCH v13 6/9] livepatch: Deprecate stack_order Yafang Shao
2026-10-26 13:36 ` [PATCH v13 7/9] selftests/livepatch: Add provides/obsoletes test scenarios Yafang Shao
2026-10-26 13:36 ` [PATCH v13 8/9] selftests/livepatch: Add state test for provides/obsoletes Yafang Shao
2026-10-26 13:36 ` [PATCH v13 9/9] selftests/livepatch: Add function " Yafang Shao
2026-11-12 13:22 ` Petr Mladek [this message]
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=avW9ehNSLH2zcXMM@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@kernel.org \
--cc=laoar.shao@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=song@kernel.org \
/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