1135b881eSDaniel Bristot de Oliveira // SPDX-License-Identifier: GPL-2.0 2135b881eSDaniel Bristot de Oliveira /* 3135b881eSDaniel Bristot de Oliveira * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org> 4135b881eSDaniel Bristot de Oliveira * 5135b881eSDaniel Bristot de Oliveira * Printk RV reactor: 6135b881eSDaniel Bristot de Oliveira * Prints the exception msg to the kernel message log. 7135b881eSDaniel Bristot de Oliveira */ 8135b881eSDaniel Bristot de Oliveira #include <linux/ftrace.h> 9135b881eSDaniel Bristot de Oliveira #include <linux/tracepoint.h> 10135b881eSDaniel Bristot de Oliveira #include <linux/kernel.h> 11135b881eSDaniel Bristot de Oliveira #include <linux/module.h> 12135b881eSDaniel Bristot de Oliveira #include <linux/init.h> 13135b881eSDaniel Bristot de Oliveira #include <linux/rv.h> 14135b881eSDaniel Bristot de Oliveira rv_printk_reaction(char * msg)15135b881eSDaniel Bristot de Oliveirastatic void rv_printk_reaction(char *msg) 16135b881eSDaniel Bristot de Oliveira { 17135b881eSDaniel Bristot de Oliveira printk_deferred(msg); 18135b881eSDaniel Bristot de Oliveira } 19135b881eSDaniel Bristot de Oliveira 20135b881eSDaniel Bristot de Oliveira static struct rv_reactor rv_printk = { 21135b881eSDaniel Bristot de Oliveira .name = "printk", 22135b881eSDaniel Bristot de Oliveira .description = "prints the exception msg to the kernel message log.", 23135b881eSDaniel Bristot de Oliveira .react = rv_printk_reaction 24135b881eSDaniel Bristot de Oliveira }; 25135b881eSDaniel Bristot de Oliveira register_react_printk(void)26*93d71986SXiu Jianfengstatic int __init register_react_printk(void) 27135b881eSDaniel Bristot de Oliveira { 28135b881eSDaniel Bristot de Oliveira rv_register_reactor(&rv_printk); 29135b881eSDaniel Bristot de Oliveira return 0; 30135b881eSDaniel Bristot de Oliveira } 31135b881eSDaniel Bristot de Oliveira unregister_react_printk(void)32*93d71986SXiu Jianfengstatic void __exit unregister_react_printk(void) 33135b881eSDaniel Bristot de Oliveira { 34135b881eSDaniel Bristot de Oliveira rv_unregister_reactor(&rv_printk); 35135b881eSDaniel Bristot de Oliveira } 36135b881eSDaniel Bristot de Oliveira 37135b881eSDaniel Bristot de Oliveira module_init(register_react_printk); 38135b881eSDaniel Bristot de Oliveira module_exit(unregister_react_printk); 39135b881eSDaniel Bristot de Oliveira 40135b881eSDaniel Bristot de Oliveira MODULE_AUTHOR("Daniel Bristot de Oliveira"); 41135b881eSDaniel Bristot de Oliveira MODULE_DESCRIPTION("printk rv reactor: printk if an exception is hit."); 42