From: Josh Poimboeuf <jpoimboe@redhat.com>
To: Jiri Kosina <jkosina@suse.cz>
Cc: Jiri Slaby <jslaby@suse.cz>,
live-patching@vger.kernel.org, sjenning@redhat.com,
vojtech@suse.cz, mingo@redhat.com, linux-kernel@vger.kernel.org
Subject: Re: [RFC kgr on klp 0/9] kGraft on the top of KLP
Date: Mon, 4 May 2015 22:43:52 -0500 [thread overview]
Message-ID: <20150505034352.GA20128@treble.redhat.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1505050036440.17961@pobox.suse.cz>
On Tue, May 05, 2015 at 12:48:22AM +0200, Jiri Kosina wrote:
> On Mon, 4 May 2015, Josh Poimboeuf wrote:
> > Why do we need multiple consistency models?
>
> Well, I am pretty sure we need always at least two:
>
> - the "immediate" one, where the code redirection flip is switched
> unconditionally and immediately (i.e. exactly what we currently have in
> Linus' tree); semantically applicable to many patches, but not all of
> them
>
> - something that fills the "but not all of them" gap above.
What's the benefit of having the "immediate" model in addition to
the more comprehensive model?
> Both of the solutions that have been presnted so far have some drawbacks
> that need to be discussed further. To me, the "highlights" (in the
> "drawbacks" space) are:
>
> - any method that is stack-checking-based basically means that we have to
> functionally 100% rely on stack unwinding correctness. We have never
> done that before, and current stack unwinder is not ready for that
> (Josh is working on improving that);
I wouldn't call it a drawback. More like a deal breaker :-) But yeah,
I'm working on that.
> plus it can cause the patching to fail under certain circumstances
Assuming you're talking about the kGraft/kpatch hybrid RFC, it actually
doesn't fail. It falls back to asynchronous lazy migration for any
straggler tasks.
> - the kGraft method is not (yet) able to patch kernel threads, and allows
> for multiple instances of the patched functions to be running in
> parallel (i.e. patch author needs to be aware of this constaint, and
> write the code accordingly)
Not being able to patch kthreads sounds like a huge drawback, if not a
deal breaker. How does the patching state ever reach completion?
> This is exactly why we are submitting the kGraft-on-klp patchset, so that
> we have concurrent implementations (sharing the same goal) to compare, and
> ultimately merge whatever the best possible outcome will be.
Another big downside to kGraft, assuming you want the patching to
complete within a realistic period of time, is that you have to wake up
all the sleeping tasks and send them through their signal handling
paths. I would say it's orders of magnitude more disruptive and much
riskier compared to walking the stacks (again, assuming we can make
stack walking "safe").
--
Josh
next prev parent reply other threads:[~2015-05-05 3:44 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-04 11:40 [RFC kgr on klp 1/9] livepatch: make kobject in klp_object statically allocated Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 2/9] livepatch: introduce patch/func-walking helpers Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 3/9] livepatch: add klp_*_to_patch helpers Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 4/9] livepatch: add kgr infrastructure Jiri Slaby
2015-05-04 12:23 ` Martin Schwidefsky
2015-05-05 13:27 ` Jiri Slaby
2015-05-05 14:34 ` Martin Schwidefsky
2015-05-04 11:40 ` [RFC kgr on klp 5/9] livepatch: teach klp about consistency models Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 6/9] livepatch: do not allow failure while really patching Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 7/9] livepatch: propagate the patch status to functions Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 8/9] livepatch: add kgraft-like patching Jiri Slaby
2015-05-04 11:40 ` [RFC kgr on klp 9/9] livepatch: send a fake signal to all tasks Jiri Slaby
2015-05-04 14:34 ` Oleg Nesterov
2015-05-06 12:58 ` Miroslav Benes
2015-05-04 12:20 ` [RFC kgr on klp 0/9] kGraft on the top of KLP Jiri Slaby
2015-05-04 15:44 ` Josh Poimboeuf
2015-05-04 22:48 ` Jiri Kosina
2015-05-05 3:43 ` Josh Poimboeuf [this message]
2015-05-05 6:14 ` Jiri Kosina
2015-05-05 16:24 ` Josh Poimboeuf
2015-05-12 9:45 ` Jiri Kosina
2015-05-12 15:20 ` Josh Poimboeuf
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=20150505034352.GA20128@treble.redhat.com \
--to=jpoimboe@redhat.com \
--cc=jkosina@suse.cz \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=sjenning@redhat.com \
--cc=vojtech@suse.cz \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.