All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
To: akpm@linux-foundation.org, bhe@redhat.com, pmladek@suse.com,
	kexec@lists.infradead.org
Cc: linux-kernel@vger.kernel.org,
	bcm-kernel-feedback-list@broadcom.com,
	coresight@lists.linaro.org, linuxppc-dev@lists.ozlabs.org,
	linux-alpha@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-leds@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	netdev@vger.kernel.org, openipmi-developer@lists.sourceforge.net,
	rcu@vger.kernel.org, sparclinux@vger.kernel.org,
	xen-devel@lists.xenproject.org, x86@kernel.org,
	kernel-dev@igalia.com, gpiccoli@igalia.com, kernel@gpiccoli.net,
	halves@canonical.com, fabiomirmar@gmail.com,
	alejandro.j.jimenez@oracle.com,
	andriy.shevchenko@linux.intel.com, arnd@arndb.de, bp@alien8.de,
	corbet@lwn.net, d.hatayama@jp.fujitsu.com,
	dave.hansen@linux.intel.com, dyoung@redhat.com,
	feng.tang@intel.com, gregkh@linuxfoundation.org,
	mikelley@microsoft.com, hidehiro.kawai.ez@hitachi.com,
	jgross@suse.com, john.ogness@linutronix.de,
	keescook@chromium.org, luto@kernel.org, mhiramat@kernel.org,
	mingo@redhat.com, paulmck@kernel.org, peterz@infradead.org,
	rostedt@goodmis.org, senozhatsky@chromium.org,
	stern@rowland.harvard.edu, tglx@linutronix.de, vgoyal@redhat.com,
	vkuznets@redhat.com, will@kernel.org
Subject: [PATCH 25/30] panic, printk: Add console flush parameter and convert panic_print to a notifier
Date: Wed, 27 Apr 2022 19:49:19 -0300	[thread overview]
Message-ID: <20220427224924.592546-26-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220427224924.592546-1-gpiccoli@igalia.com>

Currently the parameter "panic_print" relies in a function called
directly on panic path; one of the flags the users can set for
panic_print triggers a console replay mechanism, to show the
entire kernel log buffer (from the beginning) in a panic event.

Two problems with that: the dual nature of the panic_print
isn't really appropriate, the function was originally meant
to allow users dumping system information on panic events,
and was "overridden" to also force a console flush of the full
kernel log buffer. It also turns the code a bit more complex
and duplicate than it needs to be.

This patch proposes 2 changes: first, we decouple panic_print
from the console flushing mechanism, in the form of a new kernel
core parameter (panic_console_replay); we kept the functionality
on panic_print to avoid userspace breakage, although we comment
in both code and documentation that this panic_print usage is
deprecated.

We converted panic_print function to a panic notifier too, adding
it on the panic informational notifier list, executed as the final
callback. This allows a more clear code and makes sense, as
panic_print_sys_info() is really a panic-time only function.
We also moved its code to kernel/printk.c, it seems to make more
sense given it's related to printing stuff.

Suggested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
---
 .../admin-guide/kernel-parameters.txt         | 12 +++-
 Documentation/admin-guide/sysctl/kernel.rst   |  5 +-
 include/linux/console.h                       |  2 +
 include/linux/panic.h                         |  1 -
 include/linux/printk.h                        |  1 +
 kernel/panic.c                                | 51 +++------------
 kernel/printk/printk.c                        | 62 +++++++++++++++++++
 7 files changed, 87 insertions(+), 47 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 8d3524060ce3..c99da8b2b216 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3791,6 +3791,14 @@
 			timeout < 0: reboot immediately
 			Format: <timeout>
 
+	panic_console_replay
+			[KNL] Force a kernel log replay in the console on
+			panic event. Notice that there is already a flush
+			mechanism for pending messages; this option is meant
+			for users that wish to replay the *full* buffer.
+			It deprecates the bit 5 setting on "panic_print",
+			both having the same functionality.
+
 	panic_notifiers_level=
 			[KNL] Set the panic notifiers execution order.
 			Format: <unsigned int>
@@ -3825,12 +3833,14 @@
 			bit 2: print timer info
 			bit 3: print locks info if CONFIG_LOCKDEP is on
 			bit 4: print ftrace buffer
-			bit 5: print all printk messages in buffer
+			bit 5: print all printk messages in buffer (DEPRECATED)
 			bit 6: print all CPUs backtrace (if available in the arch)
 			*Be aware* that this option may print a _lot_ of lines,
 			so there are risks of losing older messages in the log.
 			Use this option carefully, maybe worth to setup a
 			bigger log buffer with "log_buf_len" along with this.
+			Also, notice that bit 5 was deprecated in favor of the
+			parameter "panic_console_replay".
 
 	panic_on_taint=	Bitmask for conditionally calling panic() in add_taint()
 			Format: <hex>[,nousertaint]
diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index 1144ea3229a3..17b293a0e566 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -763,10 +763,13 @@ bit 1  print system memory info
 bit 2  print timer info
 bit 3  print locks info if ``CONFIG_LOCKDEP`` is on
 bit 4  print ftrace buffer
-bit 5  print all printk messages in buffer
+bit 5  print all printk messages in buffer (DEPRECATED)
 bit 6  print all CPUs backtrace (if available in the arch)
 =====  ============================================
 
+Notice that bit 5 was deprecated in favor of kernel core parameter
+"panic_console_replay" (see kernel-parameters.txt documentation).
+
 So for example to print tasks and memory info on panic, user can::
 
   echo 3 > /proc/sys/kernel/panic_print
diff --git a/include/linux/console.h b/include/linux/console.h
index 7cd758a4f44e..351c14f623ad 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -169,6 +169,8 @@ enum con_flush_mode {
 	CONSOLE_REPLAY_ALL,
 };
 
+extern bool panic_console_replay;
+
 extern int add_preferred_console(char *name, int idx, char *options);
 extern void register_console(struct console *);
 extern int unregister_console(struct console *);
diff --git a/include/linux/panic.h b/include/linux/panic.h
index f5844908a089..34175d0188d0 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -22,7 +22,6 @@ extern unsigned int sysctl_oops_all_cpu_backtrace;
 #endif /* CONFIG_SMP */
 
 extern int panic_timeout;
-extern unsigned long panic_print;
 extern int panic_on_oops;
 extern int panic_on_unrecovered_nmi;
 extern int panic_on_io_nmi;
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 1522df223c0f..aee2e8ebd541 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -13,6 +13,7 @@
 extern const char linux_banner[];
 extern const char linux_proc_banner[];
 
+extern unsigned long panic_print;
 extern int oops_in_progress;	/* If set, an oops, panic(), BUG() or die() is in progress */
 
 #define PRINTK_MAX_SINGLE_HEADER_LEN 2
diff --git a/kernel/panic.c b/kernel/panic.c
index b7c055d4f87f..ff257bd8f81b 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -68,15 +68,6 @@ unsigned int panic_notifiers_level = 2;
 /* DEPRECATED in favor of panic_notifiers_level */
 bool crash_kexec_post_notifiers;
 
-#define PANIC_PRINT_TASK_INFO		0x00000001
-#define PANIC_PRINT_MEM_INFO		0x00000002
-#define PANIC_PRINT_TIMER_INFO		0x00000004
-#define PANIC_PRINT_LOCK_INFO		0x00000008
-#define PANIC_PRINT_FTRACE_INFO		0x00000010
-#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
-#define PANIC_PRINT_ALL_CPU_BT		0x00000040
-unsigned long panic_print;
-
 ATOMIC_NOTIFIER_HEAD(panic_hypervisor_list);
 EXPORT_SYMBOL(panic_hypervisor_list);
 
@@ -168,33 +159,6 @@ void nmi_panic(struct pt_regs *regs, const char *msg)
 }
 EXPORT_SYMBOL(nmi_panic);
 
-static void panic_print_sys_info(bool console_flush)
-{
-	if (console_flush) {
-		if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
-			console_flush_on_panic(CONSOLE_REPLAY_ALL);
-		return;
-	}
-
-	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
-		trigger_all_cpu_backtrace();
-
-	if (panic_print & PANIC_PRINT_TASK_INFO)
-		show_state();
-
-	if (panic_print & PANIC_PRINT_MEM_INFO)
-		show_mem(0, NULL);
-
-	if (panic_print & PANIC_PRINT_TIMER_INFO)
-		sysrq_timer_list_show();
-
-	if (panic_print & PANIC_PRINT_LOCK_INFO)
-		debug_show_all_locks();
-
-	if (panic_print & PANIC_PRINT_FTRACE_INFO)
-		ftrace_dump(DUMP_ALL);
-}
-
 /*
  * Helper that accumulates all console flushing routines executed on panic.
  */
@@ -218,7 +182,11 @@ static void console_flushing(void)
 	debug_locks_off();
 	console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
-	panic_print_sys_info(true);
+	/* In case users wish to replay the full log buffer... */
+	if (panic_console_replay) {
+		pr_warn("Replaying the log buffer from the beginning\n");
+		console_flush_on_panic(CONSOLE_REPLAY_ALL);
+	}
 }
 
 #define PN_HYPERVISOR_BIT	0
@@ -431,10 +399,8 @@ void panic(const char *fmt, ...)
 	crash_smp_send_stop();
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -442,10 +408,8 @@ void panic(const char *fmt, ...)
 
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -814,7 +778,6 @@ EXPORT_SYMBOL(__stack_chk_fail);
 #endif
 
 core_param(panic, panic_timeout, int, 0644);
-core_param(panic_print, panic_print, ulong, 0644);
 core_param(pause_on_oops, pause_on_oops, int, 0644);
 core_param(panic_on_warn, panic_on_warn, int, 0644);
 core_param(panic_notifiers_level, panic_notifiers_level, uint, 0644);
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index e3a1c429fbbc..ad91d4c04246 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -35,6 +35,7 @@
 #include <linux/memblock.h>
 #include <linux/syscalls.h>
 #include <linux/crash_core.h>
+#include <linux/panic_notifier.h>
 #include <linux/ratelimit.h>
 #include <linux/kmsg_dump.h>
 #include <linux/syslog.h>
@@ -3234,6 +3235,61 @@ void __init console_init(void)
 	}
 }
 
