EDAC: Get rid of edac_handlers
Use mc_devices list instead to check whether we have EDAC driver instances successfully registered with EDAC core. Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
Родитель
db47d5f856
Коммит
97bb6c17ad
|
@ -601,7 +601,6 @@ static int add_mc_to_global_list(struct mem_ctl_info *mci)
|
||||||
}
|
}
|
||||||
|
|
||||||
list_add_tail_rcu(&mci->link, insert_before);
|
list_add_tail_rcu(&mci->link, insert_before);
|
||||||
atomic_inc(&edac_handlers);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail0:
|
fail0:
|
||||||
|
@ -619,7 +618,6 @@ fail1:
|
||||||
|
|
||||||
static int del_mc_from_global_list(struct mem_ctl_info *mci)
|
static int del_mc_from_global_list(struct mem_ctl_info *mci)
|
||||||
{
|
{
|
||||||
int handlers = atomic_dec_return(&edac_handlers);
|
|
||||||
list_del_rcu(&mci->link);
|
list_del_rcu(&mci->link);
|
||||||
|
|
||||||
/* these are for safe removal of devices from global list while
|
/* these are for safe removal of devices from global list while
|
||||||
|
@ -628,7 +626,7 @@ static int del_mc_from_global_list(struct mem_ctl_info *mci)
|
||||||
synchronize_rcu();
|
synchronize_rcu();
|
||||||
INIT_LIST_HEAD(&mci->link);
|
INIT_LIST_HEAD(&mci->link);
|
||||||
|
|
||||||
return handlers;
|
return list_empty(&mc_devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mem_ctl_info *edac_mc_find(int idx)
|
struct mem_ctl_info *edac_mc_find(int idx)
|
||||||
|
@ -763,7 +761,7 @@ struct mem_ctl_info *edac_mc_del_mc(struct device *dev)
|
||||||
/* mark MCI offline: */
|
/* mark MCI offline: */
|
||||||
mci->op_state = OP_OFFLINE;
|
mci->op_state = OP_OFFLINE;
|
||||||
|
|
||||||
if (!del_mc_from_global_list(mci))
|
if (del_mc_from_global_list(mci))
|
||||||
edac_mc_owner = NULL;
|
edac_mc_owner = NULL;
|
||||||
|
|
||||||
mutex_unlock(&mem_ctls_mutex);
|
mutex_unlock(&mem_ctls_mutex);
|
||||||
|
|
|
@ -20,9 +20,6 @@
|
||||||
int edac_op_state = EDAC_OPSTATE_INVAL;
|
int edac_op_state = EDAC_OPSTATE_INVAL;
|
||||||
EXPORT_SYMBOL_GPL(edac_op_state);
|
EXPORT_SYMBOL_GPL(edac_op_state);
|
||||||
|
|
||||||
atomic_t edac_handlers = ATOMIC_INIT(0);
|
|
||||||
EXPORT_SYMBOL_GPL(edac_handlers);
|
|
||||||
|
|
||||||
int edac_err_assert = 0;
|
int edac_err_assert = 0;
|
||||||
EXPORT_SYMBOL_GPL(edac_err_assert);
|
EXPORT_SYMBOL_GPL(edac_err_assert);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,6 @@ struct device;
|
||||||
|
|
||||||
extern int edac_op_state;
|
extern int edac_op_state;
|
||||||
extern int edac_err_assert;
|
extern int edac_err_assert;
|
||||||
extern atomic_t edac_handlers;
|
|
||||||
|
|
||||||
extern struct bus_type *edac_get_sysfs_subsys(void);
|
extern struct bus_type *edac_get_sysfs_subsys(void);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче