diff options
Diffstat (limited to 'drivers/edac/edac_module.c')
| -rw-r--r-- | drivers/edac/edac_module.c | 49 | 
1 files changed, 29 insertions, 20 deletions
diff --git a/drivers/edac/edac_module.c b/drivers/edac/edac_module.c index be4b075c309..a66941fea5a 100644 --- a/drivers/edac/edac_module.c +++ b/drivers/edac/edac_module.c @@ -15,12 +15,32 @@  #include "edac_core.h"  #include "edac_module.h" -#define EDAC_VERSION "Ver: 2.1.0 " __DATE__ +#define EDAC_VERSION "Ver: 3.0.0"  #ifdef CONFIG_EDAC_DEBUG + +static int edac_set_debug_level(const char *buf, struct kernel_param *kp) +{ +	unsigned long val; +	int ret; + +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret; + +	if (val < 0 || val > 4) +		return -EINVAL; + +	return param_set_int(buf, kp); +} +  /* Values of 0 to 4 will generate output */  int edac_debug_level = 2;  EXPORT_SYMBOL_GPL(edac_debug_level); + +module_param_call(edac_debug_level, edac_set_debug_level, param_get_int, +		  &edac_debug_level, 0644); +MODULE_PARM_DESC(edac_debug_level, "EDAC debug level: [0-4], default: 2");  #endif  /* scope is to module level only */ @@ -90,26 +110,21 @@ static int __init edac_init(void)  	 */  	edac_pci_clear_parity_errors(); -	/* -	 * now set up the mc_kset under the edac class object -	 */ -	err = edac_sysfs_setup_mc_kset(); +	err = edac_mc_sysfs_init();  	if (err)  		goto error; +	edac_debugfs_init(); +  	/* Setup/Initialize the workq for this core */  	err = edac_workqueue_setup();  	if (err) {  		edac_printk(KERN_ERR, EDAC_MC, "init WorkQueue failure\n"); -		goto workq_fail; +		goto error;  	}  	return 0; -	/* Error teardown stack */ -workq_fail: -	edac_sysfs_teardown_mc_kset(); -  error:  	return err;  } @@ -120,26 +135,20 @@ error:   */  static void __exit edac_exit(void)  { -	debugf0("%s()\n", __func__); +	edac_dbg(0, "\n");  	/* tear down the various subsystems */  	edac_workqueue_teardown(); -	edac_sysfs_teardown_mc_kset(); +	edac_mc_sysfs_exit(); +	edac_debugfs_exit();  }  /*   * Inform the kernel of our entry and exit points   */ -module_init(edac_init); +subsys_initcall(edac_init);  module_exit(edac_exit);  MODULE_LICENSE("GPL");  MODULE_AUTHOR("Doug Thompson www.softwarebitmaker.com, et al");  MODULE_DESCRIPTION("Core library routines for EDAC reporting"); - -/* refer to *_sysfs.c files for parameters that are exported via sysfs */ - -#ifdef CONFIG_EDAC_DEBUG -module_param(edac_debug_level, int, 0644); -MODULE_PARM_DESC(edac_debug_level, "Debug level"); -#endif  | 
