linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] printk: Add printk.no_console_auto_verbose boot param
@ 2021-07-27 13:06 Dmitry Safonov
  2021-07-27 13:06 ` [PATCH v3 1/2] printk: Remove console_silent() Dmitry Safonov
  2021-07-27 13:06 ` [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter Dmitry Safonov
  0 siblings, 2 replies; 5+ messages in thread
From: Dmitry Safonov @ 2021-07-27 13:06 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dmitry Safonov, Dmitry Safonov, Andrew Morton, John Ogness,
	Petr Mladek, Sergey Senozhatsky, Steven Rostedt

v2 to v3 Changes:
- Renamed printk.console_verbose to printk.console_no_auto_verbose
  (as suggested by Petr)
- Moved console_verbose() to printk.c and exported it instead (Petr)
- Added Reviewed-by and also Suggested-by Petr

v1 to v2 Changes:
- Add printk.console_verbose boot parameter instead of compile-time
  CONFIG_CONSOLE_LOGLEVEL_PANIC (see v1 discussion with Petr)
- I didn't rename console_verbose() to console_verbose_panic() as
  I need it to be always disabled regardless oops/panic/lockdep.
- I noticed console_silent() which is unused for long time, remove it.

v1: https://lore.kernel.org/lkml/20210622143350.1105701-1-dima@arista.com/
v2: https://lore.kernel.org/lkml/20210713011511.215808-1-dima@arista.com/

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Steven Rostedt <rostedt@goodmis.org>

Dmitry Safonov (2):
  printk: Remove console_silent()
  printk: Add printk.console_no_auto_verbose boot parameter

 Documentation/admin-guide/kernel-parameters.txt |  9 +++++++++
 include/linux/printk.h                          | 11 +----------
 kernel/printk/printk.c                          | 12 ++++++++++++
 3 files changed, 22 insertions(+), 10 deletions(-)


base-commit: e73f0f0ee7541171d89f2e2491130c7771ba58d3
-- 
2.32.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] printk: Remove console_silent()
  2021-07-27 13:06 [PATCH v3 0/2] printk: Add printk.no_console_auto_verbose boot param Dmitry Safonov
@ 2021-07-27 13:06 ` Dmitry Safonov
  2021-07-28  1:23   ` Sergey Senozhatsky
  2021-07-27 13:06 ` [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter Dmitry Safonov
  1 sibling, 1 reply; 5+ messages in thread
From: Dmitry Safonov @ 2021-07-27 13:06 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dmitry Safonov, Dmitry Safonov, Andrew Morton, John Ogness,
	Petr Mladek, Sergey Senozhatsky, Steven Rostedt

It' unused since removal of mn10300:
commit 739d875dd698 ("mn10300: Remove the architecture")
x86 stopped using it in v2.6.12 (see history git):
commit 7574828b3dbb ("[PATCH] x86_64: add nmi button support")

Let's clean it up from the header.

Signed-off-by: Dmitry Safonov <dima@arista.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
---
 include/linux/printk.h | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/include/linux/printk.h b/include/linux/printk.h
index e834d78f0478..a63f468a8239 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -70,11 +70,6 @@ extern int console_printk[];
 #define minimum_console_loglevel (console_printk[2])
 #define default_console_loglevel (console_printk[3])
 
-static inline void console_silent(void)
-{
-	console_loglevel = CONSOLE_LOGLEVEL_SILENT;
-}
-
 static inline void console_verbose(void)
 {
 	if (console_loglevel)
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter
  2021-07-27 13:06 [PATCH v3 0/2] printk: Add printk.no_console_auto_verbose boot param Dmitry Safonov
  2021-07-27 13:06 ` [PATCH v3 1/2] printk: Remove console_silent() Dmitry Safonov
@ 2021-07-27 13:06 ` Dmitry Safonov
  2021-07-28  1:25   ` Sergey Senozhatsky
  1 sibling, 1 reply; 5+ messages in thread
From: Dmitry Safonov @ 2021-07-27 13:06 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dmitry Safonov, Dmitry Safonov, Andrew Morton, John Ogness,
	Petr Mladek, Sergey Senozhatsky, Steven Rostedt

console_verbose() increases console loglevel to CONSOLE_LOGLEVEL_MOTORMOUTH,
which provides more information to debug a panic/oops.

Unfortunately, in Arista we maintain some DUTs (Device Under Test) that
are configured to have 9600 baud rate. While verbose console messages
have their value to post-analyze crashes, on such setup they:
- may prevent panic/oops messages being printed
- take too long to flush on console resulting in watchdog reboot

In all our setups we use kdump which saves dmesg buffer after panic,
so in reality those extra messages on console provide no additional value,
but rather add risk of not getting to __crash_kexec().

Provide printk.console_no_auto_verbose boot parameter, which allows
to switch off printk being verbose on oops/panic/lockdep.

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Dmitry Safonov <dima@arista.com>
Suggested-by: Petr Mladek <pmladek@suse.com>
---
 Documentation/admin-guide/kernel-parameters.txt |  9 +++++++++
 include/linux/printk.h                          |  6 +-----
 kernel/printk/printk.c                          | 12 ++++++++++++
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index bdb22006f713..a4dd5814a83a 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4167,6 +4167,15 @@
 			Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
 			default: disabled
 
