From: Ingo Molnar <mingo@kernel.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>,
Seth Jennings <sjenning@redhat.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@redhat.com>, Jiri Slaby <jslaby@suse.cz>,
linux-kernel@vger.kernel.org,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [RFC PATCH 0/2] kpatch: dynamic kernel patching
Date: Mon, 5 May 2014 20:43:04 +0200 [thread overview]
Message-ID: <20140505184304.GA15137@gmail.com> (raw)
In-Reply-To: <20140505141038.GA27403@localhost.localdomain>
* Frederic Weisbecker <fweisbec@gmail.com> wrote:
> On Mon, May 05, 2014 at 08:26:38AM -0500, Josh Poimboeuf wrote:
> > On Mon, May 05, 2014 at 10:55:37AM +0200, Ingo Molnar wrote:
> > >
> > > * Josh Poimboeuf <jpoimboe@redhat.com> wrote:
> > >
> > > > [...]
> > > >
> > > > kpatch checks the backtraces of all tasks in stop_machine() to
> > > > ensure that no instances of the old function are running when the
> > > > new function is applied. I think the biggest downside of this
> > > > approach is that stop_machine() has to idle all other CPUs during
> > > > the patching process, so it inserts a small amount of latency (a few
> > > > ms on an idle system).
> > >
> > > When live patching the kernel, how about achieving an even 'cleaner'
> > > state for all tasks in the system: to freeze all tasks, as the suspend
> > > and hibernation code (and kexec) does, via freeze_processes()?
> > >
> > > That means no tasks in the system have any real kernel execution
> > > state, and there's also no problem with long-sleeping tasks, as
> > > freeze_processes() is supposed to be fast as well.
> > >
> > > I.e. go for the most conservative live patching state first, and relax
> > > it only once the initial model is upstream and is working robustly.
> >
> > I had considered doing this before, but the problem I found is
> > that many kernel threads are unfreezable. So we wouldn't be able
> > to check whether its safe to replace any functions in use by those
> > kernel threads.
>
> OTOH many kernel threads are parkable. Which achieves kind of
> similar desired behaviour: the kernel threads then aren't running.
>
> And in fact we could implement freezing on top of park for kthreads.
>
> But unfortunately there are still quite some of them which don't
> support parking.
Well, if distros are moving towards live patching (and they are!),
then it looks rather necessary to me that something scary as flipping
out live kernel instructions with substantially different code should
be as safe as possible, and only then fast.
If a kernel refuses to patch with certain threads running, that will
drive those kernel threads being fixed and such. It's a deterministic,
recoverable, reportable bug situation, so fixing it should be fast.
We learned these robustness lessons the hard way with kprobes and
ftrace dynamic code patching... which are utterly simple compared to
live kernel patching!
Thanks,
Ingo
next prev parent reply other threads:[~2014-05-05 18:43 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-01 15:52 [RFC PATCH 0/2] kpatch: dynamic kernel patching Josh Poimboeuf
2014-05-01 15:52 ` [RFC PATCH 1/2] kpatch: add TAINT_KPATCH flag Josh Poimboeuf
2014-05-01 15:52 ` [RFC PATCH 2/2] kpatch: add kpatch core module Josh Poimboeuf
2014-05-01 20:45 ` [RFC PATCH 0/2] kpatch: dynamic kernel patching Andi Kleen
2014-05-01 21:01 ` Josh Poimboeuf
2014-05-01 21:06 ` Andi Kleen
2014-05-01 21:27 ` Josh Poimboeuf
2014-05-01 21:39 ` Josh Poimboeuf
2014-05-02 1:30 ` Masami Hiramatsu
2014-05-02 8:37 ` Jiri Kosina
2014-05-02 13:29 ` Josh Poimboeuf
2014-05-02 13:10 ` Jiri Kosina
2014-05-02 13:37 ` Josh Poimboeuf
2014-05-05 23:34 ` David Lang
2014-05-05 23:52 ` Jiri Kosina
2014-05-06 1:59 ` David Lang
2014-05-06 12:17 ` Josh Poimboeuf
2014-05-06 7:32 ` Ingo Molnar
2014-05-06 8:03 ` Jiri Kosina
2014-05-06 12:23 ` Josh Poimboeuf
2014-05-07 12:19 ` Ingo Molnar
2014-05-09 1:46 ` David Lang
2014-05-09 2:45 ` Steven Rostedt
2014-05-09 4:07 ` Masami Hiramatsu
2014-05-05 8:55 ` Ingo Molnar
2014-05-05 13:26 ` Josh Poimboeuf
2014-05-05 14:10 ` Frederic Weisbecker
2014-05-05 18:43 ` Ingo Molnar [this message]
2014-05-05 21:49 ` Frederic Weisbecker
2014-05-06 12:12 ` Josh Poimboeuf
2014-05-06 12:33 ` Steven Rostedt
2014-05-06 22:49 ` Masami Hiramatsu
2014-05-06 14:05 ` Frederic Weisbecker
2014-05-06 14:50 ` Josh Poimboeuf
2014-05-07 12:24 ` Ingo Molnar
2014-05-07 15:41 ` Josh Poimboeuf
2014-05-07 15:57 ` Ingo Molnar
2014-05-07 16:43 ` Josh Poimboeuf
2014-05-07 22:56 ` David Lang
2014-05-08 6:12 ` Ingo Molnar
2014-05-08 6:50 ` David Lang
2014-05-08 7:08 ` Ingo Molnar
2014-05-08 7:29 ` Masami Hiramatsu
2014-05-08 12:48 ` Josh Poimboeuf
2014-05-09 6:21 ` Masami Hiramatsu
2014-06-14 20:31 ` Pavel Machek
2014-06-15 6:57 ` Ingo Molnar
2014-05-06 11:45 ` Masami Hiramatsu
2014-05-06 12:26 ` Steven Rostedt
2014-05-06 22:33 ` Masami Hiramatsu
2014-05-16 16:27 ` Jiri Kosina
2014-05-16 17:14 ` Josh Poimboeuf
2014-05-20 9:37 ` Jiri Kosina
2014-05-20 12:59 ` Josh Poimboeuf
2014-05-16 18:09 ` Masami Hiramatsu
2014-05-17 22:46 ` Vojtech Pavlik
2014-05-16 18:55 ` Steven Rostedt
2014-05-16 22:32 ` Jiri Kosina
2014-05-17 0:27 ` Steven Rostedt
2014-05-17 7:10 ` Jiri Kosina
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=20140505184304.GA15137@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=jpoimboe@redhat.com \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=sjenning@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 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.