aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-09-19 10:54:35 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-12-07 17:53:44 -0500
commit049aca4363d8af87cab8d53de5401602db3b9999 (patch)
tree88e02e82b948aab02980deecaaf4f139142e58da /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
parenta9f34c70fd168b164aadffd46bb757ded52e25b9 (diff)
drm/amdgpu: fix using shared fence for exported BOs v2
It is perfectly possible that the BO list is created before the BO is exported. While at it clean up setting shared to one instead of true. v2: add comment and simplify logic Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com> Acked-by: Junwei Zhang <Jerry.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index a4b2ac541475..ce58af62d523 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -598,6 +598,9 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
598 return r; 598 return r;
599 } 599 }
600 600
601 amdgpu_bo_list_for_each_entry(e, p->bo_list)
602 e->tv.num_shared = 1;
603
601 amdgpu_bo_list_get_list(p->bo_list, &p->validated); 604 amdgpu_bo_list_get_list(p->bo_list, &p->validated);
602 if (p->bo_list->first_userptr != p->bo_list->num_entries) 605 if (p->bo_list->first_userptr != p->bo_list->num_entries)
603 p->mn = amdgpu_mn_get(p->adev, AMDGPU_MN_TYPE_GFX); 606 p->mn = amdgpu_mn_get(p->adev, AMDGPU_MN_TYPE_GFX);
@@ -717,8 +720,14 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
717 gws = p->bo_list->gws_obj; 720 gws = p->bo_list->gws_obj;
718 oa = p->bo_list->oa_obj; 721 oa = p->bo_list->oa_obj;
719 722
720 amdgpu_bo_list_for_each_entry(e, p->bo_list) 723 amdgpu_bo_list_for_each_entry(e, p->bo_list) {
721 e->bo_va = amdgpu_vm_bo_find(vm, ttm_to_amdgpu_bo(e->tv.bo)); 724 struct amdgpu_bo *bo = ttm_to_amdgpu_bo(e->tv.bo);
725
726 /* Make sure we use the exclusive slot for shared BOs */
727 if (bo->prime_shared_count)
728 e->tv.num_shared = 0;
729 e->bo_va = amdgpu_vm_bo_find(vm, bo);
730 }
722 731
723 if (gds) { 732 if (gds) {
724 p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT; 733 p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT;