diff options
| author | Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> | 2018-02-28 11:50:10 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-11-20 14:00:58 -0500 | 
| commit | 3d97da4463d87148269a087c26422a2a5304d5d3 (patch) | |
| tree | 7a93f82ea465530bd79a94abc9e111169cd5d66a /drivers/gpu | |
| parent | 9130cc01d1fda46009529d04303c6ed958d9e3d1 (diff) | |
drm/amdgpu: KFD Restore process: Optimize waiting
Instead of waiting for each KFD BO after validation just wait for the
last BO moving fence.
Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index e124d2d88257..d00537148b4e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -2084,7 +2084,12 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)  			pr_debug("Memory eviction: Validate BOs failed. Try again\n");  			goto validate_map_fail;  		} - +		ret = amdgpu_sync_fence(amdgpu_ttm_adev(bo->tbo.bdev), +					&sync_obj, bo->tbo.moving, false); +		if (ret) { +			pr_debug("Memory eviction: Sync BO fence failed. Try again\n"); +			goto validate_map_fail; +		}  		list_for_each_entry(bo_va_entry, &mem->bo_va_list,  				    bo_list) {  			ret = update_gpuvm_pte((struct amdgpu_device *) @@ -2105,6 +2110,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)  		goto validate_map_fail;  	} +	/* Wait for validate and PT updates to finish */  	amdgpu_sync_wait(&sync_obj, false);  	/* Release old eviction fence and create new one, because fence only @@ -2123,10 +2129,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)  	process_info->eviction_fence = new_fence;  	*ef = dma_fence_get(&new_fence->base); -	/* Wait for validate to finish and attach new eviction fence */ -	list_for_each_entry(mem, &process_info->kfd_bo_list, -		validate_list.head) -		ttm_bo_wait(&mem->bo->tbo, false, false); +	/* Attach new eviction fence to all BOs */  	list_for_each_entry(mem, &process_info->kfd_bo_list,  		validate_list.head)  		amdgpu_bo_fence(mem->bo, | 
