Skip to content

Commit

Permalink
rv/reactor: Add the panic reactor
Browse files Browse the repository at this point in the history
Sample reactor that panics the system when an exception is found. This
is useful both to capture a vmcore, or to fail-safe a critical system.

Cc: Wim Van Sebroeck <wim@linux-watchdog.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marco Elver <elver@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: "Paul E. McKenney" <paulmck@kernel.org>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Cc: Gabriele Paoloni <gpaoloni@redhat.com>
Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Clark Williams <williams@redhat.com>
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
  • Loading branch information
Daniel Bristot de Oliveira authored and intel-lab-lkp committed Jun 16, 2022
1 parent 8ce85c1 commit c32f84c
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
8 changes: 8 additions & 0 deletions kernel/trace/rv/Kconfig
Expand Up @@ -60,4 +60,12 @@ config RV_REACT_PRINTK
Enables the printk reactor. The printk reactor emmits a printk()
message if an exception is found.

config RV_REACT_PANIC
bool "Panic reactor"
depends on RV_REACTORS
default y if RV_REACTORS
help
Enables the panic reactor. The panic reactor emmits a printk()
message if an exception is found and panic()s the system.

endif # RV
1 change: 1 addition & 0 deletions kernel/trace/rv/Makefile
Expand Up @@ -5,3 +5,4 @@ obj-$(CONFIG_RV_MON_WIP) += monitors/wip/wip.o
obj-$(CONFIG_RV_MON_WWNR) += monitors/wwnr/wwnr.o
obj-$(CONFIG_RV_REACTORS) += rv_reactors.o
obj-$(CONFIG_RV_REACT_PRINTK) += reactor_printk.o
obj-$(CONFIG_RV_REACT_PANIC) += reactor_panic.o
44 changes: 44 additions & 0 deletions kernel/trace/rv/reactor_panic.c
@@ -0,0 +1,44 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Panic RV reactor:
* Prints the exception msg to the kernel message log and panic().
*
* Copyright (C) 2019-2022 Daniel Bristot de Oliveira <bristot@kernel.org>
*
*/

#include <linux/ftrace.h>
#include <linux/tracepoint.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/rv.h>

static void rv_panic_reaction(char *msg)
{
panic(msg);
}

struct rv_reactor rv_panic = {
.name = "panic",
.description = "panic the system if an exception is found.",
.react = rv_panic_reaction
};

int register_react_panic(void)
{
rv_register_reactor(&rv_panic);
return 0;
}

void unregister_react_panic(void)
{
rv_unregister_reactor(&rv_panic);
}

module_init(register_react_panic);
module_exit(unregister_react_panic);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Daniel Bristot de Oliveira");
MODULE_DESCRIPTION("panic rv reactor: panic if an exception is found");

0 comments on commit c32f84c

Please sign in to comment.