ioat: wait for self-test completion
As part of the ioat_dma self-test it performs a printk from a completion callback. Depending on the system console configuration this output can take longer than a millisecond causing the self-test to fail. Introduce a completion with a generous timeout to mitigate this failure. Cc: <stable@kernel.org> Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
4ffaf869c7
commit
532d3b1f86
|
@ -1341,10 +1341,12 @@ static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan)
|
||||||
*/
|
*/
|
||||||
#define IOAT_TEST_SIZE 2000
|
#define IOAT_TEST_SIZE 2000
|
||||||
|
|
||||||
|
DECLARE_COMPLETION(test_completion);
|
||||||
static void ioat_dma_test_callback(void *dma_async_param)
|
static void ioat_dma_test_callback(void *dma_async_param)
|
||||||
{
|
{
|
||||||
printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n",
|
printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n",
|
||||||
dma_async_param);
|
dma_async_param);
|
||||||
|
complete(&test_completion);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1410,7 +1412,8 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
|
||||||
goto free_resources;
|
goto free_resources;
|
||||||
}
|
}
|
||||||
device->common.device_issue_pending(dma_chan);
|
device->common.device_issue_pending(dma_chan);
|
||||||
msleep(1);
|
|
||||||
|
wait_for_completion_timeout(&test_completion, msecs_to_jiffies(3000));
|
||||||
|
|
||||||
if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
|
if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
|
||||||
!= DMA_SUCCESS) {
|
!= DMA_SUCCESS) {
|
||||||
|
|
Loading…
Reference in New Issue