Skip to content

Commit

Permalink
dmaengine: add verification of DMA_INTERRUPT capability for dmatest
Browse files Browse the repository at this point in the history
Looks like I forgot to add DMA_INTERRUPT cap setting to the idxd driver and
dmatest is still working regardless of this mistake. Add an explicit check
of DMA_INTERRUPT capability for dmatest to make sure the DMA device being used
actually supports interrupt before the test is launched and also that the
driver is programmed correctly.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/164978679251.2361020.5856734256126725993.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
  • Loading branch information
Dave Jiang authored and Vinod Koul committed Apr 20, 2022
1 parent e335de6 commit a8facc7
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions drivers/dma/dmatest.c
Original file line number Diff line number Diff line change
Expand Up @@ -675,10 +675,16 @@ static int dmatest_func(void *data)
/*
* src and dst buffers are freed by ourselves below
*/
if (params->polled)
if (params->polled) {
flags = DMA_CTRL_ACK;
else
flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
} else {
if (dma_has_cap(DMA_INTERRUPT, dev->cap_mask)) {
flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
} else {
pr_err("Channel does not support interrupt!\n");
goto err_pq_array;
}
}

ktime = ktime_get();
while (!(kthread_should_stop() ||
Expand Down Expand Up @@ -906,6 +912,7 @@ static int dmatest_func(void *data)
runtime = ktime_to_us(ktime);

ret = 0;
err_pq_array:
kfree(dma_pq);
err_srcs_array:
kfree(srcs);
Expand Down

0 comments on commit a8facc7

Please sign in to comment.