aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-08-21 09:09:39 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-08-22 17:05:00 -0400
commitd98ff24e8e9be3329eea7c84d5e244d0c1cd0ab3 (patch)
tree87957f268bbf5552b2fccaed304884aee7389de2 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
parent8604ffcbf04f8f4f3f55a9e46e5ff948b2ed4290 (diff)
drm/amdgpu: fix preamble handling
At this point the command submission can still be interrupted. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Alex Deucher <alexander.deucher@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.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 502b94fb116a..09703c87d676 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -1012,13 +1012,9 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
1012 if (r) 1012 if (r)
1013 return r; 1013 return r;
1014 1014
1015 if (chunk_ib->flags & AMDGPU_IB_FLAG_PREAMBLE) { 1015 if (chunk_ib->flags & AMDGPU_IB_FLAG_PREAMBLE)
1016 parser->job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT; 1016 parser->job->preamble_status |=
1017 if (!parser->ctx->preamble_presented) { 1017 AMDGPU_PREAMBLE_IB_PRESENT;
1018 parser->job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT_FIRST;
1019 parser->ctx->preamble_presented = true;
1020 }
1021 }
1022 1018
1023 if (parser->ring && parser->ring != ring) 1019 if (parser->ring && parser->ring != ring)
1024 return -EINVAL; 1020 return -EINVAL;
@@ -1241,6 +1237,12 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
1241 1237
1242 amdgpu_cs_post_dependencies(p); 1238 amdgpu_cs_post_dependencies(p);
1243 1239
1240 if ((job->preamble_status & AMDGPU_PREAMBLE_IB_PRESENT) &&
1241 !p->ctx->preamble_presented) {
1242 job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT_FIRST;
1243 p->ctx->preamble_presented = true;
1244 }
1245
1244 cs->out.handle = seq; 1246 cs->out.handle = seq;
1245 job->uf_sequence = seq; 1247 job->uf_sequence = seq;
1246 1248