+#define PANIC_PRINT_TASK_INFO		0x00000001
+#define PANIC_PRINT_MEM_INFO		0x00000002
+#define PANIC_PRINT_TIMER_INFO		0x00000004
+#define PANIC_PRINT_LOCK_INFO		0x00000008
+#define PANIC_PRINT_FTRACE_INFO		0x00000010
+
+/* DEPRECATED - please use "panic_console_replay" */
+#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
+
+#define PANIC_PRINT_ALL_CPU_BT		0x00000040
+
+unsigned long panic_print;
+bool panic_console_replay;
+
+static int panic_print_sys_info(struct notifier_block *self,
+				unsigned long ev, void *unused)
+{
+	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
+		trigger_all_cpu_backtrace();
+
+	if (panic_print & PANIC_PRINT_TASK_INFO)
+		show_state();
+
+	if (panic_print & PANIC_PRINT_MEM_INFO)
+		show_mem(0, NULL);
+
+	if (panic_print & PANIC_PRINT_TIMER_INFO)
+		sysrq_timer_list_show();
+
+	if (panic_print & PANIC_PRINT_LOCK_INFO)
+		debug_show_all_locks();
+
+	if (panic_print & PANIC_PRINT_FTRACE_INFO)
+		ftrace_dump(DUMP_ALL);
+
+	/*
+	 * This is legacy/deprecated feature from panic_print,
+	 * the console force flushing. We have now the parameter
+	 * "panic_console_replay", but we need to keep the
+	 * retro-compatibility with the old stuff...
+	 */
+	if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+		panic_console_replay = true;
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_print_nb = {
+	.notifier_call = panic_print_sys_info,
+	.priority = INT_MIN, /* defer to run as late as possible */
+};
+
+core_param(panic_print, panic_print, ulong, 0644);
+core_param(panic_console_replay, panic_console_replay, bool, 0644);
+
 /*
  * Some boot consoles access data that is in the init section and which will
  * be discarded after the initcalls have been run. To make sure that no code
@@ -3253,6 +3309,12 @@ static int __init printk_late_init(void)
 	struct console *con;
 	int ret;
 
+	/*
+	 * Register the panic notifier to print user information
+	 * in case the user have that set.
+	 */
+	atomic_notifier_chain_register(&panic_info_list, &panic_print_nb);
+
 	for_each_console(con) {
 		if (!(con->flags & CON_BOOT))
 			continue;
-- 
2.36.0


WARNING: multiple messages have this Message-ID (diff)
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
To: akpm@linux-foundation.org, bhe@redhat.com, pmladek@suse.com,
	kexec@lists.infradead.org
Cc: linux-hyperv@vger.kernel.org, halves@canonical.com,
	gregkh@linuxfoundation.org, peterz@infradead.org,
	alejandro.j.jimenez@oracle.com, linux-remoteproc@vger.kernel.org,
	feng.tang@intel.com, linux-mips@vger.kernel.org,
	hidehiro.kawai.ez@hitachi.com, sparclinux@vger.kernel.org,
	will@kernel.org, tglx@linutronix.de, linux-leds@vger.kernel.org,
	linux-s390@vger.kernel.org, mikelley@microsoft.com,
	john.ogness@linutronix.de, corbet@lwn.net, paulmck@kernel.org,
	fabiomirmar@gmail.com, x86@kernel.org, mingo@redhat.com,
	bcm-kernel-feedback-list@broadcom.com,
	xen-devel@lists.xenproject.org, dyoung@redhat.com,
	vgoyal@redhat.com, linux-xtensa@linux-xtensa.org,
	dave.hansen@linux.intel.com, keescook@chromium.org,
	arnd@arndb.de, linux-pm@vger.kernel.org,
	coresight@lists.linaro.org, linux-um@lists.infradead.org,
	rostedt@goodmis.org, rcu@vger.kernel.org, bp@alien8.de,
	luto@kernel.org, linux-tegra@vger.kernel.org,
	openipmi-developer@lists.sourceforge.net,
	andriy.shevchenko@linux.intel.com, senozhatsky@chromium.org,
	linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org,
	jgross@suse.com, linux-parisc@vger.kernel.org,
	netdev@vger.kernel.org, kernel@gpiccoli.net,
	linux-kernel@vger.kernel.org, stern@rowland.harvard.edu,
	gpiccoli@igalia.com, d.hatayama@jp.fujitsu.com,
	mhiramat@kernel.org, kernel-dev@igalia.com,
	linux-alpha@vger.kernel.org, vkuznets@redhat.com,
	linuxppc-dev@lists.ozlabs.org
Subject: [PATCH 25/30] panic, printk: Add console flush parameter and convert panic_print to a notifier
Date: Wed, 27 Apr 2022 19:49:19 -0300	[thread overview]
Message-ID: <20220427224924.592546-26-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220427224924.592546-1-gpiccoli@igalia.com>

Currently the parameter "panic_print" relies in a function called
directly on panic path; one of the flags the users can set for
panic_print triggers a console replay mechanism, to show the
entire kernel log buffer (from the beginning) in a panic event.

Two problems with that: the dual nature of the panic_print
isn't really appropriate, the function was originally meant
to allow users dumping system information on panic events,
and was "overridden" to also force a console flush of the full
kernel log buffer. It also turns the code a bit more complex
and duplicate than it needs to be.

This patch proposes 2 changes: first, we decouple panic_print
from the console flushing mechanism, in the form of a new kernel
core parameter (panic_console_replay); we kept the functionality
on panic_print to avoid userspace breakage, although we comment
in both code and documentation that this panic_print usage is
deprecated.

We converted panic_print function to a panic notifier too, adding
it on the panic informational notifier list, executed as the final
callback. This allows a more clear code and makes sense, as
panic_print_sys_info() is really a panic-time only function.
We also moved its code to kernel/printk.c, it seems to make more
sense given it's related to printing stuff.

Suggested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
---
 .../admin-guide/kernel-parameters.txt         | 12 +++-
 Documentation/admin-guide/sysctl/kernel.rst   |  5 +-
 include/linux/console.h                       |  2 +
 include/linux/panic.h                         |  1 -
 include/linux/printk.h                        |  1 +
 kernel/panic.c                                | 51 +++------------
 kernel/printk/printk.c                        | 62 +++++++++++++++++++
 7 files changed, 87 insertions(+), 47 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 8d3524060ce3..c99da8b2b216 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3791,6 +3791,14 @@
 			timeout < 0: reboot immediately
 			Format: <timeout>
 
+	panic_console_replay
+			[KNL] Force a kernel log replay in the console on
+			panic event. Notice that there is already a flush
+			mechanism for pending messages; this option is meant
+			for users that wish to replay the *full* buffer.
+			It deprecates the bit 5 setting on "panic_print",
+			both having the same functionality.
+
 	panic_notifiers_level=
 			[KNL] Set the panic notifiers execution order.
 			Format: <unsigned int>
@@ -3825,12 +3833,14 @@
 			bit 2: print timer info
 			bit 3: print locks info if CONFIG_LOCKDEP is on
 			bit 4: print ftrace buffer
-			bit 5: print all printk messages in buffer
+			bit 5: print all printk messages in buffer (DEPRECATED)
 			bit 6: print all CPUs backtrace (if available in the arch)
 			*Be aware* that this option may print a _lot_ of lines,
 			so there are risks of losing older messages in the log.
 			Use this option carefully, maybe worth to setup a
 			bigger log buffer with "log_buf_len" along with this.
+			Also, notice that bit 5 was deprecated in favor of the
+			parameter "panic_console_replay".
 
 	panic_on_taint=	Bitmask for conditionally calling panic() in add_taint()
 			Format: <hex>[,nousertaint]
diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index 1144ea3229a3..17b293a0e566 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -763,10 +763,13 @@ bit 1  print system memory info
 bit 2  print timer info
 bit 3  print locks info if ``CONFIG_LOCKDEP`` is on
 bit 4  print ftrace buffer
-bit 5  print all printk messages in buffer
+bit 5  print all printk messages in buffer (DEPRECATED)
 bit 6  print all CPUs backtrace (if available in the arch)
 =====  ============================================
 
+Notice that bit 5 was deprecated in favor of kernel core parameter
+"panic_console_replay" (see kernel-parameters.txt documentation).
+
 So for example to print tasks and memory info on panic, user can::
 
   echo 3 > /proc/sys/kernel/panic_print
diff --git a/include/linux/console.h b/include/linux/console.h
index 7cd758a4f44e..351c14f623ad 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -169,6 +169,8 @@ enum con_flush_mode {
 	CONSOLE_REPLAY_ALL,
 };
 
+extern bool panic_console_replay;
+
 extern int add_preferred_console(char *name, int idx, char *options);
 extern void register_console(struct console *);
 extern int unregister_console(struct console *);
diff --git a/include/linux/panic.h b/include/linux/panic.h
index f5844908a089..34175d0188d0 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -22,7 +22,6 @@ extern unsigned int sysctl_oops_all_cpu_backtrace;
 #endif /* CONFIG_SMP */
 
 extern int panic_timeout;
-extern unsigned long panic_print;
 extern int panic_on_oops;
 extern int panic_on_unrecovered_nmi;
 extern int panic_on_io_nmi;
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 1522df223c0f..aee2e8ebd541 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -13,6 +13,7 @@
 extern const char linux_banner[];
 extern const char linux_proc_banner[];
 
+extern unsigned long panic_print;
 extern int oops_in_progress;	/* If set, an oops, panic(), BUG() or die() is in progress */
 
 #define PRINTK_MAX_SINGLE_HEADER_LEN 2
diff --git a/kernel/panic.c b/kernel/panic.c
index b7c055d4f87f..ff257bd8f81b 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -68,15 +68,6 @@ unsigned int panic_notifiers_level = 2;
 /* DEPRECATED in favor of panic_notifiers_level */
 bool crash_kexec_post_notifiers;
 
-#define PANIC_PRINT_TASK_INFO		0x00000001
-#define PANIC_PRINT_MEM_INFO		0x00000002
-#define PANIC_PRINT_TIMER_INFO		0x00000004
-#define PANIC_PRINT_LOCK_INFO		0x00000008
-#define PANIC_PRINT_FTRACE_INFO		0x00000010
-#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
-#define PANIC_PRINT_ALL_CPU_BT		0x00000040
-unsigned long panic_print;
-
 ATOMIC_NOTIFIER_HEAD(panic_hypervisor_list);
 EXPORT_SYMBOL(panic_hypervisor_list);
 
@@ -168,33 +159,6 @@ void nmi_panic(struct pt_regs *regs, const char *msg)
 }
 EXPORT_SYMBOL(nmi_panic);
 
-static void panic_print_sys_info(bool console_flush)
-{
-	if (console_flush) {
-		if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
-			console_flush_on_panic(CONSOLE_REPLAY_ALL);
-		return;
-	}
-
-	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
-		trigger_all_cpu_backtrace();
-
-	if (panic_print & PANIC_PRINT_TASK_INFO)
-		show_state();
-
-	if (panic_print & PANIC_PRINT_MEM_INFO)
-		show_mem(0, NULL);
-
-	if (panic_print & PANIC_PRINT_TIMER_INFO)
-		sysrq_timer_list_show();
-
-	if (panic_print & PANIC_PRINT_LOCK_INFO)
-		debug_show_all_locks();
-
-	if (panic_print & PANIC_PRINT_FTRACE_INFO)
-		ftrace_dump(DUMP_ALL);
-}
-
 /*
  * Helper that accumulates all console flushing routines executed on panic.
  */
@@ -218,7 +182,11 @@ static void console_flushing(void)
 	debug_locks_off();
 	console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
-	panic_print_sys_info(true);
+	/* In case users wish to replay the full log buffer... */
+	if (panic_console_replay) {
+		pr_warn("Replaying the log buffer from the beginning\n");
+		console_flush_on_panic(CONSOLE_REPLAY_ALL);
+	}
 }
 
 #define PN_HYPERVISOR_BIT	0
@@ -431,10 +399,8 @@ void panic(const char *fmt, ...)
 	crash_smp_send_stop();
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -442,10 +408,8 @@ void panic(const char *fmt, ...)
 
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -814,7 +778,6 @@ EXPORT_SYMBOL(__stack_chk_fail);
 #endif
 
 core_param(panic, panic_timeout, int, 0644);
-core_param(panic_print, panic_print, ulong, 0644);
 core_param(pause_on_oops, pause_on_oops, int, 0644);
 core_param(panic_on_warn, panic_on_warn, int, 0644);
 core_param(panic_notifiers_level, panic_notifiers_level, uint, 0644);
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index e3a1c429fbbc..ad91d4c04246 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -35,6 +35,7 @@
 #include <linux/memblock.h>
 #include <linux/syscalls.h>
 #include <linux/crash_core.h>
+#include <linux/panic_notifier.h>
 #include <linux/ratelimit.h>
 #include <linux/kmsg_dump.h>
 #include <linux/syslog.h>
@@ -3234,6 +3235,61 @@ void __init console_init(void)
 	}
 }
 
