[PATCH] app/test: fix DMA API tests in IOVA as PA mode
Bruce Richardson
bruce.richardson at intel.com
Thu Feb 27 14:27:49 CET 2025
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: fengchengwen at huawei.com
Cc: stable at dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson at 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
More information about the stable
mailing list