EDAC: Cleanup/sync workqueue functions
They're both running only when ->edac_check is initialized so remove that check from the workqueue function itself. Synchronize/generalize the ->op_state check between the two. Kill useless comments, while at it. Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
626a7a4dba
commit
06e912d4d4
|
@ -535,19 +535,17 @@ static void edac_mc_workq_function(struct work_struct *work_req)
|
||||||
|
|
||||||
mutex_lock(&mem_ctls_mutex);
|
mutex_lock(&mem_ctls_mutex);
|
||||||
|
|
||||||
/* if this control struct has movd to offline state, we are done */
|
if (mci->op_state != OP_RUNNING_POLL) {
|
||||||
if (mci->op_state == OP_OFFLINE) {
|
|
||||||
mutex_unlock(&mem_ctls_mutex);
|
mutex_unlock(&mem_ctls_mutex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only poll controllers that are running polled and have a check */
|
if (edac_mc_assert_error_check_and_clear())
|
||||||
if (edac_mc_assert_error_check_and_clear() && (mci->edac_check != NULL))
|
|
||||||
mci->edac_check(mci);
|
mci->edac_check(mci);
|
||||||
|
|
||||||
mutex_unlock(&mem_ctls_mutex);
|
mutex_unlock(&mem_ctls_mutex);
|
||||||
|
|
||||||
/* Reschedule */
|
/* Queue ourselves again. */
|
||||||
edac_queue_work(&mci->work, msecs_to_jiffies(edac_mc_get_poll_msec()));
|
edac_queue_work(&mci->work, msecs_to_jiffies(edac_mc_get_poll_msec()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -195,23 +195,23 @@ static void edac_pci_workq_function(struct work_struct *work_req)
|
||||||
|
|
||||||
mutex_lock(&edac_pci_ctls_mutex);
|
mutex_lock(&edac_pci_ctls_mutex);
|
||||||
|
|
||||||
if (pci->op_state == OP_RUNNING_POLL) {
|
if (pci->op_state != OP_RUNNING_POLL) {
|
||||||
/* we might be in POLL mode, but there may NOT be a poll func
|
mutex_unlock(&edac_pci_ctls_mutex);
|
||||||
*/
|
return;
|
||||||
if ((pci->edac_check != NULL) && edac_pci_get_check_errors())
|
|
||||||
pci->edac_check(pci);
|
|
||||||
|
|
||||||
/* if we are on a one second period, then use round */
|
|
||||||
msec = edac_pci_get_poll_msec();
|
|
||||||
if (msec == 1000)
|
|
||||||
delay = round_jiffies_relative(msecs_to_jiffies(msec));
|
|
||||||
else
|
|
||||||
delay = msecs_to_jiffies(msec);
|
|
||||||
|
|
||||||
/* Reschedule only if we are in POLL mode */
|
|
||||||
edac_queue_work(&pci->work, delay);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (edac_pci_get_check_errors())
|
||||||
|
pci->edac_check(pci);
|
||||||
|
|
||||||
|
/* if we are on a one second period, then use round */
|
||||||
|
msec = edac_pci_get_poll_msec();
|
||||||
|
if (msec == 1000)
|
||||||
|
delay = round_jiffies_relative(msecs_to_jiffies(msec));
|
||||||
|
else
|
||||||
|
delay = msecs_to_jiffies(msec);
|
||||||
|
|
||||||
|
edac_queue_work(&pci->work, delay);
|
||||||
|
|
||||||
mutex_unlock(&edac_pci_ctls_mutex);
|
mutex_unlock(&edac_pci_ctls_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue