|
|
@@ -548,8 +548,7 @@ static void edac_mc_workq_function(struct work_struct *work_req)
|
|
|
mutex_unlock(&mem_ctls_mutex);
|
|
|
|
|
|
/* Reschedule */
|
|
|
- queue_delayed_work(edac_workqueue, &mci->work,
|
|
|
- msecs_to_jiffies(edac_mc_get_poll_msec()));
|
|
|
+ edac_queue_work(&mci->work, msecs_to_jiffies(edac_mc_get_poll_msec()));
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -561,8 +560,7 @@ static void edac_mc_workq_function(struct work_struct *work_req)
|
|
|
*
|
|
|
* called with the mem_ctls_mutex held
|
|
|
*/
|
|
|
-static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec,
|
|
|
- bool init)
|
|
|
+static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec)
|
|
|
{
|
|
|
edac_dbg(0, "\n");
|
|
|
|
|
|
@@ -570,10 +568,9 @@ static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec,
|
|
|
if (mci->op_state != OP_RUNNING_POLL)
|
|
|
return;
|
|
|
|
|
|
- if (init)
|
|
|
- INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function);
|
|
|
+ INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function);
|
|
|
|
|
|
- mod_delayed_work(edac_workqueue, &mci->work, msecs_to_jiffies(msec));
|
|
|
+ edac_queue_work(&mci->work, msecs_to_jiffies(msec));
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -588,8 +585,7 @@ static void edac_mc_workq_teardown(struct mem_ctl_info *mci)
|
|
|
{
|
|
|
mci->op_state = OP_OFFLINE;
|
|
|
|
|
|
- cancel_delayed_work_sync(&mci->work);
|
|
|
- flush_workqueue(edac_workqueue);
|
|
|
+ edac_stop_work(&mci->work);
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -608,9 +604,8 @@ void edac_mc_reset_delay_period(unsigned long value)
|
|
|
list_for_each(item, &mc_devices) {
|
|
|
mci = list_entry(item, struct mem_ctl_info, link);
|
|
|
|
|
|
- edac_mc_workq_setup(mci, value, false);
|
|
|
+ edac_mod_work(&mci->work, value);
|
|
|
}
|
|
|
-
|
|
|
mutex_unlock(&mem_ctls_mutex);
|
|
|
}
|
|
|
|
|
|
@@ -781,7 +776,7 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci,
|
|
|
/* This instance is NOW RUNNING */
|
|
|
mci->op_state = OP_RUNNING_POLL;
|
|
|
|
|
|
- edac_mc_workq_setup(mci, edac_mc_get_poll_msec(), true);
|
|
|
+ edac_mc_workq_setup(mci, edac_mc_get_poll_msec());
|
|
|
} else {
|
|
|
mci->op_state = OP_RUNNING_INTERRUPT;
|
|
|
}
|