#include <linux/kernel.h> #include <linux/module.h> #include <linux/memory.h> #include "notifier-error-inject.h" static int priority; module_param(priority, int, 0); MODULE_PARM_DESC(priority, "specify memory notifier priority"); static struct notifier_err_inject memory_notifier_err_inject = { .actions = { { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_ONLINE) }, { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_OFFLINE) }, {} } }; static struct dentry *dir; static int err_inject_init(void) { int err; dir = notifier_err_inject_init("memory", notifier_err_inject_dir, &memory_notifier_err_inject, priority); if (IS_ERR(dir)) return PTR_ERR(dir); err = register_memory_notifier(&memory_notifier_err_inject.nb); if (err)
#include <linux/kernel.h> #include <linux/module.h> #include <linux/of.h> #include "notifier-error-inject.h" static int priority; module_param(priority, int, 0); MODULE_PARM_DESC(priority, "specify OF reconfig notifier priority"); static struct notifier_err_inject reconfig_err_inject = { .actions = { { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ATTACH_NODE) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_DETACH_NODE) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ADD_PROPERTY) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_REMOVE_PROPERTY) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_UPDATE_PROPERTY) }, {} } }; static struct dentry *dir; static int err_inject_init(void) { int err; dir = notifier_err_inject_init("OF-reconfig", notifier_err_inject_dir, &reconfig_err_inject, priority); if (IS_ERR(dir)) return PTR_ERR(dir);
#include <linux/kernel.h> #include <linux/module.h> #include <linux/cpu.h> #include "notifier-error-inject.h" static int priority; module_param(priority, int, 0); MODULE_PARM_DESC(priority, "specify cpu notifier priority"); static struct notifier_err_inject cpu_notifier_err_inject = { .actions = { { NOTIFIER_ERR_INJECT_ACTION(CPU_UP_PREPARE) }, { NOTIFIER_ERR_INJECT_ACTION(CPU_UP_PREPARE_FROZEN) }, { NOTIFIER_ERR_INJECT_ACTION(CPU_DOWN_PREPARE) }, { NOTIFIER_ERR_INJECT_ACTION(CPU_DOWN_PREPARE_FROZEN) }, {} } }; static struct dentry *dir; static int err_inject_init(void) { int err; dir = notifier_err_inject_init("cpu", notifier_err_inject_dir, &cpu_notifier_err_inject, priority); if (IS_ERR(dir)) return PTR_ERR(dir);
#include <linux/kernel.h> #include <linux/module.h> #include <asm/pSeries_reconfig.h> #include "notifier-error-inject.h" static int priority; module_param(priority, int, 0); MODULE_PARM_DESC(priority, "specify pSeries reconfig notifier priority"); static struct notifier_err_inject reconfig_err_inject = { .actions = { { NOTIFIER_ERR_INJECT_ACTION(PSERIES_RECONFIG_ADD) }, { NOTIFIER_ERR_INJECT_ACTION(PSERIES_RECONFIG_REMOVE) }, { NOTIFIER_ERR_INJECT_ACTION(PSERIES_DRCONF_MEM_ADD) }, { NOTIFIER_ERR_INJECT_ACTION(PSERIES_DRCONF_MEM_REMOVE) }, {} } }; static struct dentry *dir; static int err_inject_init(void) { int err; dir = notifier_err_inject_init("pSeries-reconfig", notifier_err_inject_dir, &reconfig_err_inject, priority); if (IS_ERR(dir)) return PTR_ERR(dir);