diff options
author | Christian König <christian.koenig@amd.com> | 2018-07-30 16:16:01 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-07-31 16:58:19 -0500 |
commit | 920990cb080a44203bf6c8eb706e79ad23241ad3 (patch) | |
tree | c561ae3c784ad5930fd2db05389b2516b89693e4 /drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h | |
parent | 39f7f69a6054bb9777b47b6afdb5ce2fae30dbee (diff) | |
download | linux-920990cb080a44203bf6c8eb706e79ad23241ad3.tar.gz linux-920990cb080a44203bf6c8eb706e79ad23241ad3.tar.bz2 linux-920990cb080a44203bf6c8eb706e79ad23241ad3.zip |
drm/amdgpu: allocate the bo_list array after the list
This avoids multiple allocations for the head and the array.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h index 3d77abfcd4a6..61b089768e1c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h @@ -48,7 +48,6 @@ struct amdgpu_bo_list { struct amdgpu_bo *oa_obj; unsigned first_userptr; unsigned num_entries; - struct amdgpu_bo_list_entry *array; }; int amdgpu_bo_list_get(struct amdgpu_fpriv *fpriv, int id, @@ -65,14 +64,22 @@ int amdgpu_bo_list_create(struct amdgpu_device *adev, unsigned num_entries, struct amdgpu_bo_list **list); +static inline struct amdgpu_bo_list_entry * +amdgpu_bo_list_array_entry(struct amdgpu_bo_list *list, unsigned index) +{ + struct amdgpu_bo_list_entry *array = (void *)&list[1]; + + return &array[index]; +} + #define amdgpu_bo_list_for_each_entry(e, list) \ - for (e = &(list)->array[0]; \ - e != &(list)->array[(list)->num_entries]; \ + for (e = amdgpu_bo_list_array_entry(list, 0); \ + e != amdgpu_bo_list_array_entry(list, (list)->num_entries); \ ++e) #define amdgpu_bo_list_for_each_userptr_entry(e, list) \ - for (e = &(list)->array[(list)->first_userptr]; \ - e != &(list)->array[(list)->num_entries]; \ + for (e = amdgpu_bo_list_array_entry(list, (list)->first_userptr); \ + e != amdgpu_bo_list_array_entry(list, (list)->num_entries); \ ++e) #endif |