diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-12-13 18:32:52 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-12-13 18:32:52 -0500 |
commit | d526e85f60fce9aa2a1432cbd06e3cf20c1644c8 (patch) | |
tree | 8432d5f7f36254fcfea5a1c2d38a93a4fac42a8b /lib/of-reconfig-notifier-error-inject.c | |
parent | 1a9bd45412665e73c72612b6f744378d860e02a8 (diff) |
powerpc+of: Rename and fix OF reconfig notifier error inject module
This module used to inject errors in the pSeries specific dynamic
reconfiguration notifiers. Those are gone however, replaced by
generic notifiers for changes to the device-tree. So let's update
the module to deal with these instead and rename it along the way.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Akinobu Mita <akinobu.mita@gmail.com>
Diffstat (limited to 'lib/of-reconfig-notifier-error-inject.c')
-rw-r--r-- | lib/of-reconfig-notifier-error-inject.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/of-reconfig-notifier-error-inject.c b/lib/of-reconfig-notifier-error-inject.c new file mode 100644 index 000000000000..8dc79861758a --- /dev/null +++ b/lib/of-reconfig-notifier-error-inject.c | |||
@@ -0,0 +1,51 @@ | |||
1 | #include <linux/kernel.h> | ||
2 | #include <linux/module.h> | ||
3 | #include <linux/of.h> | ||
4 | |||
5 | #include "notifier-error-inject.h" | ||
6 | |||
7 | static int priority; | ||
8 | module_param(priority, int, 0); | ||
9 | MODULE_PARM_DESC(priority, "specify OF reconfig notifier priority"); | ||
10 | |||
11 | static struct notifier_err_inject reconfig_err_inject = { | ||
12 | .actions = { | ||
13 | { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ATTACH_NODE) }, | ||
14 | { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_DETACH_NODE) }, | ||
15 | { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ADD_PROPERTY) }, | ||
16 | { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_REMOVE_PROPERTY) }, | ||
17 | { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_UPDATE_PROPERTY) }, | ||
18 | {} | ||
19 | } | ||
20 | }; | ||
21 | |||
22 | static struct dentry *dir; | ||
23 | |||
24 | static int err_inject_init(void) | ||
25 | { | ||
26 | int err; | ||
27 | |||
28 | dir = notifier_err_inject_init("OF-reconfig", | ||
29 | notifier_err_inject_dir, &reconfig_err_inject, priority); | ||
30 | if (IS_ERR(dir)) | ||
31 | return PTR_ERR(dir); | ||
32 | |||
33 | err = of_reconfig_notifier_register(&reconfig_err_inject.nb); | ||
34 | if (err) | ||
35 | debugfs_remove_recursive(dir); | ||
36 | |||
37 | return err; | ||
38 | } | ||
39 | |||
40 | static void err_inject_exit(void) | ||
41 | { | ||
42 | of_reconfig_notifier_unregister(&reconfig_err_inject.nb); | ||
43 | debugfs_remove_recursive(dir); | ||
44 | } | ||
45 | |||
46 | module_init(err_inject_init); | ||
47 | module_exit(err_inject_exit); | ||
48 | |||
49 | MODULE_DESCRIPTION("OF reconfig notifier error injection module"); | ||
50 | MODULE_LICENSE("GPL"); | ||
51 | MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>"); | ||