From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Jiri Kosina <jkosina@suse.cz>, Baoquan He <bhe@redhat.com>,
Prarit Bhargava <prarit@redhat.com>,
Xie XiuQi <xiexiuqi@huawei.com>,
Seth Jennings <sjenning@redhat.com>,
linux-kernel@vger.kernel.org,
"K. Y. Srinivasan" <kys@microsoft.com>, Jan Kara <jack@suse.cz>
Subject: Re: [PATCH] panic: release stale console lock to always get the logbuf printed out
Date: Fri, 09 Oct 2015 12:09:53 +0200 [thread overview]
Message-ID: <871td4s68e.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <20151008135433.bab13c6f80abdf7c6661df66@linux-foundation.org> (Andrew Morton's message of "Thu, 8 Oct 2015 13:54:33 -0700")
Andrew Morton <akpm@linux-foundation.org> writes:
> On Thu, 08 Oct 2015 11:51:13 +0200 Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
>
>> > On Wed, 7 Oct 2015 19:02:22 +0200 Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
>> >
>> >> In some cases we may end up killing the CPU holding the console lock
>> >> while still having valuable data in logbuf. E.g. I'm observing the
>> >> following:
>> >> - A crash is happening on one CPU and console_unlock() is being called on
>> >> some other.
>> >> - console_unlock() tries to print out the buffer before releasing the lock
>> >> and on slow console it takes time.
>> >> - in the meanwhile crashing CPU does lots of printk()-s with valuable data
>> >> (which go to the logbuf) and sends IPIs to all other CPUs.
>> >> - console_unlock() finishes printing previous chunk and enables interrupts
>> >> before trying to print out the rest, the CPU catches the IPI and never
>> >> releases console lock.
>> >
>> > Why doesn't the lock-owning CPU release the console lock? Because it
>> > was stopped by smp_send_stop() in panic()?
>> >
>> > I don't recall why we stop CPUs in panic(), and of course we didn't
>> > document the reason. I guess it makes sense from the "what else can we
>> > do" point of view, but I wonder if we can just do it later on - that
>> > would fix this problem?
>>
>> We don't know for how long should we wait for the other CPU to finish
>> the output and it can take some time. In case we're rebooting after a
>> short timeout we can still end up with something in the logbuf.
>
> I don't understand what you're saying here.
>
> If we move panic()'s call to smp_send_stop() so it occurs later in
> panic(), won't this result in this CPU's messages being properly
> displayed?
If some other CPU is printing, for how long do we need to wait before we
try to stop it? It can take *any* amount of time to print out the buffer
-- we can even reboot the host earlier.
> The currently-printing CPU will still be running and all
> the printks will proceed in the normal fashion?
It will be running till we reboot the host, and we need to make sure
there is nothing in the buffer when we do that. I see only two viable
options: make sure the crashing cpu prints out the buffer before we
reboot (natural serialization) or some sort of lock-waiting to make sure
the printing CPU is done with its job.
--
Vitaly
prev parent reply other threads:[~2015-10-09 10:09 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-07 17:02 [PATCH] panic: release stale console lock to always get the logbuf printed out Vitaly Kuznetsov
2015-10-07 22:34 ` Andrew Morton
2015-10-08 9:01 ` Jan Kara
2015-10-08 10:03 ` Vitaly Kuznetsov
2015-10-08 20:56 ` Andrew Morton
2015-10-09 10:10 ` Vitaly Kuznetsov
2015-10-09 12:44 ` Vitaly Kuznetsov
2015-10-12 3:02 ` kbuild test robot
2015-10-08 9:51 ` Vitaly Kuznetsov
2015-10-08 20:54 ` Andrew Morton
2015-10-09 10:09 ` Vitaly Kuznetsov [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=871td4s68e.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=d.hatayama@jp.fujitsu.com \
--cc=jack@suse.cz \
--cc=jkosina@suse.cz \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=prarit@redhat.com \
--cc=sjenning@redhat.com \
--cc=xiexiuqi@huawei.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).