On 09.10.2017 17:34, Christian König wrote: > From: Christian König <christian.koenig at amd.com> > > And return from the wait functions the fence error code. > > Signed-off-by: Christian König <christian.koenig at amd.com> For the series: Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 7 ++++++- > drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index 359c89c..0185d35 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -1283,6 +1283,8 @@ int amdgpu_cs_wait_ioctl(struct drm_device *dev, void *data, > r = PTR_ERR(fence); > else if (fence) { > r = dma_fence_wait_timeout(fence, true, timeout); > + if (r > 0 && fence->error) > + r = fence->error; > dma_fence_put(fence); > } else > r = 1; > @@ -1420,6 +1422,9 @@ static int amdgpu_cs_wait_all_fences(struct amdgpu_device *adev, > > if (r == 0) > break; > + > + if (fence->error) > + return fence->error; > } > > memset(wait, 0, sizeof(*wait)); > @@ -1480,7 +1485,7 @@ static int amdgpu_cs_wait_any_fence(struct amdgpu_device *adev, > wait->out.status = (r > 0); > wait->out.first_signaled = first; > /* set return value 0 to indicate success */ > - r = 0; > + r = array[first]->error; > > err_free_fence_array: > for (i = 0; i < fence_count; i++) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > index c76d17c..7067edf 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > @@ -194,6 +194,7 @@ static struct dma_fence *amdgpu_job_run(struct amd_sched_job *sched_job) > trace_amdgpu_sched_run_job(job); > /* skip ib schedule when vram is lost */ > if (job->vram_lost_counter != atomic_read(&adev->vram_lost_counter)) { > + dma_fence_set_error(&job->base.s_fence->finished, -ECANCELED); > DRM_ERROR("Skip scheduling IBs!\n"); > } else { > r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs, job, > -- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte.