edac: Allow the option of creating a deferrable work for polling

EDAC provides a mechanism to poll for errors using a callback function
and uses a delayed timer to schedule it. Provide an option to create
a deferrable timer if the error checking is not worth waking up
the cpu from idle.

Change-Id: Ia25216323eabf7fa4b894897c950414006921f3f
Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
This commit is contained in:
Rohit Vaswani 2014-10-03 13:13:15 -07:00
parent 4baf1e45b1
commit 1366501171
2 changed files with 6 additions and 1 deletions

View File

@ -225,6 +225,7 @@ struct edac_device_ctl_info {
int panic_on_ue; /* boolean for panic'ing on an UE */
unsigned poll_msec; /* number of milliseconds to poll interval */
unsigned long delay; /* number of jiffies for poll_msec */
bool defer_work; /* Create a deferrable work for polling */
/* Additional top controller level attributes, but specified
* by the low level driver.

View File

@ -414,7 +414,11 @@ void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,
edac_dev->poll_msec = msec;
edac_dev->delay = msecs_to_jiffies(msec);
INIT_DELAYED_WORK(&edac_dev->work, edac_device_workq_function);
if (edac_dev->defer_work)
INIT_DEFERRABLE_WORK(&edac_dev->work,
edac_device_workq_function);
else
INIT_DELAYED_WORK(&edac_dev->work, edac_device_workq_function);
/* optimize here for the 1 second case, which will be normal value, to
* fire ON the 1 second time event. This helps reduce all sorts of