[PATCH 20/30] panic: Add the panic informational notifier list

Suzuki K Poulose suzuki.poulose at arm.com
Thu Apr 28 01:14:11 PDT 2022


On 27/04/2022 23:49, Guilherme G. Piccoli wrote:
> The goal of this new panic notifier is to allow its users to
> register callbacks to run earlier in the panic path than they
> currently do. This aims at informational mechanisms, like dumping
> kernel offsets and showing device error data (in case it's simple
> registers reading, for example) as well as mechanisms to disable
> log flooding (like hung_task detector / RCU warnings) and the
> tracing dump_on_oops (when enabled).
> 
> Any (non-invasive) information that should be provided before
> kmsg_dump() as well as log flooding preventing code should fit
> here, as long it offers relatively low risk for kdump.
> 
> For now, the patch is almost a no-op, although it changes a bit
> the ordering in which some panic notifiers are executed - specially
> affected by this are the notifiers responsible for disabling the
> hung_task detector / RCU warnings, which now run first. In a
> subsequent patch, the panic path will be refactored, then the
> panic informational notifiers will effectively run earlier,
> before ksmg_dump() (and usually before kdump as well).
> 
> We also defer documenting it all properly in the subsequent
> refactor patch. Finally, while at it, we removed some useless
> header inclusions too.
> 
> Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Florian Fainelli <f.fainelli at gmail.com>
> Cc: Frederic Weisbecker <frederic at kernel.org>
> Cc: "H. Peter Anvin" <hpa at zytor.com>
> Cc: Hari Bathini <hbathini at linux.ibm.com>
> Cc: Joel Fernandes <joel at joelfernandes.org>
> Cc: Jonathan Hunter <jonathanh at nvidia.com>
> Cc: Josh Triplett <josh at joshtriplett.org>
> Cc: Lai Jiangshan <jiangshanlai at gmail.com>
> Cc: Leo Yan <leo.yan at linaro.org>
> Cc: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> Cc: Mathieu Poirier <mathieu.poirier at linaro.org>
> Cc: Michael Ellerman <mpe at ellerman.id.au>
> Cc: Mike Leach <mike.leach at linaro.org>
> Cc: Mikko Perttunen <mperttunen at nvidia.com>
> Cc: Neeraj Upadhyay <quic_neeraju at quicinc.com>
> Cc: Nicholas Piggin <npiggin at gmail.com>
> Cc: Paul Mackerras <paulus at samba.org>
> Cc: Suzuki K Poulose <suzuki.poulose at arm.com>
> Cc: Thierry Reding <thierry.reding at gmail.com>
> Cc: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
> Signed-off-by: Guilherme G. Piccoli <gpiccoli at igalia.com>
> ---
>   arch/arm64/kernel/setup.c                         | 2 +-
>   arch/mips/kernel/relocate.c                       | 2 +-
>   arch/powerpc/kernel/setup-common.c                | 2 +-
>   arch/x86/kernel/setup.c                           | 2 +-
>   drivers/bus/brcmstb_gisb.c                        | 2 +-
>   drivers/hwtracing/coresight/coresight-cpu-debug.c | 4 ++--
>   drivers/soc/tegra/ari-tegra186.c                  | 3 ++-
>   include/linux/panic_notifier.h                    | 1 +
>   kernel/hung_task.c                                | 3 ++-
>   kernel/panic.c                                    | 4 ++++
>   kernel/rcu/tree.c                                 | 1 -
>   kernel/rcu/tree_stall.h                           | 3 ++-
>   kernel/trace/trace.c                              | 2 +-
>   13 files changed, 19 insertions(+), 12 deletions(-)
> 

...

> diff --git a/drivers/hwtracing/coresight/coresight-cpu-debug.c b/drivers/hwtracing/coresight/coresight-cpu-debug.c
> index 1874df7c6a73..7b1012454525 100644
> --- a/drivers/hwtracing/coresight/coresight-cpu-debug.c
> +++ b/drivers/hwtracing/coresight/coresight-cpu-debug.c
> @@ -535,7 +535,7 @@ static int debug_func_init(void)
>   			    &debug_func_knob_fops);
>   
>   	/* Register function to be called for panic */
> -	ret = atomic_notifier_chain_register(&panic_notifier_list,
> +	ret = atomic_notifier_chain_register(&panic_info_list,
>   					     &debug_notifier);
>   	if (ret) {
>   		pr_err("%s: unable to register notifier: %d\n",
> @@ -552,7 +552,7 @@ static int debug_func_init(void)
>   
>   static void debug_func_exit(void)
>   {
> -	atomic_notifier_chain_unregister(&panic_notifier_list,
> +	atomic_notifier_chain_unregister(&panic_info_list,
>   					 &debug_notifier);
>   	debugfs_remove_recursive(debug_debugfs_dir);
>   }

Acked-by: Suzuki K Poulose <suzuki.poulose at arm.com>




More information about the kexec mailing list