When running without IOMMU for address translation, i.e. IOVAs are
physical rather than virtual addresses, we need to translate the
pointers to IOVAs for the completion API tests.

Fixes: 9942ebb9c698 ("test/dma: add dmadev API test")
Cc: fengcheng...@huawei.com
Cc: sta...@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richard...@intel.com>
---
 app/test/test_dmadev_api.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/app/test/test_dmadev_api.c b/app/test/test_dmadev_api.c
index d40c05cfbf..fb49fcb56b 100644
--- a/app/test/test_dmadev_api.c
+++ b/app/test/test_dmadev_api.c
@@ -515,7 +515,9 @@ test_dma_completed(void)
        setup_memory();
 
        /* Check enqueue without submit */
-       ret = rte_dma_copy(test_dev_id, 0, (rte_iova_t)src, (rte_iova_t)dst,
+       ret = rte_dma_copy(test_dev_id, 0,
+                          rte_malloc_virt2iova(src),
+                          rte_malloc_virt2iova(dst),
                           TEST_MEMCPY_SIZE, 0);
        RTE_TEST_ASSERT_EQUAL(ret, 0, "Failed to enqueue copy, %d", ret);
        rte_delay_us_sleep(TEST_WAIT_US_VAL);
@@ -537,7 +539,9 @@ test_dma_completed(void)
        setup_memory();
 
        /* Check for enqueue with submit */
-       ret = rte_dma_copy(test_dev_id, 0, (rte_iova_t)src, (rte_iova_t)dst,
+       ret = rte_dma_copy(test_dev_id, 0,
+                          rte_malloc_virt2iova(src),
+                          rte_malloc_virt2iova(dst),
                           TEST_MEMCPY_SIZE, RTE_DMA_OP_FLAG_SUBMIT);
        RTE_TEST_ASSERT_EQUAL(ret, 1, "Failed to enqueue copy, %d", ret);
        rte_delay_us_sleep(TEST_WAIT_US_VAL);
@@ -572,7 +576,9 @@ test_dma_completed_status(void)
        RTE_TEST_ASSERT_SUCCESS(ret, "Failed to start, %d", ret);
 
        /* Check for enqueue with submit */
-       ret = rte_dma_copy(test_dev_id, 0, (rte_iova_t)src, (rte_iova_t)dst,
+       ret = rte_dma_copy(test_dev_id, 0,
+                          rte_malloc_virt2iova(src),
+                          rte_malloc_virt2iova(dst),
                           TEST_MEMCPY_SIZE, RTE_DMA_OP_FLAG_SUBMIT);
        RTE_TEST_ASSERT_EQUAL(ret, 0, "Failed to enqueue copy, %d", ret);
        rte_delay_us_sleep(TEST_WAIT_US_VAL);
@@ -591,7 +597,9 @@ test_dma_completed_status(void)
        RTE_TEST_ASSERT_EQUAL(cpl_ret, 0, "Failed to completed status");
 
        /* Check for enqueue with submit again */
-       ret = rte_dma_copy(test_dev_id, 0, (rte_iova_t)src, (rte_iova_t)dst,
+       ret = rte_dma_copy(test_dev_id, 0,
+                          rte_malloc_virt2iova(src),
+                          rte_malloc_virt2iova(dst),
                           TEST_MEMCPY_SIZE, RTE_DMA_OP_FLAG_SUBMIT);
        RTE_TEST_ASSERT_EQUAL(ret, 1, "Failed to enqueue copy, %d", ret);
        rte_delay_us_sleep(TEST_WAIT_US_VAL);
-- 
2.43.0

Reply via email to