aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/edac_mc_sysfs.c
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-06-11 22:32:12 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-06-12 11:15:49 -0400
commite7930ba49e469d9ce7374a788336caf955f8d7e2 (patch)
treee022c408057f46881d8da9cfd9b76d5b34e551d5 /drivers/edac/edac_mc_sysfs.c
parentc10538396bf3f0076630103ede49c863c27db720 (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.c23
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
902static struct dentry *edac_debugfs;
903
904int __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
914void __exit edac_debugfs_exit(void)
915{
916 debugfs_remove(edac_debugfs);
917}
918
902int edac_create_debug_nodes(struct mem_ctl_info *mci) 919int 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;
934nomem: 955nomem:
935 debugfs_remove(mci->debugfs); 956 debugfs_remove(mci->debugfs);