From 135be65ecac44fa50a8abe48e4c2ca9a93e03e0d Mon Sep 17 00:00:00 2001 From: Harish Kasiviswanathan Date: Fri, 10 Mar 2017 15:19:25 -0500 Subject: [PATCH 1616/4131] drm/amdgpu: Change kfd_bo_list entry Use smaller ttm_validate_buffer struct instead of amdgpu_bo_list_entry Change-Id: Iea54b9f85fdd811ffe9e90d4316cb55f80659789 Signed-off-by: Harish Kasiviswanathan --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 31 ++++++++++++------------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index 0dff746..1fdade9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -48,7 +48,8 @@ struct kgd_mem { struct mutex lock; struct amdgpu_bo *bo; struct list_head bo_va_list; - struct amdgpu_bo_list_entry bo_list_entry; + /* protected by amdkfd_process_info.lock */ + struct ttm_validate_buffer validate_list; uint32_t domain; unsigned int mapped_to_gpu_memory; void *kptr; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 6283c21..5b17443 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -481,15 +481,14 @@ static int validate_pt_pd_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm) static void add_kgd_mem_to_kfd_bo_list(struct kgd_mem *mem, struct amdkfd_process_info *process_info) { - struct amdgpu_bo_list_entry *entry = &mem->bo_list_entry; + struct ttm_validate_buffer *entry = &mem->validate_list; struct amdgpu_bo *bo = mem->bo; - entry->robj = bo; - INIT_LIST_HEAD(&entry->tv.head); - entry->tv.shared = true; - entry->tv.bo = &bo->tbo; + INIT_LIST_HEAD(&entry->head); + entry->shared = true; + entry->bo = &bo->tbo; mutex_lock(&process_info->lock); - list_add_tail(&entry->tv.head, &process_info->kfd_bo_list); + list_add_tail(&entry->head, &process_info->kfd_bo_list); mutex_unlock(&process_info->lock); } @@ -1131,7 +1130,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( struct kfd_bo_va_list *entry, *tmp; struct bo_vm_reservation_context ctx; int ret; - struct amdgpu_bo_list_entry *bo_list_entry; + struct ttm_validate_buffer *bo_list_entry; struct amdkfd_process_info *process_info; unsigned long bo_size; @@ -1191,9 +1190,9 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( } /* Free the BO*/ - bo_list_entry = &mem->bo_list_entry; + bo_list_entry = &mem->validate_list; mutex_lock(&process_info->lock); - list_del(&bo_list_entry->tv.head); + list_del(&bo_list_entry->head); mutex_unlock(&process_info->lock); amdgpu_bo_unref(&mem->bo); @@ -2224,7 +2223,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info) /* Validate BOs and map them to GPUVM (update VM page tables). */ list_for_each_entry(mem, &process_info->kfd_bo_list, - bo_list_entry.tv.head) { + validate_list.head) { struct amdgpu_bo *bo = mem->bo; uint32_t domain = mem->domain; @@ -2253,7 +2252,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info) /* Wait for validate to finish and attach new eviction fence */ list_for_each_entry(mem, &process_info->kfd_bo_list, - bo_list_entry.tv.head) { + validate_list.head) { struct amdgpu_bo *bo = mem->bo; ttm_bo_wait(&bo->tbo, false, false); @@ -2291,7 +2290,7 @@ int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem, struct amdgpu_ring *ring; struct ww_acquire_ctx ticket; struct list_head list; - struct amdgpu_bo_list_entry *entry; + struct ttm_validate_buffer *entry; uint64_t src_start, dst_start; uint64_t src_left, dst_left, cur_copy_size, total_copy_size = 0; struct fence *fence = NULL; @@ -2314,10 +2313,10 @@ int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem, ring = adev->mman.buffer_funcs_ring; INIT_LIST_HEAD(&list); - entry = &src_mem->bo_list_entry; - list_add_tail(&entry->tv.head, &list); - entry = &dst_mem->bo_list_entry; - list_add_tail(&entry->tv.head, &list); + entry = &src_mem->validate_list; + list_add_tail(&entry->head, &list); + entry = &dst_mem->validate_list; + list_add_tail(&entry->head, &list); if (!ring->ready) { pr_err("Trying to move memory with ring turned off.\n"); -- 2.7.4