diff options
author | Christian König <christian.koenig@amd.com> | 2015-06-24 14:13:00 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-08-05 13:47:51 -0400 |
commit | 69827cd1f631a03ac61070950892aa77917925c3 (patch) | |
tree | 4e57ec3d126c81bb782c66950fa37be2eb7e78e1 /amdgpu | |
parent | bef8b6097c6ea0410edae10eb07921b9edf24097 (diff) |
amdgpu: remove pointer arithmetic from command submission
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Diffstat (limited to 'amdgpu')
-rw-r--r-- | amdgpu/amdgpu_cs.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index bf79df35..184f2092 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c @@ -182,12 +182,12 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context, struct amdgpu_cs_request *ibs_request, uint64_t *fence) { - int r = 0; - uint32_t i, size; union drm_amdgpu_cs cs; uint64_t *chunk_array; struct drm_amdgpu_cs_chunk *chunks; struct drm_amdgpu_cs_chunk_data *chunk_data; + uint32_t i, size; + int r = 0; if (ibs_request->ip_type >= AMDGPU_HW_IP_NUM) return -EINVAL; @@ -196,17 +196,11 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context, if (ibs_request->number_of_ibs > AMDGPU_CS_MAX_IBS_PER_SUBMIT) return -EINVAL; - size = (ibs_request->number_of_ibs + 1) * ( - sizeof(uint64_t) + - sizeof(struct drm_amdgpu_cs_chunk) + - sizeof(struct drm_amdgpu_cs_chunk_data)); - - chunk_array = alloca(size); - if (!chunk_array) - return -ENOMEM; + size = ibs_request->number_of_ibs + 1; - chunks = (struct drm_amdgpu_cs_chunk *)(chunk_array + ibs_request->number_of_ibs + 1); - chunk_data = (struct drm_amdgpu_cs_chunk_data *)(chunks + ibs_request->number_of_ibs + 1); + chunk_array = alloca(sizeof(uint64_t) * size); + chunks = alloca(sizeof(struct drm_amdgpu_cs_chunk) * size); + chunk_data = alloca(sizeof(struct drm_amdgpu_cs_chunk_data) * size); memset(&cs, 0, sizeof(cs)); cs.in.chunks = (uint64_t)(uintptr_t)chunk_array; |