+#define PANIC_PRINT_TASK_INFO		0x00000001
+#define PANIC_PRINT_MEM_INFO		0x00000002
+#define PANIC_PRINT_TIMER_INFO		0x00000004
+#define PANIC_PRINT_LOCK_INFO		0x00000008
+#define PANIC_PRINT_FTRACE_INFO		0x00000010
+
+/* DEPRECATED - please use "panic_console_replay" */
+#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
+
+#define PANIC_PRINT_ALL_CPU_BT		0x00000040
+
+unsigned long panic_print;
+bool panic_console_replay;
+
+static int panic_print_sys_info(struct notifier_block *self,
+				unsigned long ev, void *unused)
+{
+	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
+		trigger_all_cpu_backtrace();
+
+	if (panic_print & PANIC_PRINT_TASK_INFO)
+		show_state();
+
+	if (panic_print & PANIC_PRINT_MEM_INFO)
+		show_mem(0, NULL);
+
+	if (panic_print & PANIC_PRINT_TIMER_INFO)
+		sysrq_timer_list_show();
+
+	if (panic_print & PANIC_PRINT_LOCK_INFO)
+		debug_show_all_locks();
+
+	if (panic_print & PANIC_PRINT_FTRACE_INFO)
+		ftrace_dump(DUMP_ALL);
+
+	/*
+	 * This is legacy/deprecated feature from panic_print,
+	 * the console force flushing. We have now the parameter
+	 * "panic_console_replay", but we need to keep the
+	 * retro-compatibility with the old stuff...
+	 */
+	if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+		panic_console_replay = true;
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_print_nb = {
+	.notifier_call = panic_print_sys_info,
+	.priority = INT_MIN, /* defer to run as late as possible */
+};
+
+core_param(panic_print, panic_print, ulong, 0644);
+core_param(panic_console_replay, panic_console_replay, bool, 0644);
+
 /*
  * Some boot consoles access data that is in the init section and which will
  * be discarded after the initcalls have been run. To make sure that no code
@@ -3253,6 +3309,12 @@ static int __init printk_late_init(void)
 	struct console *con;
 	int ret;
 
+	/*
+	 * Register the panic notifier to print user information
+	 * in case the user have that set.
+	 */
+	atomic_notifier_chain_register(&panic_info_list, &panic_print_nb);
+
 	for_each_console(con) {
 		if (!(con->flags & CON_BOOT))
 			continue;
-- 
2.36.0


WARNING: multiple messages have this Message-ID (diff)
From: Guilherme G. Piccoli <gpiccoli@igalia.com>
To: kexec@lists.infradead.org
Subject: [PATCH 25/30] panic, printk: Add console flush parameter and convert panic_print to a notifier
Date: Wed, 27 Apr 2022 19:49:19 -0300	[thread overview]
Message-ID: <20220427224924.592546-26-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220427224924.592546-1-gpiccoli@igalia.com>

Currently the parameter "panic_print" relies in a function called
directly on panic path; one of the flags the users can set for
panic_print triggers a console replay mechanism, to show the
entire kernel log buffer (from the beginning) in a panic event.

Two problems with that: the dual nature of the panic_print
isn't really appropriate, the function was originally meant
to allow users dumping system information on panic events,
and was "overridden" to also force a console flush of the full
kernel log buffer. It also turns the code a bit more complex
and duplicate than it needs to be.

This patch proposes 2 changes: first, we decouple panic_print
from the console flushing mechanism, in the form of a new kernel
core parameter (panic_console_replay); we kept the functionality
on panic_print to avoid userspace breakage, although we comment
in both code and documentation that this panic_print usage is
deprecated.

We converted panic_print function to a panic notifier too, adding
it on the panic informational notifier list, executed as the final
callback. This allows a more clear code and makes sense, as
panic_print_sys_info() is really a panic-time only function.
We also moved its code to kernel/printk.c, it seems to make more
sense given it's related to printing stuff.

Suggested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
---
 .../admin-guide/kernel-parameters.txt         | 12 +++-
 Documentation/admin-guide/sysctl/kernel.rst   |  5 +-
 include/linux/console.h                       |  2 +
 include/linux/panic.h                         |  1 -
 include/linux/printk.h                        |  1 +
 kernel/panic.c                                | 51 +++------------
 kernel/printk/printk.c                        | 62 +++++++++++++++++++
 7 files changed, 87 insertions(+), 47 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 8d3524060ce3..c99da8b2b216 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3791,6 +3791,14 @@
 			timeout < 0: reboot immediately
 			Format: <timeout>
 
+	panic_console_replay
+			[KNL] Force a kernel log replay in the console on
+			panic event. Notice that there is already a flush
+			mechanism for pending messages; this option is meant
+			for users that wish to replay the *full* buffer.
+			It deprecates the bit 5 setting on "panic_print",
+			both having the same functionality.
+
 	panic_notifiers_level=
 			[KNL] Set the panic notifiers execution order.
 			Format: <unsigned int>
@@ -3825,12 +3833,14 @@
 			bit 2: print timer info
 			bit 3: print locks info if CONFIG_LOCKDEP is on
 			bit 4: print ftrace buffer
-			bit 5: print all printk messages in buffer
+			bit 5: print all printk messages in buffer (DEPRECATED)
 			bit 6: print all CPUs backtrace (if available in the arch)
 			*Be aware* that this option may print a _lot_ of lines,
 			so there are risks of losing older messages in the log.
 			Use this option carefully, maybe worth to setup a
 			bigger log buffer with "log_buf_len" along with this.
+			Also, notice that bit 5 was deprecated in favor of the
+			parameter "panic_console_replay".
 
 	panic_on_taint=	Bitmask for conditionally calling panic() in add_taint()
 			Format: <hex>[,nousertaint]
diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index 1144ea3229a3..17b293a0e566 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -763,10 +763,13 @@ bit 1  print system memory info
 bit 2  print timer info
 bit 3  print locks info if ``CONFIG_LOCKDEP`` is on
 bit 4  print ftrace buffer
-bit 5  print all printk messages in buffer
+bit 5  print all printk messages in buffer (DEPRECATED)
 bit 6  print all CPUs backtrace (if available in the arch)
 =====  ============================================
 
+Notice that bit 5 was deprecated in favor of kernel core parameter
+"panic_console_replay" (see kernel-parameters.txt documentation).
+
 So for example to print tasks and memory info on panic, user can::
 
   echo 3 > /proc/sys/kernel/panic_print
diff --git a/include/linux/console.h b/include/linux/console.h
index 7cd758a4f44e..351c14f623ad 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -169,6 +169,8 @@ enum con_flush_mode {
 	CONSOLE_REPLAY_ALL,
 };
 
+extern bool panic_console_replay;
+
 extern int add_preferred_console(char *name, int idx, char *options);
 extern void register_console(struct console *);
 extern int unregister_console(struct console *);
diff --git a/include/linux/panic.h b/include/linux/panic.h
index f5844908a089..34175d0188d0 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -22,7 +22,6 @@ extern unsigned int sysctl_oops_all_cpu_backtrace;
 #endif /* CONFIG_SMP */
 
 extern int panic_timeout;
-extern unsigned long panic_print;
 extern int panic_on_oops;
 extern int panic_on_unrecovered_nmi;
 extern int panic_on_io_nmi;
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 1522df223c0f..aee2e8ebd541 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -13,6 +13,7 @@
 extern const char linux_banner[];
 extern const char linux_proc_banner[];
 
+extern unsigned long panic_print;
 extern int oops_in_progress;	/* If set, an oops, panic(), BUG() or die() is in progress */
 
 #define PRINTK_MAX_SINGLE_HEADER_LEN 2
diff --git a/kernel/panic.c b/kernel/panic.c
index b7c055d4f87f..ff257bd8f81b 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -68,15 +68,6 @@ unsigned int panic_notifiers_level = 2;
 /* DEPRECATED in favor of panic_notifiers_level */
 bool crash_kexec_post_notifiers;
 
-#define PANIC_PRINT_TASK_INFO		0x00000001
-#define PANIC_PRINT_MEM_INFO		0x00000002
-#define PANIC_PRINT_TIMER_INFO		0x00000004
-#define PANIC_PRINT_LOCK_INFO		0x00000008
-#define PANIC_PRINT_FTRACE_INFO		0x00000010
-#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
-#define PANIC_PRINT_ALL_CPU_BT		0x00000040
-unsigned long panic_print;
-
 ATOMIC_NOTIFIER_HEAD(panic_hypervisor_list);
 EXPORT_SYMBOL(panic_hypervisor_list);
 
@@ -168,33 +159,6 @@ void nmi_panic(struct pt_regs *regs, const char *msg)
 }
 EXPORT_SYMBOL(nmi_panic);
 
-static void panic_print_sys_info(bool console_flush)
-{
-	if (console_flush) {
-		if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
-			console_flush_on_panic(CONSOLE_REPLAY_ALL);
-		return;
-	}
-
-	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
-		trigger_all_cpu_backtrace();
-
-	if (panic_print & PANIC_PRINT_TASK_INFO)
-		show_state();
-
-	if (panic_print & PANIC_PRINT_MEM_INFO)
-		show_mem(0, NULL);
-
-	if (panic_print & PANIC_PRINT_TIMER_INFO)
-		sysrq_timer_list_show();
-
-	if (panic_print & PANIC_PRINT_LOCK_INFO)
-		debug_show_all_locks();
-
-	if (panic_print & PANIC_PRINT_FTRACE_INFO)
-		ftrace_dump(DUMP_ALL);
-}
-
 /*
  * Helper that accumulates all console flushing routines executed on panic.
  */
@@ -218,7 +182,11 @@ static void console_flushing(void)
 	debug_locks_off();
 	console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
-	panic_print_sys_info(true);
+	/* In case users wish to replay the full log buffer... */
+	if (panic_console_replay) {
+		pr_warn("Replaying the log buffer from the beginning\n");
+		console_flush_on_panic(CONSOLE_REPLAY_ALL);
+	}
 }
 
 #define PN_HYPERVISOR_BIT	0
@@ -431,10 +399,8 @@ void panic(const char *fmt, ...)
 	crash_smp_send_stop();
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -442,10 +408,8 @@ void panic(const char *fmt, ...)
 
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -814,7 +778,6 @@ EXPORT_SYMBOL(__stack_chk_fail);
 #endif
 
 core_param(panic, panic_timeout, int, 0644);
-core_param(panic_print, panic_print, ulong, 0644);
 core_param(pause_on_oops, pause_on_oops, int, 0644);
 core_param(panic_on_warn, panic_on_warn, int, 0644);
 core_param(panic_notifiers_level, panic_notifiers_level, uint, 0644);
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index e3a1c429fbbc..ad91d4c04246 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -35,6 +35,7 @@
 #include <linux/memblock.h>
 #include <linux/syscalls.h>
 #include <linux/crash_core.h>
+#include <linux/panic_notifier.h>
 #include <linux/ratelimit.h>
 #include <linux/kmsg_dump.h>
 #include <linux/syslog.h>
@@ -3234,6 +3235,61 @@ void __init console_init(void)
 	}
 }
 