+	printk.console_no_auto_verbose=
+			Disable console loglevel raise on oops, panic
+			or lockdep-detected issues (only if lock debug is on).
+			With an exception to setups with low baudrate on
+			serial console, keeping this 0 is a good choice
+			in order to provide more debug information.
+			Format: <bool>
+			default: 0 (auto_verbose is enabled)
+
 	printk.devkmsg={on,off,ratelimit}
 			Control writing to /dev/kmsg.
 			on - unlimited logging to /dev/kmsg from userspace
diff --git a/include/linux/printk.h b/include/linux/printk.h
index a63f468a8239..0484274158d2 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -70,11 +70,7 @@ extern int console_printk[];
 #define minimum_console_loglevel (console_printk[2])
 #define default_console_loglevel (console_printk[3])
 
-static inline void console_verbose(void)
-{
-	if (console_loglevel)
-		console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
-}
+extern void console_verbose(void);
 
 /* strlen("ratelimit") + 1 */
 #define DEVKMSG_STR_MAX_SIZE 10
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 142a58d124d9..a6b94c3c5ac5 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2404,6 +2404,18 @@ module_param_named(console_suspend, console_suspend_enabled,
 MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
 	" and hibernate operations");
 
+static bool printk_console_no_auto_verbose;
+
+void console_verbose(void)
+{
+	if (console_loglevel && !printk_console_no_auto_verbose)
+		console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
+}
+EXPORT_SYMBOL_GPL(console_verbose);
+
+module_param_named(console_no_auto_verbose, printk_console_no_auto_verbose, bool, 0644);
+MODULE_PARM_DESC(console_no_auto_verbose, "Disable console loglevel raise to highest on oops/panic/etc");
+
 /**
  * suspend_console - suspend the console subsystem
  *
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] printk: Remove console_silent()
  2021-07-27 13:06 ` [PATCH v3 1/2] printk: Remove console_silent() Dmitry Safonov
@ 2021-07-28  1:23   ` Sergey Senozhatsky
  0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2021-07-28  1:23 UTC (permalink / raw)
  To: Dmitry Safonov
  Cc: linux-kernel, Dmitry Safonov, Andrew Morton, John Ogness,
	Petr Mladek, Sergey Senozhatsky, Steven Rostedt

On (21/07/27 14:06), Dmitry Safonov wrote:
> It' unused since removal of mn10300:
> commit 739d875dd698 ("mn10300: Remove the architecture")
> x86 stopped using it in v2.6.12 (see history git):
> commit 7574828b3dbb ("[PATCH] x86_64: add nmi button support")
> 
> Let's clean it up from the header.

Nice.

> Signed-off-by: Dmitry Safonov <dima@arista.com>
> Reviewed-by: Petr Mladek <pmladek@suse.com>

Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter
  2021-07-27 13:06 ` [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter Dmitry Safonov
@ 2021-07-28  1:25   ` Sergey Senozhatsky
  0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2021-07-28  1:25 UTC (permalink / raw)
  To: Dmitry Safonov
  Cc: linux-kernel, Dmitry Safonov, Andrew Morton, John Ogness,
	Petr Mladek, Sergey Senozhatsky, Steven Rostedt

On (21/07/27 14:06), Dmitry Safonov wrote:
> console_verbose() increases console loglevel to CONSOLE_LOGLEVEL_MOTORMOUTH,
> which provides more information to debug a panic/oops.
> 
> Unfortunately, in Arista we maintain some DUTs (Device Under Test) that
> are configured to have 9600 baud rate. While verbose console messages
> have their value to post-analyze crashes, on such setup they:
> - may prevent panic/oops messages being printed
> - take too long to flush on console resulting in watchdog reboot
> 
> In all our setups we use kdump which saves dmesg buffer after panic,
> so in reality those extra messages on console provide no additional value,
> but rather add risk of not getting to __crash_kexec().
> 
> Provide printk.console_no_auto_verbose boot parameter, which allows
> to switch off printk being verbose on oops/panic/lockdep.
> 
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: John Ogness <john.ogness@linutronix.de>
> Cc: Petr Mladek <pmladek@suse.com>
> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Signed-off-by: Dmitry Safonov <dima@arista.com>
> Suggested-by: Petr Mladek <pmladek@suse.com>

Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-28  1:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-27 13:06 [PATCH v3 0/2] printk: Add printk.no_console_auto_verbose boot param Dmitry Safonov
2021-07-27 13:06 ` [PATCH v3 1/2] printk: Remove console_silent() Dmitry Safonov
2021-07-28  1:23   ` Sergey Senozhatsky
2021-07-27 13:06 ` [PATCH v3 2/2] printk: Add printk.console_no_auto_verbose boot parameter Dmitry Safonov
2021-07-28  1:25   ` Sergey Senozhatsky

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).