From: John Ogness <john.ogness@linutronix.de>
To: Eugeniu Rosca <erosca@de.adit-jv.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
<linux-kernel@vger.kernel.org>, Petr Mladek <pmladek@suse.com>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Jisheng Zhang <Jisheng.Zhang@synaptics.com>,
Valdis Kletnieks <valdis.kletnieks@vt.edu>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Andrew Gabbasov <andrew_gabbasov@mentor.com>,
Dirk Behme <dirk.behme@de.bosch.com>,
Eugeniu Rosca <roscaeugeniu@gmail.com>
Subject: Re: [RFC PATCH 3/3] watchdog: Turn console verbosity on when reporting softlockup
Date: Thu, 19 Mar 2020 09:20:27 +0100 [thread overview]
Message-ID: <87r1xog3hw.fsf@linutronix.de> (raw)
In-Reply-To: <20200318180525.GA5790@lxhi-065.adit-jv.com> (Eugeniu Rosca's message of "Wed, 18 Mar 2020 19:05:25 +0100")
On 2020-03-18, Eugeniu Rosca <erosca@de.adit-jv.com> wrote:
> On Tue, Mar 17, 2020 at 11:18:18AM +0900, Sergey Senozhatsky wrote:
>> On (20/03/15 18:09), Eugeniu Rosca wrote:
>>> @@ -428,6 +428,8 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
>>> }
>>> }
>>>
>>> + console_verbose_start();
>>> +
>>> pr_emerg("BUG: soft lockup - CPU#%d stuck for %us! [%s:%d]\n",
>>> smp_processor_id(), duration,
>>> current->comm, task_pid_nr(current));
>>> @@ -453,6 +455,8 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
>>> if (softlockup_panic)
>>> panic("softlockup: hung tasks");
>>> __this_cpu_write(soft_watchdog_warn, true);
>>> +
>>> + console_verbose_end();
>>> } else
>>> __this_cpu_write(soft_watchdog_warn, false);
>>
>> I'm afraid, as of now, this approach is not going to work the way it's
>> supposed to work in 100% of cases. Because the only thing that printk()
>> call sort of guarantees is that the message will be stored somewhere.
>> Either in the main kernel log buffer, on in one of auxiliary per-CPU
>> log buffers. It does not guarantee, generally speaking, that the message
>> will be printed on the console immediately.
>
> I take this passage as an acknowledgement of the problem being _real_,
> in spite of the fix being not perfect.
>
> One aspect I would like to emphasize is that (please, NAK this
> statement if it's not accurate) the problem reported in this patch is
> not specific to the existing printk mechanism, but also applies to the
> upcoming kthread-based printk. If that's true, then IMHO this is a
> compelling argument to join forces and try to find a working, safe and
> future-proof solution.
Let me clarify that the upcoming rework is _not_ simply to make a
kthread-based printk. There upcoming rework addresses several issues
(kthreads being only a piece):
1. allow printk-callers to get their messages immediately and locklessly
into the log buffer from any context
2. during normal operation, printk-callers are completely decoupled from
console printing
3. in the case of an emergency, every printk-caller will directly and
synchronously perform console printing of its messages on consoles
that support atomic writing
For the rework we decided that triggering an oops is what irreversibly
transitions the system from "normal operation" to "emergency".
One could interpret the current "console_verbose()" to be some sort of
equivalent to irreversibly transitioning the system to "emergency". But
that is not how it was decided to be interpreted. For the rework,
printk-callers do not have any influence on forcing immediate console
printing (unless they trigger an oops). console_verbose() is still
relevant in the rework. console_verbose() is affecting _what_ is printed
to consoles and _not when_.
Once the printk rework is complete, the mechanisms for atomic and
synchronous console printing will be in place. It would be possible that
these mechanisms could also be used in non-oops scenarios. But that
would need to be discussed in depth and clearly defined with caution for
abuse.
John Ogness
next prev parent reply other threads:[~2020-03-19 8:20 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-15 17:09 [RFC PATCH 0/3] Fix quiet console in pre-panic scenarios Eugeniu Rosca
2020-03-15 17:09 ` [RFC PATCH 1/3] printk: convert ignore_loglevel to atomic_t Eugeniu Rosca
2020-03-15 17:09 ` [RFC PATCH 2/3] printk: add console_verbose_{start,end} Eugeniu Rosca
2020-03-16 21:19 ` [RFC PATCH 2/3] printk: add console_verbose_{start, end} kbuild test robot
2020-03-16 21:30 ` kbuild test robot
2020-03-18 16:00 ` [RFC PATCH 2/3] printk: add console_verbose_{start,end} John Ogness
2020-03-15 17:09 ` [RFC PATCH 3/3] watchdog: Turn console verbosity on when reporting softlockup Eugeniu Rosca
2020-03-17 2:18 ` Sergey Senozhatsky
2020-03-18 18:05 ` Eugeniu Rosca
2020-03-19 6:48 ` Sergey Senozhatsky
2020-03-19 7:38 ` Valdis Klētnieks
2020-03-19 8:01 ` Sergey Senozhatsky
2020-03-19 8:18 ` Valdis Klētnieks
2020-05-19 14:43 ` Petr Mladek
2020-03-19 8:20 ` John Ogness [this message]
2020-03-16 18:35 ` [RFC PATCH 0/3] Fix quiet console in pre-panic scenarios Steven Rostedt
2020-03-16 19:09 ` Sebastian Andrzej Siewior
2020-03-18 14:56 ` Eugeniu Rosca
2020-03-18 15:40 ` John Ogness
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=87r1xog3hw.fsf@linutronix.de \
--to=john.ogness@linutronix.de \
--cc=Jisheng.Zhang@synaptics.com \
--cc=andrew_gabbasov@mentor.com \
--cc=bigeasy@linutronix.de \
--cc=dirk.behme@de.bosch.com \
--cc=erosca@de.adit-jv.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=roscaeugeniu@gmail.com \
--cc=rostedt@goodmis.org \
--cc=sergey.senozhatsky.work@gmail.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=tglx@linutronix.de \
--cc=valdis.kletnieks@vt.edu \
/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.