+#define PANIC_PRINT_TASK_INFO		0x00000001
+#define PANIC_PRINT_MEM_INFO		0x00000002
+#define PANIC_PRINT_TIMER_INFO		0x00000004
+#define PANIC_PRINT_LOCK_INFO		0x00000008
+#define PANIC_PRINT_FTRACE_INFO		0x00000010
+
+/* DEPRECATED - please use "panic_console_replay" */
+#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
+
+#define PANIC_PRINT_ALL_CPU_BT		0x00000040
+
+unsigned long panic_print;
+bool panic_console_replay;
+
+static int panic_print_sys_info(struct notifier_block *self,
+				unsigned long ev, void *unused)
+{
+	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
+		trigger_all_cpu_backtrace();
+
+	if (panic_print & PANIC_PRINT_TASK_INFO)
+		show_state();
+
+	if (panic_print & PANIC_PRINT_MEM_INFO)
+		show_mem(0, NULL);
+
+	if (panic_print & PANIC_PRINT_TIMER_INFO)
+		sysrq_timer_list_show();
+
+	if (panic_print & PANIC_PRINT_LOCK_INFO)
+		debug_show_all_locks();
+
+	if (panic_print & PANIC_PRINT_FTRACE_INFO)
+		ftrace_dump(DUMP_ALL);
+
+	/*
+	 * This is legacy/deprecated feature from panic_print,
+	 * the console force flushing. We have now the parameter
+	 * "panic_console_replay", but we need to keep the
+	 * retro-compatibility with the old stuff...
+	 */
+	if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+		panic_console_replay = true;
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_print_nb = {
+	.notifier_call = panic_print_sys_info,
+	.priority = INT_MIN, /* defer to run as late as possible */
+};
+
+core_param(panic_print, panic_print, ulong, 0644);
+core_param(panic_console_replay, panic_console_replay, bool, 0644);
+
 /*
  * Some boot consoles access data that is in the init section and which will
  * be discarded after the initcalls have been run. To make sure that no code
@@ -3253,6 +3309,12 @@ static int __init printk_late_init(void)
 	struct console *con;
 	int ret;
 
+	/*
+	 * Register the panic notifier to print user information
+	 * in case the user have that set.
+	 */
+	atomic_notifier_chain_register(&panic_info_list, &panic_print_nb);
+
 	for_each_console(con) {
 		if (!(con->flags & CON_BOOT))
 			continue;
-- 
2.36.0



WARNING: multiple messages have this Message-ID (diff)
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
To: akpm@linux-foundation.org, bhe@redhat.com, pmladek@suse.com,
	kexec@lists.infradead.org
Cc: linux-kernel@vger.kernel.org,
	bcm-kernel-feedback-list@broadcom.com,
	coresight@lists.linaro.org, linuxppc-dev@lists.ozlabs.org,
	linux-alpha@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-leds@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	netdev@vger.kernel.org, openipmi-developer@lists.sourceforge.net,
	rcu@vger.kernel.org, sparclinux@vger.kernel.org,
	xen-devel@lists.xenproject.org, x86@kernel.org,
	kernel-dev@igalia.com, gpiccoli@igalia.com, kernel@gpiccoli.net,
	halves@canonical.com, fabiomirmar@gmail.com,
	alejandro.j.jimenez@oracle.com,
	andriy.shevchenko@linux.intel.com, arnd@arndb.de, bp@alien8.
Subject: [PATCH 25/30] panic, printk: Add console flush parameter and convert panic_print to a notifier
Date: Wed, 27 Apr 2022 19:49:19 -0300	[thread overview]
Message-ID: <20220427224924.592546-26-gpiccoli@igalia.com> (raw)
In-Reply-To: <20220427224924.592546-1-gpiccoli@igalia.com>

Currently the parameter "panic_print" relies in a function called
directly on panic path; one of the flags the users can set for
panic_print triggers a console replay mechanism, to show the
entire kernel log buffer (from the beginning) in a panic event.

Two problems with that: the dual nature of the panic_print
isn't really appropriate, the function was originally meant
to allow users dumping system information on panic events,
and was "overridden" to also force a console flush of the full
kernel log buffer. It also turns the code a bit more complex
and duplicate than it needs to be.

This patch proposes 2 changes: first, we decouple panic_print
from the console flushing mechanism, in the form of a new kernel
core parameter (panic_console_replay); we kept the functionality
on panic_print to avoid userspace breakage, although we comment
in both code and documentation that this panic_print usage is
deprecated.

We converted panic_print function to a panic notifier too, adding
it on the panic informational notifier list, executed as the final
callback. This allows a more clear code and makes sense, as
panic_print_sys_info() is really a panic-time only function.
We also moved its code to kernel/printk.c, it seems to make more
sense given it's related to printing stuff.

Suggested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
---
 .../admin-guide/kernel-parameters.txt         | 12 +++-
 Documentation/admin-guide/sysctl/kernel.rst   |  5 +-
 include/linux/console.h                       |  2 +
 include/linux/panic.h                         |  1 -
 include/linux/printk.h                        |  1 +
 kernel/panic.c                                | 51 +++------------
 kernel/printk/printk.c                        | 62 +++++++++++++++++++
 7 files changed, 87 insertions(+), 47 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 8d3524060ce3..c99da8b2b216 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3791,6 +3791,14 @@
 			timeout < 0: reboot immediately
 			Format: <timeout>
 
+	panic_console_replay
+			[KNL] Force a kernel log replay in the console on
+			panic event. Notice that there is already a flush
+			mechanism for pending messages; this option is meant
+			for users that wish to replay the *full* buffer.
+			It deprecates the bit 5 setting on "panic_print",
+			both having the same functionality.
+
 	panic_notifiers_level=
 			[KNL] Set the panic notifiers execution order.
 			Format: <unsigned int>
@@ -3825,12 +3833,14 @@
 			bit 2: print timer info
 			bit 3: print locks info if CONFIG_LOCKDEP is on
 			bit 4: print ftrace buffer
-			bit 5: print all printk messages in buffer
+			bit 5: print all printk messages in buffer (DEPRECATED)
 			bit 6: print all CPUs backtrace (if available in the arch)
 			*Be aware* that this option may print a _lot_ of lines,
 			so there are risks of losing older messages in the log.
 			Use this option carefully, maybe worth to setup a
 			bigger log buffer with "log_buf_len" along with this.
+			Also, notice that bit 5 was deprecated in favor of the
+			parameter "panic_console_replay".
 
 	panic_on_taint=	Bitmask for conditionally calling panic() in add_taint()
 			Format: <hex>[,nousertaint]
diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index 1144ea3229a3..17b293a0e566 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -763,10 +763,13 @@ bit 1  print system memory info
 bit 2  print timer info
 bit 3  print locks info if ``CONFIG_LOCKDEP`` is on
 bit 4  print ftrace buffer
-bit 5  print all printk messages in buffer
+bit 5  print all printk messages in buffer (DEPRECATED)
 bit 6  print all CPUs backtrace (if available in the arch)
 =====  ============================================
 
+Notice that bit 5 was deprecated in favor of kernel core parameter
+"panic_console_replay" (see kernel-parameters.txt documentation).
+
 So for example to print tasks and memory info on panic, user can::
 
   echo 3 > /proc/sys/kernel/panic_print
diff --git a/include/linux/console.h b/include/linux/console.h
index 7cd758a4f44e..351c14f623ad 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -169,6 +169,8 @@ enum con_flush_mode {
 	CONSOLE_REPLAY_ALL,
 };
 
+extern bool panic_console_replay;
+
 extern int add_preferred_console(char *name, int idx, char *options);
 extern void register_console(struct console *);
 extern int unregister_console(struct console *);
diff --git a/include/linux/panic.h b/include/linux/panic.h
index f5844908a089..34175d0188d0 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -22,7 +22,6 @@ extern unsigned int sysctl_oops_all_cpu_backtrace;
 #endif /* CONFIG_SMP */
 
 extern int panic_timeout;
-extern unsigned long panic_print;
 extern int panic_on_oops;
 extern int panic_on_unrecovered_nmi;
 extern int panic_on_io_nmi;
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 1522df223c0f..aee2e8ebd541 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -13,6 +13,7 @@
 extern const char linux_banner[];
 extern const char linux_proc_banner[];
 
+extern unsigned long panic_print;
 extern int oops_in_progress;	/* If set, an oops, panic(), BUG() or die() is in progress */
 
 #define PRINTK_MAX_SINGLE_HEADER_LEN 2
diff --git a/kernel/panic.c b/kernel/panic.c
index b7c055d4f87f..ff257bd8f81b 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -68,15 +68,6 @@ unsigned int panic_notifiers_level = 2;
 /* DEPRECATED in favor of panic_notifiers_level */
 bool crash_kexec_post_notifiers;
 
-#define PANIC_PRINT_TASK_INFO		0x00000001
-#define PANIC_PRINT_MEM_INFO		0x00000002
-#define PANIC_PRINT_TIMER_INFO		0x00000004
-#define PANIC_PRINT_LOCK_INFO		0x00000008
-#define PANIC_PRINT_FTRACE_INFO		0x00000010
-#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
-#define PANIC_PRINT_ALL_CPU_BT		0x00000040
-unsigned long panic_print;
-
 ATOMIC_NOTIFIER_HEAD(panic_hypervisor_list);
 EXPORT_SYMBOL(panic_hypervisor_list);
 
@@ -168,33 +159,6 @@ void nmi_panic(struct pt_regs *regs, const char *msg)
 }
 EXPORT_SYMBOL(nmi_panic);
 
-static void panic_print_sys_info(bool console_flush)
-{
-	if (console_flush) {
-		if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
-			console_flush_on_panic(CONSOLE_REPLAY_ALL);
-		return;
-	}
-
-	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
-		trigger_all_cpu_backtrace();
-
-	if (panic_print & PANIC_PRINT_TASK_INFO)
-		show_state();
-
-	if (panic_print & PANIC_PRINT_MEM_INFO)
-		show_mem(0, NULL);
-
-	if (panic_print & PANIC_PRINT_TIMER_INFO)
-		sysrq_timer_list_show();
-
-	if (panic_print & PANIC_PRINT_LOCK_INFO)
-		debug_show_all_locks();
-
-	if (panic_print & PANIC_PRINT_FTRACE_INFO)
-		ftrace_dump(DUMP_ALL);
-}
-
 /*
  * Helper that accumulates all console flushing routines executed on panic.
  */
@@ -218,7 +182,11 @@ static void console_flushing(void)
 	debug_locks_off();
 	console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
-	panic_print_sys_info(true);
+	/* In case users wish to replay the full log buffer... */
+	if (panic_console_replay) {
+		pr_warn("Replaying the log buffer from the beginning\n");
+		console_flush_on_panic(CONSOLE_REPLAY_ALL);
+	}
 }
 
 #define PN_HYPERVISOR_BIT	0
@@ -431,10 +399,8 @@ void panic(const char *fmt, ...)
 	crash_smp_send_stop();
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -442,10 +408,8 @@ void panic(const char *fmt, ...)
 
 	panic_notifier_hypervisor_once(buf);
 
-	if (panic_notifier_info_once(buf)) {
-		panic_print_sys_info(false);
+	if (panic_notifier_info_once(buf))
 		kmsg_dump(KMSG_DUMP_PANIC);
-	}
 
 	panic_notifier_pre_reboot_once(buf);
 
@@ -814,7 +778,6 @@ EXPORT_SYMBOL(__stack_chk_fail);
 #endif
 
 core_param(panic, panic_timeout, int, 0644);
-core_param(panic_print, panic_print, ulong, 0644);
 core_param(pause_on_oops, pause_on_oops, int, 0644);
 core_param(panic_on_warn, panic_on_warn, int, 0644);
 core_param(panic_notifiers_level, panic_notifiers_level, uint, 0644);
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index e3a1c429fbbc..ad91d4c04246 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -35,6 +35,7 @@
 #include <linux/memblock.h>
 #include <linux/syscalls.h>
 #include <linux/crash_core.h>
+#include <linux/panic_notifier.h>
 #include <linux/ratelimit.h>
 #include <linux/kmsg_dump.h>
 #include <linux/syslog.h>
@@ -3234,6 +3235,61 @@ void __init console_init(void)
 	}
 }
 
