diff options
author | Rob Herring <rob.herring@calxeda.com> | 2012-06-11 22:32:12 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-06-12 11:15:49 -0400 |
commit | e7930ba49e469d9ce7374a788336caf955f8d7e2 (patch) | |
tree | e022c408057f46881d8da9cfd9b76d5b34e551d5 /drivers/edac/edac_mc_sysfs.c | |
parent | c10538396bf3f0076630103ede49c863c27db720 (diff) |
edac: create top-level debugfs directory
Create a single, top-level "edac" directory for debugfs. An "mc[0-N]"
directory is then created for each memory controller. Individual drivers
can create additional entries such as h/w error injection control.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac/edac_mc_sysfs.c')
-rw-r--r-- | drivers/edac/edac_mc_sysfs.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 55b2f0a18d22..a2bf7e9dd6de 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c | |||
@@ -899,13 +899,33 @@ static struct device_type mci_attr_type = { | |||
899 | }; | 899 | }; |
900 | 900 | ||
901 | #ifdef CONFIG_EDAC_DEBUG | 901 | #ifdef CONFIG_EDAC_DEBUG |
902 | static struct dentry *edac_debugfs; | ||
903 | |||
904 | int __init edac_debugfs_init(void) | ||
905 | { | ||
906 | edac_debugfs = debugfs_create_dir("edac", NULL); | ||
907 | if (IS_ERR(edac_debugfs)) { | ||
908 | edac_debugfs = NULL; | ||
909 | return -ENOMEM; | ||
910 | } | ||
911 | return 0; | ||
912 | } | ||
913 | |||
914 | void __exit edac_debugfs_exit(void) | ||
915 | { | ||
916 | debugfs_remove(edac_debugfs); | ||
917 | } | ||
918 | |||
902 | int edac_create_debug_nodes(struct mem_ctl_info *mci) | 919 | int edac_create_debug_nodes(struct mem_ctl_info *mci) |
903 | { | 920 | { |
904 | struct dentry *d, *parent; | 921 | struct dentry *d, *parent; |
905 | char name[80]; | 922 | char name[80]; |
906 | int i; | 923 | int i; |
907 | 924 | ||
908 | d = debugfs_create_dir(mci->dev.kobj.name, mci->debugfs); | 925 | if (!edac_debugfs) |
926 | return -ENODEV; | ||
927 | |||
928 | d = debugfs_create_dir(mci->dev.kobj.name, edac_debugfs); | ||
909 | if (!d) | 929 | if (!d) |
910 | return -ENOMEM; | 930 | return -ENOMEM; |
911 | parent = d; | 931 | parent = d; |
@@ -930,6 +950,7 @@ int edac_create_debug_nodes(struct mem_ctl_info *mci) | |||
930 | if (!d) | 950 | if (!d) |
931 | goto nomem; | 951 | goto nomem; |
932 | 952 | ||
953 | mci->debugfs = parent; | ||
933 | return 0; | 954 | return 0; |
934 | nomem: | 955 | nomem: |
935 | debugfs_remove(mci->debugfs); | 956 | debugfs_remove(mci->debugfs); |