diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/amdgpu/amdgpu_test.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h index f2ece3c3..84ed3cc8 100644 --- a/tests/amdgpu/amdgpu_test.h +++ b/tests/amdgpu/amdgpu_test.h @@ -219,17 +219,34 @@ static inline amdgpu_bo_handle gpu_mem_alloc( r = amdgpu_bo_alloc(device_handle, &req, &buf_handle); CU_ASSERT_EQUAL(r, 0); + if (r) + return NULL; r = amdgpu_va_range_alloc(device_handle, amdgpu_gpu_va_range_general, size, alignment, 0, vmc_addr, va_handle, 0); CU_ASSERT_EQUAL(r, 0); + if (r) + goto error_free_bo; - r = amdgpu_bo_va_op(buf_handle, 0, size, *vmc_addr, 0, AMDGPU_VA_OP_MAP); + r = amdgpu_bo_va_op(buf_handle, 0, size, *vmc_addr, 0, + AMDGPU_VA_OP_MAP); CU_ASSERT_EQUAL(r, 0); + if (r) + goto error_free_va; return buf_handle; + +error_free_va: + r = amdgpu_va_range_free(*va_handle); + CU_ASSERT_EQUAL(r, 0); + +error_free_bo: + r = amdgpu_bo_free(buf_handle); + CU_ASSERT_EQUAL(r, 0); + + return NULL; } static inline int gpu_mem_free(amdgpu_bo_handle bo, @@ -239,16 +256,23 @@ static inline int gpu_mem_free(amdgpu_bo_handle bo, { int r; + if (!bo) + return 0; + r = amdgpu_bo_va_op(bo, 0, size, vmc_addr, 0, AMDGPU_VA_OP_UNMAP); CU_ASSERT_EQUAL(r, 0); + if (r) + return r; r = amdgpu_va_range_free(va_handle); CU_ASSERT_EQUAL(r, 0); + if (r) + return r; r = amdgpu_bo_free(bo); CU_ASSERT_EQUAL(r, 0); - return 0; + return r; } static inline int |