From: Ingo Molnar <mingo@kernel.org>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: "Baoquan He" <bhe@redhat.com>,
"\"Hatayama, Daisuke/畑山 大輔\"" <d.hatayama@jp.fujitsu.com>,
ebiederm@xmission.com, masami.hiramatsu.pt@hitachi.com,
hidehiro.kawai.ez@hitachi.com, linux-kernel@vger.kernel.org,
kexec@lists.infradead.org, akpm@linux-foundation.org,
mingo@redhat.com, bp@suse.de
Subject: Re: [PATCH v2] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path
Date: Mon, 23 Mar 2015 14:50:46 +0100 [thread overview]
Message-ID: <20150323135046.GA25012@gmail.com> (raw)
In-Reply-To: <20150323133710.GA3172@redhat.com>
* Vivek Goyal <vgoyal@redhat.com> wrote:
> On Mon, Mar 23, 2015 at 08:19:43AM +0100, Ingo Molnar wrote:
> >
> > * Baoquan He <bhe@redhat.com> wrote:
> >
> > > CC more people ...
> > >
> > > On 03/07/15 at 01:31am, "Hatayama, Daisuke/畑山 大輔" wrote:
> > > > The commit f06e5153f4ae2e2f3b0300f0e260e40cb7fefd45 introduced
> > > > "crash_kexec_post_notifiers" kernel boot option, which toggles
> > > > wheather panic() calls crash_kexec() before panic_notifiers and dump
> > > > kmsg or after.
> > > >
> > > > The problem is that the commit overlooks panic_on_oops kernel boot
> > > > option. If it is enabled, crash_kexec() is called directly without
> > > > going through panic() in oops path.
> > > >
> > > > To fix this issue, this patch adds a check to
> > > > "crash_kexec_post_notifiers" in the condition of kexec_should_crash().
> > > >
> > > > Also, put a comment in kexec_should_crash() to explain not obvious
> > > > things on this patch.
> > > >
> > > > Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
> > > > Acked-by: Baoquan He <bhe@redhat.com>
> > > > Tested-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
> > > > Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> > > > ---
> > > > include/linux/kernel.h | 3 +++
> > > > kernel/kexec.c | 11 +++++++++++
> > > > kernel/panic.c | 2 +-
> > > > 3 files changed, 15 insertions(+), 1 deletion(-)
> >
> > This is hack upon hack, but why was this crap merged in the first
> > place?
> >
> > I see two problems just by cursory review:
> >
> > 1)
> >
> > Firstly, the real bug in:
> >
> > f06e5153f4ae ("kernel/panic.c: add "crash_kexec_post_notifiers" option for kdump after panic_notifers")
> >
> > Was that crash_kexec() was called unconditionally after notifiers were
> > called, which should be fixed via the simple patch below (untested).
> > Looks much simpler than your fix.
> >
>
> Hi Ingo,
>
> Agreed. Your patch looks good.
In case you want that simpler fix and need my SOB:
Signed-off-by: Ingo Molnar <mingo@kernel.org>
(but I have not tested it.)
> > Secondly, and more importantly, the whole premise of commit
> > f06e5153f4ae is broken IMHO:
> >
> > "This can help rare situations where kdump fails because of unstable
> > crashed kernel or hardware failure (memory corruption on critical
> > data/code)"
> >
> > wtf?
> >
> > If the kernel crashed due to a kernel crash, then the kernel booting
> > up in whatever hardware state should be able to do a clean bootup. The
> > fix for those 'rare situations' should be to fix the real bug (for
> > example by making hardware driver init (or deinit) sequences more
> > robust), not to paper it over by ordering around crash-time sequences
> > ...
> >
> > If it crashed due to some hardware failure, there's literally an
> > infinite amount of failure modes that may or may not be impacted by
> > kexec crash-time handling ordering. We don't want to put a zillion
> > such flags into the kernel proper just to allow the perturbation of
> > the kernel.
>
> I think one of the motivations behind this patch was call to kmsg_dump().
> Some vendors have been wanting to have the capability to save kernel logs
> to some NVRAM before transition to second kernel happens. Their argument
> is that kdump does not succeed all the time and if kdump does not succeed
> then atleast they have something to work with (kernel logs retrieved
> from pstore interface).
Doesn't pstore attach itself to printk itself? AFAICS it does:
fs/pstore/platform.c: register_console(&pstore_console);
so the printk log leading up to and including the crash should be
available, regardless of this patch. What am I missing?
> Not that I agree fully with this as problem might happen while we
> try to run panic_notifiers or kmsg_dump hooks and never transition
> into kdump kernel.
btw., this is the big problem with 'notifiers' in general: they are
opaque with barely any semantics defined, and a source of constant
confusion.
> And it has been literally years since some developers have been
> pushing for allowing to run panic notifiers before crash_kexec().
> Eric Biederman has been pushing back saying it reduces the
> reliability of kdump operation so this is not acceptable.
So what do those notifiers do?
Thanks,
Ingo
next prev parent reply other threads:[~2015-03-23 13:51 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-06 16:31 [PATCH v2] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path "Hatayama, Daisuke/畑山 大輔"
2015-03-06 18:08 ` Vivek Goyal
2015-03-23 3:47 ` Baoquan He
2015-03-23 7:19 ` Ingo Molnar
2015-03-23 13:37 ` Vivek Goyal
2015-03-23 13:50 ` Ingo Molnar [this message]
2015-03-23 14:31 ` Vivek Goyal
2015-03-23 16:01 ` Don Zickus
2015-03-24 3:58 ` Masami Hiramatsu
2015-03-23 15:36 ` Vivek Goyal
2015-03-24 3:30 ` Masami Hiramatsu
2015-03-24 7:11 ` Ingo Molnar
2015-03-24 10:27 ` Eric W. Biederman
2015-03-24 14:32 ` Vivek Goyal
2015-03-25 15:07 ` Hidehiro Kawai
2015-03-24 14:46 ` Vivek Goyal
2015-03-24 16:18 ` Ingo Molnar
2015-03-24 17:04 ` Vivek Goyal
2015-05-12 8:43 ` Hidehiro Kawai
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=20150323135046.GA25012@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=bp@suse.de \
--cc=d.hatayama@jp.fujitsu.com \
--cc=ebiederm@xmission.com \
--cc=hidehiro.kawai.ez@hitachi.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=vgoyal@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).