[v2,2/2] gpudev: use page_size in comm_list creation

Message ID 20220308235948.16645-2-eagostini@nvidia.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v2,1/2] gpudev: add GPU page_size to info |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues
ci/iol-mellanox-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-abi-testing success Testing PASS

Commit Message

Elena Agostini March 8, 2022, 11:59 p.m. UTC
  From: Elena Agostini <eagostini@nvidia.com>

Memory allocated for CPU mapping the status flag
in the communication list should be aligned to the
GPU page size.

Fixes: 9b8cae4d991e ("gpudev: use CPU mapping in communication list")
Signed-off-by: Elena Agostini <eagostini@nvidia.com>
---
 lib/gpudev/gpudev.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
  

Comments

Thomas Monjalon March 8, 2022, 10:32 p.m. UTC | #1
09/03/2022 00:59, eagostini@nvidia.com:
> From: Elena Agostini <eagostini@nvidia.com>
> 
> Memory allocated for CPU mapping the status flag
> in the communication list should be aligned to the
> GPU page size.
> 
> Fixes: 9b8cae4d991e ("gpudev: use CPU mapping in communication list")
> Signed-off-by: Elena Agostini <eagostini@nvidia.com>

Patches squashed and applied, thanks.
  

Patch

diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
index fb1bee344c..56033f4a5f 100644
--- a/lib/gpudev/gpudev.c
+++ b/lib/gpudev/gpudev.c
@@ -820,6 +820,7 @@  rte_gpu_comm_create_list(uint16_t dev_id,
 	uint32_t idx_l;
 	int ret;
 	struct rte_gpu *dev;
+	struct rte_gpu_info info;
 
 	if (num_comm_items == 0) {
 		rte_errno = EINVAL;
@@ -833,6 +834,12 @@  rte_gpu_comm_create_list(uint16_t dev_id,
 		return NULL;
 	}
 
+	ret = rte_gpu_info_get(dev_id, &info);
+	if (ret < 0) {
+		rte_errno = ENODEV;
+		return NULL;
+	}
+
 	comm_list = rte_zmalloc(NULL,
 			sizeof(struct rte_gpu_comm_list) * num_comm_items, 0);
 	if (comm_list == NULL) {
@@ -855,7 +862,7 @@  rte_gpu_comm_create_list(uint16_t dev_id,
 	 */
 	comm_list[0].status_d = rte_gpu_mem_alloc(dev_id,
 			sizeof(enum rte_gpu_comm_list_status) * num_comm_items,
-			rte_mem_page_size());
+			info.page_size);
 	if (ret < 0) {
 		rte_errno = ENOMEM;
 		return NULL;