+#define PANIC_PRINT_TASK_INFO		0x00000001
+#define PANIC_PRINT_MEM_INFO		0x00000002
+#define PANIC_PRINT_TIMER_INFO		0x00000004
+#define PANIC_PRINT_LOCK_INFO		0x00000008
+#define PANIC_PRINT_FTRACE_INFO		0x00000010
+
+/* DEPRECATED - please use "panic_console_replay" */
+#define PANIC_PRINT_ALL_PRINTK_MSG	0x00000020
+
+#define PANIC_PRINT_ALL_CPU_BT		0x00000040
+
+unsigned long panic_print;
+bool panic_console_replay;
+
+static int panic_print_sys_info(struct notifier_block *self,
+				unsigned long ev, void *unused)
+{
+	if (panic_print & PANIC_PRINT_ALL_CPU_BT)
+		trigger_all_cpu_backtrace();
+
+	if (panic_print & PANIC_PRINT_TASK_INFO)
+		show_state();
+
+	if (panic_print & PANIC_PRINT_MEM_INFO)
+		show_mem(0, NULL);
+
+	if (panic_print & PANIC_PRINT_TIMER_INFO)
+		sysrq_timer_list_show();
+
+	if (panic_print & PANIC_PRINT_LOCK_INFO)
+		debug_show_all_locks();
+
+	if (panic_print & PANIC_PRINT_FTRACE_INFO)
+		ftrace_dump(DUMP_ALL);
+
+	/*
+	 * This is legacy/deprecated feature from panic_print,
+	 * the console force flushing. We have now the parameter
+	 * "panic_console_replay", but we need to keep the
+	 * retro-compatibility with the old stuff...
+	 */
+	if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+		panic_console_replay = true;
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_print_nb = {
+	.notifier_call = panic_print_sys_info,
+	.priority = INT_MIN, /* defer to run as late as possible */
+};
+
+core_param(panic_print, panic_print, ulong, 0644);
+core_param(panic_console_replay, panic_console_replay, bool, 0644);
+
 /*
  * Some boot consoles access data that is in the init section and which will
  * be discarded after the initcalls have been run. To make sure that no code
@@ -3253,6 +3309,12 @@ static int __init printk_late_init(void)
 	struct console *con;
 	int ret;
 
+	/*
+	 * Register the panic notifier to print user information
+	 * in case the user have that set.
+	 */
+	atomic_notifier_chain_register(&panic_info_list, &panic_print_nb);
+
 	for_each_console(con) {
 		if (!(con->flags & CON_BOOT))
 			continue;
-- 
2.36.0

  parent reply	other threads:[~2022-04-27 23:01 UTC|newest]

Thread overview: 877+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-27 22:48 [PATCH 00/30] The panic notifiers refactor Guilherme G. Piccoli
2022-04-27 22:48 ` Guilherme G. Piccoli
2022-04-27 22:48 ` Guilherme G. Piccoli
2022-04-27 22:48 ` Guilherme G. Piccoli
2022-04-27 22:48 ` [PATCH 01/30] x86/crash,reboot: Avoid re-disabling VMX in all CPUs on crash/restart Guilherme G. Piccoli
2022-04-27 22:48   ` [PATCH 01/30] x86/crash, reboot: " Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-05-09 12:32   ` [PATCH 01/30] x86/crash,reboot: " Guilherme G. Piccoli
2022-05-09 12:32     ` Guilherme G. Piccoli
2022-05-09 12:32     ` Guilherme G. Piccoli
2022-05-09 12:32     ` Guilherme G. Piccoli
2022-05-09 12:32     ` Guilherme G. Piccoli
2022-05-09 15:52   ` Sean Christopherson
2022-05-09 15:52     ` Sean Christopherson
2022-05-09 15:52     ` Sean Christopherson
2022-05-09 15:52     ` Sean Christopherson
2022-05-09 15:52     ` Sean Christopherson
2022-05-10 20:11     ` Guilherme G. Piccoli
2022-05-10 20:11       ` Guilherme G. Piccoli
2022-05-10 20:11       ` Guilherme G. Piccoli
2022-05-10 20:11       ` Guilherme G. Piccoli
2022-05-10 20:11       ` Guilherme G. Piccoli
2022-04-27 22:48 ` [PATCH 02/30] ARM: kexec: Disable IRQs/FIQs also on crash CPUs shutdown path Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-29 16:26   ` Michael Kelley (LINUX)
2022-04-29 16:26     ` Michael Kelley (LINUX)
2022-04-29 16:26     ` Michael Kelley
2022-04-29 16:26     ` Michael Kelley (LINUX)
2022-04-29 18:20   ` Marc Zyngier
2022-04-29 18:20     ` Marc Zyngier
2022-04-29 18:20     ` Marc Zyngier
2022-04-29 18:20     ` Marc Zyngier
2022-04-29 18:20     ` Marc Zyngier
2022-04-29 21:38     ` Guilherme G. Piccoli
2022-04-29 21:38       ` Guilherme G. Piccoli
2022-04-29 21:38       ` Guilherme G. Piccoli
2022-04-29 21:38       ` Guilherme G. Piccoli
2022-04-29 21:38       ` Guilherme G. Piccoli
2022-04-29 21:45       ` Russell King (Oracle)
2022-04-29 21:45         ` Russell King (Oracle)
2022-04-29 21:45         ` Russell King (Oracle)
2022-04-29 21:45         ` Russell King
2022-04-29 21:45         ` Russell King (Oracle)
2022-04-29 21:56         ` Guilherme G. Piccoli
2022-04-29 21:56           ` Guilherme G. Piccoli
2022-04-29 21:56           ` Guilherme G. Piccoli
2022-04-29 21:56           ` Guilherme G. Piccoli
2022-04-29 21:56           ` Guilherme G. Piccoli
2022-04-29 22:00         ` Marc Zyngier
2022-04-29 22:00           ` Marc Zyngier
2022-04-29 22:00           ` Marc Zyngier
2022-04-29 22:00           ` Marc Zyngier
2022-04-29 22:00           ` Marc Zyngier
2022-04-27 22:48 ` [PATCH 03/30] notifier: Add panic notifiers info and purge trailing whitespaces Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48 ` [PATCH 04/30] firmware: google: Convert regular spinlock into trylock on panic path Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-05-03 18:03   ` Evan Green
2022-05-03 18:03     ` Evan Green
2022-05-03 18:03     ` Evan Green
2022-05-03 18:03     ` Evan Green
2022-05-03 18:03     ` Evan Green
2022-05-03 19:12     ` Guilherme G. Piccoli
2022-05-03 19:12       ` Guilherme G. Piccoli
2022-05-03 19:12       ` Guilherme G. Piccoli
2022-05-03 19:12       ` Guilherme G. Piccoli
2022-05-03 19:12       ` Guilherme G. Piccoli
2022-05-03 21:56       ` Evan Green
2022-05-03 21:56         ` Evan Green
2022-05-03 21:56         ` Evan Green
2022-05-03 21:56         ` Evan Green
2022-05-03 21:56         ` Evan Green
2022-05-04 12:45         ` Guilherme G. Piccoli
2022-05-04 12:45           ` Guilherme G. Piccoli
2022-05-04 12:45           ` Guilherme G. Piccoli
2022-05-04 12:45           ` Guilherme G. Piccoli
2022-05-04 12:45           ` Guilherme G. Piccoli
2022-05-10 11:38       ` Petr Mladek
2022-05-10 11:38         ` Petr Mladek
2022-05-10 11:38         ` Petr Mladek
2022-05-10 11:38         ` Petr Mladek
2022-05-10 11:38         ` Petr Mladek
2022-05-10 13:04         ` Guilherme G. Piccoli
2022-05-10 13:04           ` Guilherme G. Piccoli
2022-05-10 13:04           ` Guilherme G. Piccoli
2022-05-10 13:04           ` Guilherme G. Piccoli
2022-05-10 13:04           ` Guilherme G. Piccoli
2022-05-10 17:20         ` Steven Rostedt
2022-05-10 17:20           ` Steven Rostedt
2022-05-10 17:20           ` Steven Rostedt
2022-05-10 17:20           ` Steven Rostedt
2022-05-10 17:20           ` Steven Rostedt
2022-05-10 19:40           ` John Ogness
2022-05-10 19:40             ` John Ogness
2022-05-10 19:40             ` John Ogness
2022-05-10 19:40             ` John Ogness
2022-05-10 19:40             ` John Ogness
2022-05-11 11:13             ` Petr Mladek
2022-05-11 11:13               ` Petr Mladek
2022-05-11 11:13               ` Petr Mladek
2022-05-11 11:13               ` Petr Mladek
2022-05-11 11:13               ` Petr Mladek
2022-04-27 22:48 ` [PATCH 05/30] misc/pvpanic: " Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-04-27 22:48   ` Guilherme G. Piccoli
2022-05-10 12:14   ` Petr Mladek
2022-05-10 12:14     ` Petr Mladek
2022-05-10 12:14     ` Petr Mladek
2022-05-10 12:14     ` Petr Mladek
2022-05-10 12:14     ` Petr Mladek
2022-05-10 13:00     ` Guilherme G. Piccoli
2022-05-10 13:00       ` Guilherme G. Piccoli
2022-05-10 13:00       ` Guilherme G. Piccoli
2022-05-10 13:00       ` Guilherme G. Piccoli
2022-05-10 13:00       ` Guilherme G. Piccoli
2022-05-17 10:58       ` Petr Mladek
2022-05-17 10:58         ` Petr Mladek
2022-05-17 10:58         ` Petr Mladek
2022-05-17 10:58         ` Petr Mladek
2022-05-17 10:58         ` Petr Mladek
2022-05-17 13:03         ` Guilherme G. Piccoli
2022-05-17 13:03           ` Guilherme G. Piccoli
2022-05-17 13:03           ` Guilherme G. Piccoli
2022-05-17 13:03           ` Guilherme G. Piccoli
2022-05-17 13:03           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 06/30] soc: bcm: brcmstb: Document panic notifier action and remove useless header Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-02 15:38   ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:47     ` Guilherme G. Piccoli
2022-05-02 15:47       ` Guilherme G. Piccoli
2022-05-02 15:47       ` Guilherme G. Piccoli
2022-05-02 15:47       ` Guilherme G. Piccoli
2022-05-02 15:47       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 07/30] mips: ip22: Reword PANICED to PANICKED " Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-04 20:32   ` Thomas Bogendoerfer
2022-05-04 20:32     ` Thomas Bogendoerfer
2022-05-04 20:32     ` Thomas Bogendoerfer
2022-05-04 20:32     ` Thomas Bogendoerfer
2022-05-04 20:32     ` Thomas Bogendoerfer
2022-05-04 21:26     ` Guilherme G. Piccoli
2022-05-04 21:26       ` Guilherme G. Piccoli
2022-05-04 21:26       ` Guilherme G. Piccoli
2022-05-04 21:26       ` Guilherme G. Piccoli
2022-05-04 21:26       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 08/30] powerpc/setup: Refactor/untangle panic notifiers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-05 18:55   ` Hari Bathini
2022-05-05 18:55     ` Hari Bathini
2022-05-05 18:55     ` Hari Bathini
2022-05-05 18:55     ` Hari Bathini
2022-05-05 18:55     ` Hari Bathini
2022-05-05 19:28     ` Guilherme G. Piccoli
2022-05-05 19:28       ` Guilherme G. Piccoli
2022-05-05 19:28       ` Guilherme G. Piccoli
2022-05-05 19:28       ` Guilherme G. Piccoli
2022-05-05 19:28       ` Guilherme G. Piccoli
2022-05-09 12:50     ` Guilherme G. Piccoli
2022-05-09 12:50       ` Guilherme G. Piccoli
2022-05-09 12:50       ` Guilherme G. Piccoli
2022-05-09 12:50       ` Guilherme G. Piccoli
2022-05-09 12:50       ` Guilherme G. Piccoli
2022-05-10 13:53       ` Michael Ellerman
2022-05-10 13:53         ` Michael Ellerman
2022-05-10 13:53         ` Michael Ellerman
2022-05-10 13:53         ` Michael Ellerman
2022-05-10 13:53         ` Michael Ellerman
2022-05-10 14:10         ` Guilherme G. Piccoli
2022-05-10 14:10           ` Guilherme G. Piccoli
2022-05-10 14:10           ` Guilherme G. Piccoli
2022-05-10 14:10           ` Guilherme G. Piccoli
2022-05-10 14:10           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 09/30] coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28  8:11   ` Suzuki K Poulose
2022-04-28  8:11     ` Suzuki K Poulose
2022-04-28  8:11     ` Suzuki K Poulose
2022-04-28  8:11     ` Suzuki K Poulose
2022-04-28  8:11     ` Suzuki K Poulose
2022-04-29 14:01     ` Guilherme G. Piccoli
2022-04-29 14:01       ` Guilherme G. Piccoli
2022-04-29 14:01       ` Guilherme G. Piccoli
2022-04-29 14:01       ` Guilherme G. Piccoli
2022-04-29 14:01       ` Guilherme G. Piccoli
2022-05-09 13:09     ` Guilherme G. Piccoli
2022-05-09 13:09       ` Guilherme G. Piccoli
2022-05-09 13:09       ` Guilherme G. Piccoli
2022-05-09 13:09       ` Guilherme G. Piccoli
2022-05-09 13:09       ` Guilherme G. Piccoli
2022-05-09 16:14       ` Suzuki K Poulose
2022-05-09 16:14         ` Suzuki K Poulose
2022-05-09 16:14         ` Suzuki K Poulose
2022-05-09 16:14         ` Suzuki K Poulose
2022-05-09 16:14         ` Suzuki K Poulose
2022-05-09 16:26         ` Guilherme G. Piccoli
2022-05-09 16:26           ` Guilherme G. Piccoli
2022-05-09 16:26           ` Guilherme G. Piccoli
2022-05-09 16:26           ` Guilherme G. Piccoli
2022-05-09 16:26           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 10/30] alpha: Clean-up the panic notifier code Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-09 14:13   ` Guilherme G. Piccoli
2022-05-09 14:13     ` Guilherme G. Piccoli
2022-05-09 14:13     ` Guilherme G. Piccoli
2022-05-09 14:13     ` Guilherme G. Piccoli
2022-05-09 14:13     ` Guilherme G. Piccoli
2022-05-10 14:16     ` Petr Mladek
2022-05-10 14:16       ` Petr Mladek
2022-05-10 14:16       ` Petr Mladek
2022-05-10 14:16       ` Petr Mladek
2022-05-10 14:16       ` Petr Mladek
2022-05-11 20:10       ` Guilherme G. Piccoli
2022-05-11 20:10         ` Guilherme G. Piccoli
2022-05-11 20:10         ` Guilherme G. Piccoli
2022-05-11 20:10         ` Guilherme G. Piccoli
2022-05-11 20:10         ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 11/30] um: Improve panic notifiers consistency and ordering Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28  8:30   ` Johannes Berg
2022-04-29 15:46     ` Guilherme G. Piccoli
2022-05-10 14:28   ` Petr Mladek
2022-05-10 14:28     ` Petr Mladek
2022-05-10 14:28     ` Petr Mladek
2022-05-10 14:28     ` Petr Mladek
2022-05-10 14:28     ` Petr Mladek
2022-05-11 20:22     ` Guilherme G. Piccoli
2022-05-11 20:22       ` Guilherme G. Piccoli
2022-05-11 20:22       ` Guilherme G. Piccoli
2022-05-11 20:22       ` Guilherme G. Piccoli
2022-05-11 20:22       ` Guilherme G. Piccoli
2022-05-13 14:44       ` Johannes Berg
2022-05-13 14:44         ` Johannes Berg
2022-05-13 14:44         ` Johannes Berg
2022-05-13 14:44         ` Johannes Berg
2022-05-13 14:44         ` Johannes Berg
2022-05-15 22:12         ` Guilherme G. Piccoli
2022-05-15 22:12           ` Guilherme G. Piccoli
2022-05-15 22:12           ` Guilherme G. Piccoli
2022-05-15 22:12           ` Guilherme G. Piccoli
2022-05-15 22:12           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 12/30] parisc: Replace regular spinlock with spin_trylock on panic path Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28 16:55   ` Helge Deller
2022-04-28 16:55     ` Helge Deller
2022-04-28 16:55     ` Helge Deller
2022-04-28 16:55     ` Helge Deller
2022-04-28 16:55     ` Helge Deller
2022-04-29 14:34     ` Guilherme G. Piccoli
2022-04-29 14:34       ` Guilherme G. Piccoli
2022-04-29 14:34       ` Guilherme G. Piccoli
2022-04-29 14:34       ` Guilherme G. Piccoli
2022-04-29 14:34       ` Guilherme G. Piccoli
2022-05-23 20:40     ` Guilherme G. Piccoli
2022-05-23 20:40       ` Guilherme G. Piccoli
2022-05-23 20:40       ` Guilherme G. Piccoli
2022-05-23 20:40       ` Guilherme G. Piccoli
2022-05-23 20:40       ` Guilherme G. Piccoli
2022-05-23 21:31       ` Helge Deller
2022-05-23 21:55         ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 13/30] s390/consoles: Improve panic notifiers reliability Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-29 18:46   ` Heiko Carstens
2022-04-29 18:46     ` Heiko Carstens
2022-04-29 18:46     ` Heiko Carstens
2022-04-29 18:46     ` Heiko Carstens
2022-04-29 18:46     ` Heiko Carstens
2022-04-29 19:31     ` Guilherme G. Piccoli
2022-04-29 19:31       ` Guilherme G. Piccoli
2022-04-29 19:31       ` Guilherme G. Piccoli
2022-04-29 19:31       ` Guilherme G. Piccoli
2022-04-29 19:31       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 14/30] panic: Properly identify the panic event to the notifiers' callbacks Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-10 15:16   ` Petr Mladek
2022-05-10 15:16     ` Petr Mladek via Openipmi-developer
2022-05-10 15:16     ` Petr Mladek
2022-05-10 15:16     ` Petr Mladek
2022-05-10 15:16     ` Petr Mladek
2022-05-10 16:16     ` Guilherme G. Piccoli
2022-05-10 16:16       ` Guilherme G. Piccoli
2022-05-10 16:16       ` Guilherme G. Piccoli
2022-05-10 16:16       ` Guilherme G. Piccoli
2022-05-10 16:16       ` Guilherme G. Piccoli
2022-05-17 13:11       ` Petr Mladek
2022-05-17 13:11         ` Petr Mladek
2022-05-17 13:11         ` Petr Mladek
2022-05-17 13:11         ` Petr Mladek
2022-05-17 13:11         ` Petr Mladek
2022-05-17 15:19         ` Guilherme G. Piccoli
2022-05-17 15:19           ` Guilherme G. Piccoli
2022-05-17 15:19           ` Guilherme G. Piccoli
2022-05-17 15:19           ` Guilherme G. Piccoli
2022-05-17 15:19           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 15/30] bus: brcmstb_gisb: Clean-up panic/die notifiers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-02 15:38   ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:38     ` Florian Fainelli
2022-05-02 15:50     ` Guilherme G. Piccoli
2022-05-02 15:50       ` Guilherme G. Piccoli
2022-05-02 15:50       ` Guilherme G. Piccoli
2022-05-02 15:50       ` Guilherme G. Piccoli
2022-05-02 15:50       ` Guilherme G. Piccoli
2022-05-10 15:28   ` Petr Mladek
2022-05-10 15:28     ` Petr Mladek
2022-05-10 15:28     ` Petr Mladek
2022-05-10 15:28     ` Petr Mladek
2022-05-10 15:28     ` Petr Mladek
2022-05-17 15:32     ` Guilherme G. Piccoli
2022-05-17 15:32       ` Guilherme G. Piccoli
2022-05-17 15:32       ` Guilherme G. Piccoli
2022-05-17 15:32       ` Guilherme G. Piccoli
2022-05-17 15:32       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 16/30] drivers/hv/vmbus, video/hyperv_fb: Untangle and refactor Hyper-V panic notifiers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-29 17:16   ` Michael Kelley (LINUX)
2022-04-29 17:16     ` Michael Kelley (LINUX)
2022-04-29 17:16     ` Michael Kelley
2022-04-29 17:16     ` Michael Kelley (LINUX)
2022-04-29 22:35     ` Guilherme G. Piccoli
2022-04-29 22:35       ` Guilherme G. Piccoli
2022-04-29 22:35       ` Guilherme G. Piccoli
2022-04-29 22:35       ` Guilherme G. Piccoli
2022-04-29 22:35       ` Guilherme G. Piccoli
2022-05-03 18:13       ` Michael Kelley (LINUX)
2022-05-03 18:13         ` Michael Kelley (LINUX)
2022-05-03 18:13         ` Michael Kelley
2022-05-03 18:13         ` Michael Kelley (LINUX)
2022-05-03 18:57         ` Guilherme G. Piccoli
2022-05-03 18:57           ` Guilherme G. Piccoli
2022-05-03 18:57           ` Guilherme G. Piccoli
2022-05-03 18:57           ` Guilherme G. Piccoli
2022-05-03 18:57           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 17/30] tracing: Improve panic/die notifiers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-29  9:22   ` Sergei Shtylyov
2022-04-29  9:22     ` Sergei Shtylyov
2022-04-29  9:22     ` Sergei Shtylyov
2022-04-29  9:22     ` Sergei Shtylyov
2022-04-29  9:22     ` Sergei Shtylyov
2022-04-29 13:23     ` Steven Rostedt
2022-04-29 13:23       ` Steven Rostedt
2022-04-29 13:23       ` Steven Rostedt
2022-04-29 13:23       ` Steven Rostedt
2022-04-29 13:23       ` Steven Rostedt
2022-04-29 13:46       ` Guilherme G. Piccoli
2022-04-29 13:46         ` Guilherme G. Piccoli
2022-04-29 13:46         ` Guilherme G. Piccoli
2022-04-29 13:46         ` Guilherme G. Piccoli
2022-04-29 13:46         ` Guilherme G. Piccoli
2022-04-29 13:56         ` Steven Rostedt
2022-04-29 13:56           ` Steven Rostedt
2022-04-29 13:56           ` Steven Rostedt
2022-04-29 13:56           ` Steven Rostedt
2022-04-29 13:56           ` Steven Rostedt
2022-04-29 14:44           ` Guilherme G. Piccoli
2022-04-29 14:44             ` Guilherme G. Piccoli
2022-04-29 14:44             ` Guilherme G. Piccoli
2022-04-29 14:44             ` Guilherme G. Piccoli
2022-04-29 14:44             ` Guilherme G. Piccoli
2022-05-11 11:45   ` Petr Mladek
2022-05-11 11:45     ` Petr Mladek
2022-05-11 11:45     ` Petr Mladek
2022-05-11 11:45     ` Petr Mladek
2022-05-11 11:45     ` Petr Mladek
2022-05-17 15:33     ` Guilherme G. Piccoli
2022-05-17 15:33       ` Guilherme G. Piccoli
2022-05-17 15:33       ` Guilherme G. Piccoli
2022-05-17 15:33       ` Guilherme G. Piccoli
2022-05-17 15:33       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 18/30] notifier: Show function names on notifier routines if DEBUG_NOTIFIERS is set Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28  1:01   ` Xiaoming Ni
2022-04-28  1:01     ` Xiaoming Ni
2022-04-28  1:01     ` Xiaoming Ni
2022-04-28  1:01     ` Xiaoming Ni
2022-04-28  1:01     ` Xiaoming Ni
2022-04-29 19:38     ` Guilherme G. Piccoli
2022-04-29 19:38       ` Guilherme G. Piccoli
2022-04-29 19:38       ` Guilherme G. Piccoli
2022-04-29 19:38       ` Guilherme G. Piccoli
2022-04-29 19:38       ` Guilherme G. Piccoli
2022-05-10 17:29     ` Steven Rostedt
2022-05-10 17:29       ` Steven Rostedt
2022-05-10 17:29       ` Steven Rostedt
2022-05-10 17:29       ` Steven Rostedt
2022-05-10 17:29       ` Steven Rostedt
2022-05-16 16:14       ` Guilherme G. Piccoli
2022-05-16 16:14         ` Guilherme G. Piccoli
2022-05-16 16:14         ` Guilherme G. Piccoli
2022-05-16 16:14         ` Guilherme G. Piccoli
2022-05-16 16:14         ` Guilherme G. Piccoli
2022-04-29 16:27   ` Michael Kelley (LINUX)
2022-04-29 16:27     ` Michael Kelley (LINUX)
2022-04-29 16:27     ` Michael Kelley
2022-04-29 16:27     ` Michael Kelley (LINUX)
2022-04-27 22:49 ` [PATCH 19/30] panic: Add the panic hypervisor notifier list Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-29 17:30   ` Michael Kelley (LINUX)
2022-04-29 17:30     ` Michael Kelley (LINUX)
2022-04-29 17:30     ` Michael Kelley
2022-04-29 17:30     ` Michael Kelley (LINUX)
2022-04-29 18:04     ` Guilherme G. Piccoli
2022-04-29 18:04       ` Guilherme G. Piccoli
2022-04-29 18:04       ` Guilherme G. Piccoli
2022-04-29 18:04       ` Guilherme G. Piccoli
2022-04-29 18:04       ` Guilherme G. Piccoli
2022-05-03 17:44       ` Michael Kelley (LINUX)
2022-05-03 17:44         ` Michael Kelley (LINUX)
2022-05-03 17:44         ` Michael Kelley
2022-05-03 17:44         ` Michael Kelley (LINUX)
2022-05-03 17:56         ` Guilherme G. Piccoli
2022-05-03 17:56           ` Guilherme G. Piccoli
2022-05-03 17:56           ` Guilherme G. Piccoli
2022-05-03 17:56           ` Guilherme G. Piccoli
2022-05-03 17:56           ` Guilherme G. Piccoli
2022-05-16 14:01   ` Petr Mladek
2022-05-16 14:01     ` Petr Mladek
2022-05-16 14:01     ` Petr Mladek
2022-05-16 14:01     ` Petr Mladek
2022-05-16 14:01     ` Petr Mladek
2022-05-16 15:06     ` Guilherme G. Piccoli
2022-05-16 15:06       ` Guilherme G. Piccoli
2022-05-16 15:06       ` Guilherme G. Piccoli
2022-05-16 15:06       ` Guilherme G. Piccoli
2022-05-16 15:06       ` Guilherme G. Piccoli
2022-05-16 16:02       ` Evan Green
2022-05-16 16:02         ` Evan Green
2022-05-16 16:02         ` Evan Green
2022-05-16 16:02         ` Evan Green
2022-05-16 16:02         ` Evan Green
2022-05-17 13:28         ` Petr Mladek
2022-05-17 13:28           ` Petr Mladek
2022-05-17 13:28           ` Petr Mladek
2022-05-17 13:28           ` Petr Mladek
2022-05-17 13:28           ` Petr Mladek
2022-05-17 16:37           ` Guilherme G. Piccoli
2022-05-17 16:37             ` Guilherme G. Piccoli
2022-05-17 16:37             ` Guilherme G. Piccoli
2022-05-17 16:37             ` Guilherme G. Piccoli
2022-05-17 16:37             ` Guilherme G. Piccoli
2022-05-18  7:33             ` Petr Mladek
2022-05-18  7:33               ` Petr Mladek
2022-05-18  7:33               ` Petr Mladek
2022-05-18  7:33               ` Petr Mladek
2022-05-18 13:24               ` Guilherme G. Piccoli
2022-05-18 13:24                 ` Guilherme G. Piccoli
2022-05-18 13:24                 ` Guilherme G. Piccoli
2022-05-18 13:24                 ` Guilherme G. Piccoli
2022-05-18 13:24                 ` Guilherme G. Piccoli
2022-05-17 13:57       ` Petr Mladek
2022-05-17 13:57         ` Petr Mladek
2022-05-17 13:57         ` Petr Mladek
2022-05-17 13:57         ` Petr Mladek
2022-05-17 13:57         ` Petr Mladek
2022-05-17 16:42         ` Guilherme G. Piccoli
2022-05-17 16:42           ` Guilherme G. Piccoli
2022-05-17 16:42           ` Guilherme G. Piccoli
2022-05-17 16:42           ` Guilherme G. Piccoli
2022-05-17 16:42           ` Guilherme G. Piccoli
2022-05-18  7:38           ` Petr Mladek
2022-05-18  7:38             ` Petr Mladek
2022-05-18  7:38             ` Petr Mladek
2022-05-18  7:38             ` Petr Mladek
2022-05-18  7:38             ` Petr Mladek
2022-05-18 13:09             ` Guilherme G. Piccoli
2022-05-18 13:09               ` Guilherme G. Piccoli
2022-05-18 13:09               ` Guilherme G. Piccoli
2022-05-18 13:09               ` Guilherme G. Piccoli
2022-05-18 13:09               ` Guilherme G. Piccoli
2022-05-18 22:17           ` Scott Branden
2022-05-18 22:17             ` Scott Branden
2022-05-18 22:17             ` Scott Branden
2022-05-18 22:17             ` Scott Branden
2022-05-18 22:17             ` Scott Branden
2022-05-19 12:19             ` Guilherme G. Piccoli
2022-05-19 12:19               ` Guilherme G. Piccoli
2022-05-19 12:19               ` Guilherme G. Piccoli
2022-05-19 12:19               ` Guilherme G. Piccoli
2022-05-19 12:19               ` Guilherme G. Piccoli
2022-05-19 19:20               ` Scott Branden
2022-05-19 19:20                 ` Scott Branden
2022-05-19 19:20                 ` Scott Branden
2022-05-19 19:20                 ` Scott Branden
2022-05-19 19:20                 ` Scott Branden
2022-05-23 14:56                 ` Guilherme G. Piccoli
2022-05-23 14:56                   ` Guilherme G. Piccoli
2022-05-23 14:56                   ` Guilherme G. Piccoli
2022-05-23 14:56                   ` Guilherme G. Piccoli
2022-05-24  8:04                   ` Petr Mladek
2022-05-24  8:04                     ` Petr Mladek
2022-05-24  8:04                     ` Petr Mladek
2022-05-24  8:04                     ` Petr Mladek
2022-05-24  8:04                     ` Petr Mladek
2022-05-18  7:58         ` Petr Mladek
2022-05-18  7:58           ` Petr Mladek
2022-05-18  7:58           ` Petr Mladek
2022-05-18  7:58           ` Petr Mladek
2022-05-18 13:16           ` Guilherme G. Piccoli
2022-05-18 13:16             ` Guilherme G. Piccoli
2022-05-18 13:16             ` Guilherme G. Piccoli
2022-05-18 13:16             ` Guilherme G. Piccoli
2022-05-18 13:16             ` Guilherme G. Piccoli
2022-05-19  7:03             ` Petr Mladek
2022-05-19  7:03               ` Petr Mladek
2022-05-19  7:03               ` Petr Mladek
2022-05-19  7:03               ` Petr Mladek
2022-05-19  7:03               ` Petr Mladek
2022-05-19 12:07               ` Guilherme G. Piccoli
2022-05-19 12:07                 ` Guilherme G. Piccoli
2022-05-19 12:07                 ` Guilherme G. Piccoli
2022-05-19 12:07                 ` Guilherme G. Piccoli
2022-05-19 12:07                 ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 20/30] panic: Add the panic informational " Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 23:49   ` Paul E. McKenney
2022-04-27 23:49     ` Paul E. McKenney
2022-04-27 23:49     ` Paul E. McKenney
2022-04-27 23:49     ` Paul E. McKenney
2022-04-27 23:49     ` Paul E. McKenney
2022-04-28  8:14   ` Suzuki K Poulose
2022-04-28  8:14     ` Suzuki K Poulose
2022-04-28  8:14     ` Suzuki K Poulose
2022-04-28  8:14     ` Suzuki K Poulose
2022-04-28  8:14     ` Suzuki K Poulose
2022-04-29 14:50     ` Guilherme G. Piccoli
2022-04-29 14:50       ` Guilherme G. Piccoli
2022-04-29 14:50       ` Guilherme G. Piccoli
2022-04-29 14:50       ` Guilherme G. Piccoli
2022-04-29 14:50       ` Guilherme G. Piccoli
2022-05-16 14:11   ` Petr Mladek
2022-05-16 14:11     ` Petr Mladek
2022-05-16 14:11     ` Petr Mladek
2022-05-16 14:11     ` Petr Mladek
2022-05-16 14:11     ` Petr Mladek
2022-05-16 14:28     ` Guilherme G. Piccoli
2022-05-16 14:28       ` Guilherme G. Piccoli
2022-05-16 14:28       ` Guilherme G. Piccoli
2022-05-16 14:28       ` Guilherme G. Piccoli
2022-05-16 14:28       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 21/30] panic: Introduce the panic pre-reboot " Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28 14:13   ` Alex Elder
2022-04-28 14:13     ` Alex Elder
2022-04-28 14:13     ` Alex Elder
2022-04-28 14:13     ` Alex Elder
2022-04-28 14:13     ` Alex Elder
2022-04-28 16:26   ` Corey Minyard
2022-04-28 16:26     ` Corey Minyard
2022-04-28 16:26     ` Corey Minyard
2022-04-28 16:26     ` Corey Minyard
2022-04-28 16:26     ` Corey Minyard
2022-04-29 15:18     ` Guilherme G. Piccoli
2022-04-29 15:18       ` Guilherme G. Piccoli
2022-04-29 15:18       ` Guilherme G. Piccoli
2022-04-29 15:18       ` Guilherme G. Piccoli
2022-04-29 15:18       ` Guilherme G. Piccoli
2022-04-29 16:04   ` Max Filippov
2022-04-29 16:04     ` Max Filippov
2022-04-29 16:04     ` Max Filippov
2022-04-29 16:04     ` Max Filippov
2022-04-29 16:04     ` Max Filippov
2022-04-29 19:34     ` Guilherme G. Piccoli
2022-04-29 19:34       ` Guilherme G. Piccoli
2022-04-29 19:34       ` Guilherme G. Piccoli
2022-04-29 19:34       ` Guilherme G. Piccoli
2022-04-29 19:34       ` Guilherme G. Piccoli
2022-05-16 14:33   ` Petr Mladek
2022-05-16 14:33     ` Petr Mladek
2022-05-16 14:33     ` Petr Mladek
2022-05-16 14:33     ` Petr Mladek
2022-05-16 14:33     ` Petr Mladek
2022-05-16 16:05     ` Guilherme G. Piccoli
2022-05-16 16:05       ` Guilherme G. Piccoli
2022-05-16 16:05       ` Guilherme G. Piccoli
2022-05-16 16:05       ` Guilherme G. Piccoli
2022-05-16 16:05       ` Guilherme G. Piccoli
2022-05-16 16:18       ` Luck, Tony
2022-05-16 16:18         ` Luck, Tony
2022-05-16 16:18         ` Luck, Tony
2022-05-16 16:18         ` Luck, Tony
2022-05-16 16:18         ` Luck, Tony
2022-05-16 16:33         ` Guilherme G. Piccoli
2022-05-16 16:33           ` Guilherme G. Piccoli
2022-05-16 16:33           ` Guilherme G. Piccoli
2022-05-16 16:33           ` Guilherme G. Piccoli
2022-05-16 16:33           ` Guilherme G. Piccoli
2022-05-17 14:11           ` Petr Mladek
2022-05-17 14:11             ` Petr Mladek via Openipmi-developer
2022-05-17 14:11             ` Petr Mladek
2022-05-17 14:11             ` Petr Mladek
2022-05-17 14:11             ` Petr Mladek
2022-05-17 16:45             ` Guilherme G. Piccoli
2022-05-17 16:45               ` Guilherme G. Piccoli
2022-05-17 16:45               ` Guilherme G. Piccoli
2022-05-17 16:45               ` Guilherme G. Piccoli
2022-05-17 16:45               ` Guilherme G. Piccoli
2022-05-17 17:02               ` Luck, Tony
2022-05-17 17:02                 ` Luck, Tony
2022-05-17 17:02                 ` Luck, Tony
2022-05-17 17:02                 ` Luck, Tony
2022-05-17 17:02                 ` Luck, Tony
2022-05-17 18:12                 ` Guilherme G. Piccoli
2022-05-17 18:12                   ` Guilherme G. Piccoli
2022-05-17 18:12                   ` Guilherme G. Piccoli
2022-05-17 18:12                   ` Guilherme G. Piccoli
2022-05-17 18:12                   ` Guilherme G. Piccoli
2022-05-17 19:07                   ` Luck, Tony
2022-05-17 19:07                     ` Luck, Tony
2022-05-17 19:07                     ` Luck, Tony
2022-05-17 19:07                     ` Luck, Tony
2022-05-17 19:07                     ` Luck, Tony
2022-04-27 22:49 ` [PATCH 22/30] panic: Introduce the panic post-reboot " Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-09 14:16   ` Guilherme G. Piccoli
2022-05-09 14:16     ` Guilherme G. Piccoli
2022-05-09 14:16     ` Guilherme G. Piccoli
2022-05-09 14:16     ` Guilherme G. Piccoli
2022-05-09 14:16     ` Guilherme G. Piccoli
2022-05-11 16:45     ` Heiko Carstens
2022-05-11 16:45       ` Heiko Carstens
2022-05-11 16:45       ` Heiko Carstens
2022-05-11 16:45       ` Heiko Carstens
2022-05-11 16:45       ` Heiko Carstens
2022-05-11 19:58       ` Guilherme G. Piccoli
2022-05-11 19:58         ` Guilherme G. Piccoli
2022-05-11 19:58         ` Guilherme G. Piccoli
2022-05-11 19:58         ` Guilherme G. Piccoli
2022-05-11 19:58         ` Guilherme G. Piccoli
2022-05-16 14:45   ` Petr Mladek
2022-05-16 14:45     ` Petr Mladek
2022-05-16 14:45     ` Petr Mladek
2022-05-16 14:45     ` Petr Mladek
2022-05-16 14:45     ` Petr Mladek
2022-05-16 16:08     ` Guilherme G. Piccoli
2022-05-16 16:08       ` Guilherme G. Piccoli
2022-05-16 16:08       ` Guilherme G. Piccoli
2022-05-16 16:08       ` Guilherme G. Piccoli
2022-05-16 16:08       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 23/30] printk: kmsg_dump: Introduce helper to inform number of dumpers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-10 17:40   ` Steven Rostedt
2022-05-10 17:40     ` Steven Rostedt
2022-05-10 17:40     ` Steven Rostedt
2022-05-10 17:40     ` Steven Rostedt
2022-05-10 17:40     ` Steven Rostedt
2022-05-11 20:03     ` Guilherme G. Piccoli
2022-05-11 20:03       ` Guilherme G. Piccoli
2022-05-11 20:03       ` Guilherme G. Piccoli
2022-05-11 20:03       ` Guilherme G. Piccoli
2022-05-11 20:03       ` Guilherme G. Piccoli
2022-05-16 14:50       ` Petr Mladek
2022-05-16 14:50         ` Petr Mladek
2022-05-16 14:50         ` Petr Mladek
2022-05-16 14:50         ` Petr Mladek
2022-05-16 14:50         ` Petr Mladek
2022-05-16 16:09         ` Guilherme G. Piccoli
2022-05-16 16:09           ` Guilherme G. Piccoli
2022-05-16 16:09           ` Guilherme G. Piccoli
2022-05-16 16:09           ` Guilherme G. Piccoli
2022-05-16 16:09           ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 24/30] panic: Refactor the panic path Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-28  0:28   ` Randy Dunlap
2022-04-28  0:28     ` Randy Dunlap
2022-04-28  0:28     ` Randy Dunlap
2022-04-28  0:28     ` Randy Dunlap
2022-04-28  0:28     ` Randy Dunlap
2022-04-29 16:04     ` Guilherme G. Piccoli
2022-04-29 16:04       ` Guilherme G. Piccoli
2022-04-29 16:04       ` Guilherme G. Piccoli
2022-04-29 16:04       ` Guilherme G. Piccoli
2022-04-29 16:04       ` Guilherme G. Piccoli
2022-05-09 14:25       ` Guilherme G. Piccoli
2022-05-09 14:25         ` Guilherme G. Piccoli
2022-05-09 14:25         ` Guilherme G. Piccoli
2022-05-09 14:25         ` Guilherme G. Piccoli
2022-05-09 14:25         ` Guilherme G. Piccoli
2022-04-29 17:53   ` Michael Kelley (LINUX)
2022-04-29 17:53     ` Michael Kelley (LINUX)
2022-04-29 17:53     ` Michael Kelley
2022-04-29 17:53     ` Michael Kelley (LINUX)
2022-04-29 20:38     ` Guilherme G. Piccoli
2022-04-29 20:38       ` Guilherme G. Piccoli
2022-04-29 20:38       ` Guilherme G. Piccoli
2022-04-29 20:38       ` Guilherme G. Piccoli
2022-04-29 20:38       ` Guilherme G. Piccoli
2022-05-03 17:31       ` Michael Kelley (LINUX)
2022-05-03 17:31         ` Michael Kelley (LINUX)
2022-05-03 17:31         ` Michael Kelley
2022-05-03 17:31         ` Michael Kelley (LINUX)
2022-05-03 18:06         ` Guilherme G. Piccoli
2022-05-03 18:06           ` Guilherme G. Piccoli
2022-05-03 18:06           ` Guilherme G. Piccoli
2022-05-03 18:06           ` Guilherme G. Piccoli
2022-05-03 18:06           ` Guilherme G. Piccoli
2022-05-09 15:16   ` d.hatayama
2022-05-09 15:16     ` d.hatayama
2022-05-09 15:16     ` d.hatayama
2022-05-09 15:16     ` d.hatayama
2022-05-09 15:16     ` d.hatayama
2022-05-09 16:39     ` Guilherme G. Piccoli
2022-05-09 16:39       ` Guilherme G. Piccoli
2022-05-09 16:39       ` Guilherme G. Piccoli
2022-05-09 16:39       ` Guilherme G. Piccoli
2022-05-09 16:39       ` Guilherme G. Piccoli
2022-05-12 14:03   ` Petr Mladek
2022-05-12 14:03     ` Petr Mladek
2022-05-12 14:03     ` Petr Mladek
2022-05-12 14:03     ` Petr Mladek
2022-05-12 14:03     ` Petr Mladek
2022-05-15 22:47     ` Guilherme G. Piccoli
2022-05-15 22:47       ` Guilherme G. Piccoli
2022-05-15 22:47       ` Guilherme G. Piccoli
2022-05-15 22:47       ` Guilherme G. Piccoli
2022-05-15 22:47       ` Guilherme G. Piccoli
2022-05-16 10:21       ` Petr Mladek
2022-05-16 10:21         ` Petr Mladek
2022-05-16 10:21         ` Petr Mladek
2022-05-16 10:21         ` Petr Mladek
2022-05-16 10:21         ` Petr Mladek
2022-05-16 16:32         ` Guilherme G. Piccoli
2022-05-16 16:32           ` Guilherme G. Piccoli
2022-05-16 16:32           ` Guilherme G. Piccoli
2022-05-16 16:32           ` Guilherme G. Piccoli
2022-05-16 16:32           ` Guilherme G. Piccoli
2022-05-19 23:45       ` Baoquan He
2022-05-19 23:45         ` Baoquan He
2022-05-19 23:45         ` Baoquan He
2022-05-19 23:45         ` Baoquan He
2022-05-19 23:45         ` Baoquan He
2022-05-20 11:23         ` Guilherme G. Piccoli
2022-05-20 11:23           ` Guilherme G. Piccoli
2022-05-20 11:23           ` Guilherme G. Piccoli
2022-05-20 11:23           ` Guilherme G. Piccoli
2022-05-20 11:23           ` Guilherme G. Piccoli
2022-05-24  8:01           ` Petr Mladek
2022-05-24  8:01             ` Petr Mladek
2022-05-24  8:01             ` Petr Mladek
2022-05-24  8:01             ` Petr Mladek
2022-05-24  8:01             ` Petr Mladek
2022-05-24 10:18             ` Baoquan He
2022-05-24 10:18               ` Baoquan He
2022-05-24 10:18               ` Baoquan He
2022-05-24 10:18               ` Baoquan He
2022-05-24 10:18               ` Baoquan He
2022-05-24  8:32           ` Baoquan He
2022-05-24  8:32             ` Baoquan He
2022-05-24  8:32             ` Baoquan He
2022-05-24  8:32             ` Baoquan He
2022-05-24  8:32             ` Baoquan He
2022-05-24 14:44   ` Eric W. Biederman
2022-05-24 14:44     ` Eric W. Biederman
2022-05-24 14:44     ` Eric W. Biederman
2022-05-24 14:44     ` Eric W. Biederman
2022-05-24 14:44     ` Eric W. Biederman
2022-05-26 16:25     ` Guilherme G. Piccoli
2022-05-26 16:25       ` Guilherme G. Piccoli
2022-05-26 16:25       ` Guilherme G. Piccoli
2022-05-26 16:25       ` Guilherme G. Piccoli
2022-05-26 16:25       ` Guilherme G. Piccoli
2022-06-14 14:36       ` Petr Mladek
2022-06-14 14:36         ` Petr Mladek
2022-06-14 14:36         ` Petr Mladek
2022-06-14 14:36         ` Petr Mladek
2022-06-14 14:36         ` Petr Mladek
2022-06-15  9:36         ` Guilherme G. Piccoli
2022-06-15  9:36           ` Guilherme G. Piccoli
2022-06-15  9:36           ` Guilherme G. Piccoli
2022-06-15  9:36           ` Guilherme G. Piccoli
2022-06-15  9:36           ` Guilherme G. Piccoli
2022-04-27 22:49 ` Guilherme G. Piccoli [this message]
2022-04-27 22:49   ` [PATCH 25/30] panic, printk: Add console flush parameter and convert panic_print to a notifier Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-16 14:56   ` Petr Mladek
2022-05-16 14:56     ` Petr Mladek
2022-05-16 14:56     ` Petr Mladek
2022-05-16 14:56     ` Petr Mladek
2022-05-16 14:56     ` Petr Mladek
2022-05-16 16:11     ` Guilherme G. Piccoli
2022-05-16 16:11       ` Guilherme G. Piccoli
2022-05-16 16:11       ` Guilherme G. Piccoli
2022-05-16 16:11       ` Guilherme G. Piccoli
2022-05-16 16:11       ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 26/30] Drivers: hv: Do not force all panic notifiers to execute before kdump Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 27/30] powerpc: " Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 28/30] panic: Unexport crash_kexec_post_notifiers Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 29/30] powerpc: ps3, pseries: Avoid duplicate call to kmsg_dump() on panic Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49 ` [PATCH 30/30] um: Avoid duplicate call to kmsg_dump() Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-04-27 22:49   ` Guilherme G. Piccoli
2022-05-24 11:08 ` (subset) [PATCH 00/30] The panic notifiers refactor Michael Ellerman

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=20220427224924.592546-26-gpiccoli@igalia.com \
    --to=gpiccoli@igalia.com \
    --cc=akpm@linux-foundation.org \
    --cc=alejandro.j.jimenez@oracle.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=coresight@lists.linaro.org \
    --cc=d.hatayama@jp.fujitsu.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dyoung@redhat.com \
    --cc=fabiomirmar@gmail.com \
    --cc=feng.tang@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=halves@canonical.com \
    --cc=hidehiro.kawai.ez@hitachi.com \
    --cc=jgross@suse.com \
    --cc=john.ogness@linutronix.de \
    --cc=keescook@chromium.org \
    --cc=kernel-dev@igalia.com \
    --cc=kernel@gpiccoli.net \
    --cc=kexec@lists.infradead.org \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=openipmi-developer@lists.sourceforge.net \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=tglx@linutronix.de \
    --cc=vgoyal@redhat.com \
    --cc=vkuznets@redhat.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.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 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.