From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suzuki K Poulose Subject: Re: [PATCH 20/30] panic: Add the panic informational notifier list Date: Thu, 28 Apr 2022 09:14:11 +0100 Message-ID: <7956ab00-66b6-bd89-dcc0-f10cf2741e4d@arm.com> References: <20220427224924.592546-1-gpiccoli@igalia.com> <20220427224924.592546-21-gpiccoli@igalia.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20220427224924.592546-21-gpiccoli@igalia.com> List-ID: Content-Type: text/plain; charset="us-ascii"; format="flowed" To: "Guilherme G. Piccoli" , 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, kernel@gpiccoli.net, halves@canonical.com, fabiomirmar@gmail.com, alejandro.j.jimenez@ora 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 > Cc: Catalin Marinas > Cc: Florian Fainelli > Cc: Frederic Weisbecker > Cc: "H. Peter Anvin" > Cc: Hari Bathini > Cc: Joel Fernandes > Cc: Jonathan Hunter > Cc: Josh Triplett > Cc: Lai Jiangshan > Cc: Leo Yan > Cc: Mathieu Desnoyers > Cc: Mathieu Poirier > Cc: Michael Ellerman > Cc: Mike Leach > Cc: Mikko Perttunen > Cc: Neeraj Upadhyay > Cc: Nicholas Piggin > Cc: Paul Mackerras > Cc: Suzuki K Poulose > Cc: Thierry Reding > Cc: Thomas Bogendoerfer > Signed-off-by: Guilherme G. Piccoli > --- > 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