aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 9392e50a7ba4..23266b454aec 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -862,27 +862,24 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
862 union drm_amdgpu_cs *cs) 862 union drm_amdgpu_cs *cs)
863{ 863{
864 struct amdgpu_ring *ring = p->job->ring; 864 struct amdgpu_ring *ring = p->job->ring;
865 struct amd_sched_fence *fence; 865 struct fence *fence;
866 struct amdgpu_job *job; 866 struct amdgpu_job *job;
867 int r;
867 868
868 job = p->job; 869 job = p->job;
869 p->job = NULL; 870 p->job = NULL;
870 871
871 job->base.sched = &ring->sched; 872 r = amd_sched_job_init(&job->base, &ring->sched,
872 job->base.s_entity = &p->ctx->rings[ring->idx].entity; 873 &p->ctx->rings[ring->idx].entity,
873 job->owner = p->filp; 874 p->filp, &fence);
874 875 if (r) {
875 fence = amd_sched_fence_create(job->base.s_entity, p->filp);
876 if (!fence) {
877 amdgpu_job_free(job); 876 amdgpu_job_free(job);
878 return -ENOMEM; 877 return r;
879 } 878 }
880 879
881 job->base.s_fence = fence; 880 job->owner = p->filp;
882 p->fence = fence_get(&fence->base); 881 p->fence = fence_get(fence);
883 882 cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, fence);
884 cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring,
885 &fence->base);
886 job->ibs[job->num_ibs - 1].sequence = cs->out.handle; 883 job->ibs[job->num_ibs - 1].sequence = cs->out.handle;
887 884
888 trace_amdgpu_cs_ioctl(job); 885 trace_amdgpu_cs_ioctl(job);