From: Ingo Molnar <mingo@elte.hu>
To: Artem Bityutskiy <dedekind1@gmail.com>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Koskinen Aaro (Nokia-D/Helsinki)" <aaro.koskinen@nokia.com>,
David Woodhouse <dwmw2@infradead.org>,
Simon Kagstrom <simon.kagstrom@netinsight.net>,
linux-mtd <linux-mtd@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] panic.c: export panic_on_oops
Date: Mon, 12 Oct 2009 13:37:58 +0200 [thread overview]
Message-ID: <20091012113758.GB11035@elte.hu> (raw)
In-Reply-To: <1255346731.9659.31.camel@localhost>
* Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Mon, 2009-10-12 at 13:15 +0200, ext Ingo Molnar wrote:
> > > We use the mtdoops module which stores oopses on the Flash partition,
> > > in order to make it possible to analyze them later. And mtdoops needs
> > > to know whether 'panic_on_oops' is on or off. Thus, we need this
> > > variable to be exported.
> >
> > hm, why does it need it? Could you send the patch please that makes use
> > of it (as an easy way to explain the need for the export) - current
> > upstream drivers/mtd/mtdoops.c doesnt need it so it must be some pending
> > change.
>
> Yes, current drivers/mtd/mtdoops.c does not need it, but we have this
> patch:
>
> http://lists.infradead.org/pipermail/linux-mtd/2009-October/027450.html
>
> which makes sure mtdoops writes the oops log immediately, because we
> have 'panic_on_oops' set so this is our last chance to save the oops.
>
> Here is the patch inlined as well:
>
> Author: Aaro Koskinen <aaro.koskinen@nokia.com>
> Date: Thu Oct 1 18:16:55 2009 +0300
>
> mtd: mtdoops: do not schedule work if we are going to die
>
> If panic_on_oops is set, the log should be written right away
> because this is not going to be a second chance.
>
> Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
>
> diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
> index 1060337..ac67833 100644
> --- a/drivers/mtd/mtdoops.c
> +++ b/drivers/mtd/mtdoops.c
> @@ -335,7 +335,7 @@ static void mtdoops_console_sync(void)
> cxt->ready = 0;
> spin_unlock_irqrestore(&cxt->writecount_lock, flags);
>
> - if (mtd->panic_write && in_interrupt())
> + if (mtd->panic_write && (in_interrupt() || panic_on_oops))
> /* Interrupt context, we're going to panic so try and log */
> mtdoops_write(cxt, 1);
Hm, the code seems to be somewhat confused about this. It tries to guess
when it's panic-ing, right? in_interrupt() is the wrong test for that.
mtdoops_console_sync() gets called by regular printk() as well via:
static void
mtdoops_console_write(struct console *co, const char *s, unsigned int count)
{
struct mtdoops_context *cxt = co->data;
struct mtd_info *mtd = cxt->mtd;
unsigned long flags;
if (!oops_in_progress) {
mtdoops_console_sync();
return;
I think this is all layered incorrectly - because mtdoops (which is a
_VERY_ cool debugging facility btw - i wish generic x86 had something
like that) tries to be a 'driver' and tries to achieve these things
without modifying the core kernel.
But it really should do that. We can certainly enhance the core kernel
logic to tell the console driver more clearly when printk should go out
immediately.
Instead of using oops_in_progress it might be better to go into 'sync
immeditately' mode if the kernel gets tainted. Add a callback for that
to struct console (in include/linux/console.h). The ->unblank() callback
is already such a "user attention needed immediately" callback. We could
add a ->kernel_bug() callback to that.
Ingo
next prev parent reply other threads:[~2009-10-12 11:38 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-11 6:10 Artem Bityutskiy
2009-10-12 11:15 ` Ingo Molnar
2009-10-12 11:23 ` Simon Kagstrom
2009-10-12 11:25 ` Artem Bityutskiy
2009-10-12 11:37 ` Ingo Molnar [this message]
2009-10-12 12:01 ` Simon Kagstrom
2009-10-12 12:09 ` Ingo Molnar
2009-10-12 12:15 ` David Woodhouse
2009-10-12 12:20 ` Ingo Molnar
2009-10-12 12:33 ` David Woodhouse
2009-10-12 12:36 ` Ingo Molnar
2009-10-12 12:48 ` David Woodhouse
2009-10-12 13:06 ` Simon Kagstrom
2009-10-12 13:15 ` Ingo Molnar
2009-10-12 13:39 ` Simon Kagstrom
2009-10-12 14:30 ` Ingo Molnar
2009-10-12 15:01 ` Simon Kagstrom
2009-10-12 15:23 ` Ingo Molnar
2009-10-12 15:36 ` Linus Torvalds
2009-10-12 15:44 ` Linus Torvalds
2009-10-12 17:29 ` Artem Bityutskiy
2009-10-12 17:43 ` Linus Torvalds
2009-10-12 17:46 ` Linus Torvalds
2009-10-12 18:09 ` Andrew Morton
2009-10-12 18:23 ` Ingo Molnar
2009-10-12 18:36 ` Andrew Morton
2009-10-12 18:45 ` Linus Torvalds
2009-10-12 19:14 ` Ingo Molnar
2009-10-12 19:18 ` Dirk Hohndel
2009-10-13 7:58 ` Simon Kagstrom
2009-10-13 8:57 ` Artem Bityutskiy
2009-10-13 13:17 ` [PATCH/RFC v5 0/5]: mtdoops: fixes and improvements Simon Kagstrom
2009-10-13 13:21 ` [PATCH/RFC v5 1/5]: mtdoops: avoid erasing already empty areas Simon Kagstrom
2009-10-13 13:22 ` [PATCH/RFC v5 2/5]: mtdoops: Keep track of used/unused mtdoops pages in an array Simon Kagstrom
2009-10-13 13:22 ` [PATCH/RFC v5 3/5]: mtdoops: Make page (record) size configurable Simon Kagstrom
2009-10-13 13:22 ` [PATCH/RFC v5 4/5]: core: Add dump device to call on oopses and panics Simon Kagstrom
2009-10-13 15:37 ` Linus Torvalds
2009-11-26 9:36 ` Jörn Engel
2009-11-30 7:27 ` Artem Bityutskiy
2009-11-30 7:46 ` Jörn Engel
2009-11-30 8:51 ` Artem Bityutskiy
2009-11-30 9:35 ` Jörn Engel
2009-11-30 9:40 ` Artem Bityutskiy
2009-11-30 9:53 ` Simon Kagstrom
2009-11-30 9:54 ` Jörn Engel
2009-11-30 10:23 ` David Woodhouse
2009-11-30 10:27 ` David Woodhouse
2009-11-30 9:09 ` Artem Bityutskiy
2009-11-30 9:28 ` Simon Kagstrom
2009-10-13 13:22 ` [PATCH/RFC v5 5/5]: mtdoops: refactor as a dump_device Simon Kagstrom
2009-10-14 13:34 ` [PATCH v6 0/5]: mtdoops: fixes and improvements Simon Kagstrom
2009-10-14 13:40 ` [PATCH v6 1/5]: mtdoops: avoid erasing already empty areas Simon Kagstrom
2009-10-14 13:41 ` [PATCH v6 2/5]: mtdoops: Keep track of used/unused mtdoops pages in an array Simon Kagstrom
2009-10-14 13:41 ` [PATCH v6 3/5]: mtdoops: Make page (record) size configurable Simon Kagstrom
2009-10-14 13:41 ` [PATCH v6 4/5]: core: Add kernel message dumper to call on oopses and panics Simon Kagstrom
2009-10-14 16:49 ` Linus Torvalds
2009-10-14 13:41 ` [PATCH v6 5/5]: mtdoops: refactor as a kmsg_dumper Simon Kagstrom
2009-10-14 15:12 ` Simon Kagstrom
2009-10-15 5:11 ` vimal singh
2009-10-12 12:27 ` [PATCH] panic.c: export panic_on_oops Simon Kagstrom
2009-10-12 12:32 ` Ingo Molnar
2009-10-12 13:08 ` Alan Cox
2009-10-12 13:25 ` Ingo Molnar
2009-10-12 13:32 ` David Woodhouse
2009-10-12 14:26 ` Ingo Molnar
2009-10-12 14:36 ` David Woodhouse
2009-10-12 15:14 ` Ingo Molnar
2009-10-12 18:32 ` Carl-Daniel Hailfinger
2009-10-12 19:18 ` Ingo Molnar
2009-10-12 14:12 ` Arjan van de Ven
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=20091012113758.GB11035@elte.hu \
--to=mingo@elte.hu \
--cc=aaro.koskinen@nokia.com \
--cc=akpm@linux-foundation.org \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=simon.kagstrom@netinsight.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®