diff options
author | Ingo Molnar <mingo@kernel.org> | 2019-09-03 03:23:41 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2019-09-03 03:23:41 -0400 |
commit | ae1ad26388228048db6a5f1056bd569ed2bbc4ec (patch) | |
tree | 223f50677aa00eb6f2a6529099a1005c7e43c071 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
parent | c84b82dd3e593db217f23c60f7edae02c76a3c4c (diff) | |
parent | 089cf7f6ecb266b6a4164919a2e69bd2f938374a (diff) |
Merge tag 'v5.3-rc7' into x86/mm, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index e069de8b54e6..8b26c970a3cb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -1044,29 +1044,27 @@ static int amdgpu_cs_process_fence_dep(struct amdgpu_cs_parser *p, | |||
1044 | return r; | 1044 | return r; |
1045 | } | 1045 | } |
1046 | 1046 | ||
1047 | fence = amdgpu_ctx_get_fence(ctx, entity, | 1047 | fence = amdgpu_ctx_get_fence(ctx, entity, deps[i].handle); |
1048 | deps[i].handle); | 1048 | amdgpu_ctx_put(ctx); |
1049 | |||
1050 | if (IS_ERR(fence)) | ||
1051 | return PTR_ERR(fence); | ||
1052 | else if (!fence) | ||
1053 | continue; | ||
1049 | 1054 | ||
1050 | if (chunk->chunk_id == AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES) { | 1055 | if (chunk->chunk_id == AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES) { |
1051 | struct drm_sched_fence *s_fence = to_drm_sched_fence(fence); | 1056 | struct drm_sched_fence *s_fence; |
1052 | struct dma_fence *old = fence; | 1057 | struct dma_fence *old = fence; |
1053 | 1058 | ||
1059 | s_fence = to_drm_sched_fence(fence); | ||
1054 | fence = dma_fence_get(&s_fence->scheduled); | 1060 | fence = dma_fence_get(&s_fence->scheduled); |
1055 | dma_fence_put(old); | 1061 | dma_fence_put(old); |
1056 | } | 1062 | } |
1057 | 1063 | ||
1058 | if (IS_ERR(fence)) { | 1064 | r = amdgpu_sync_fence(p->adev, &p->job->sync, fence, true); |
1059 | r = PTR_ERR(fence); | 1065 | dma_fence_put(fence); |
1060 | amdgpu_ctx_put(ctx); | 1066 | if (r) |
1061 | return r; | 1067 | return r; |
1062 | } else if (fence) { | ||
1063 | r = amdgpu_sync_fence(p->adev, &p->job->sync, fence, | ||
1064 | true); | ||
1065 | dma_fence_put(fence); | ||
1066 | amdgpu_ctx_put(ctx); | ||
1067 | if (r) | ||
1068 | return r; | ||
1069 | } | ||
1070 | } | 1068 | } |
1071 | return 0; | 1069 | return 0; |
1072 | } | 1070 | } |
@@ -1145,6 +1143,9 @@ static int amdgpu_cs_process_syncobj_out_dep(struct amdgpu_cs_parser *p, | |||
1145 | num_deps = chunk->length_dw * 4 / | 1143 | num_deps = chunk->length_dw * 4 / |
1146 | sizeof(struct drm_amdgpu_cs_chunk_sem); | 1144 | sizeof(struct drm_amdgpu_cs_chunk_sem); |
1147 | 1145 | ||
1146 | if (p->post_deps) | ||
1147 | return -EINVAL; | ||
1148 | |||
1148 | p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), | 1149 | p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), |
1149 | GFP_KERNEL); | 1150 | GFP_KERNEL); |
1150 | p->num_post_deps = 0; | 1151 | p->num_post_deps = 0; |
@@ -1168,8 +1169,7 @@ static int amdgpu_cs_process_syncobj_out_dep(struct amdgpu_cs_parser *p, | |||
1168 | 1169 | ||
1169 | 1170 | ||
1170 | static int amdgpu_cs_process_syncobj_timeline_out_dep(struct amdgpu_cs_parser *p, | 1171 | static int amdgpu_cs_process_syncobj_timeline_out_dep(struct amdgpu_cs_parser *p, |
1171 | struct amdgpu_cs_chunk | 1172 | struct amdgpu_cs_chunk *chunk) |
1172 | *chunk) | ||
1173 | { | 1173 | { |
1174 | struct drm_amdgpu_cs_chunk_syncobj *syncobj_deps; | 1174 | struct drm_amdgpu_cs_chunk_syncobj *syncobj_deps; |
1175 | unsigned num_deps; | 1175 | unsigned num_deps; |
@@ -1179,6 +1179,9 @@ static int amdgpu_cs_process_syncobj_timeline_out_dep(struct amdgpu_cs_parser *p | |||
1179 | num_deps = chunk->length_dw * 4 / | 1179 | num_deps = chunk->length_dw * 4 / |
1180 | sizeof(struct drm_amdgpu_cs_chunk_syncobj); | 1180 | sizeof(struct drm_amdgpu_cs_chunk_syncobj); |
1181 | 1181 | ||
1182 | if (p->post_deps) | ||
1183 | return -EINVAL; | ||
1184 | |||
1182 | p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), | 1185 | p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), |
1183 | GFP_KERNEL); | 1186 | GFP_KERNEL); |
1184 | p->num_post_deps = 0; | 1187 | p->num_post_deps = 0; |