VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
09c434b8a0047 (Thomas Gleixner 2019-05-19 13:08:20 +0100  1) // SPDX-License-Identifier: GPL-2.0-only
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  2) #include <linux/kernel.h>
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  3) #include <linux/module.h>
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  4) #include <linux/memory.h>
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  5) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  6) #include "notifier-error-inject.h"
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  7) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  8) static int priority;
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700  9) module_param(priority, int, 0);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 10) MODULE_PARM_DESC(priority, "specify memory notifier priority");
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 11) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 12) static struct notifier_err_inject memory_notifier_err_inject = {
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 13) 	.actions = {
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 14) 		{ NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_ONLINE) },
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 15) 		{ NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_OFFLINE) },
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 16) 		{}
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 17) 	}
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 18) };
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 19) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 20) static struct dentry *dir;
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 21) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 22) static int err_inject_init(void)
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 23) {
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 24) 	int err;
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 25) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 26) 	dir = notifier_err_inject_init("memory", notifier_err_inject_dir,
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 27) 					&memory_notifier_err_inject, priority);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 28) 	if (IS_ERR(dir))
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 29) 		return PTR_ERR(dir);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 30) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 31) 	err = register_memory_notifier(&memory_notifier_err_inject.nb);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 32) 	if (err)
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 33) 		debugfs_remove_recursive(dir);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 34) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 35) 	return err;
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 36) }
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 37) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 38) static void err_inject_exit(void)
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 39) {
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 40) 	unregister_memory_notifier(&memory_notifier_err_inject.nb);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 41) 	debugfs_remove_recursive(dir);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 42) }
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 43) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 44) module_init(err_inject_init);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 45) module_exit(err_inject_exit);
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 46) 
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 47) MODULE_DESCRIPTION("memory notifier error injection module");
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 48) MODULE_LICENSE("GPL");
9579f5bd31a04 (Akinobu Mita    2012-07-30 14:43:10 -0700 49) MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>");