mirror of https://gitee.com/openkylin/linux.git
drm/amdgpu: remove amdgpu_sync_wait
Stop hiding bugs, instead print a proper error when the scheduler doesn't handle all dependencies. Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
6fc1367582
commit
a7e7a93e57
|
@ -601,7 +601,6 @@ bool amdgpu_sync_is_idle(struct amdgpu_sync *sync);
|
||||||
int amdgpu_sync_cycle_fences(struct amdgpu_sync *dst, struct amdgpu_sync *src,
|
int amdgpu_sync_cycle_fences(struct amdgpu_sync *dst, struct amdgpu_sync *src,
|
||||||
struct fence *fence);
|
struct fence *fence);
|
||||||
struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync);
|
struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync);
|
||||||
int amdgpu_sync_wait(struct amdgpu_sync *sync);
|
|
||||||
void amdgpu_sync_free(struct amdgpu_sync *sync);
|
void amdgpu_sync_free(struct amdgpu_sync *sync);
|
||||||
int amdgpu_sync_init(void);
|
int amdgpu_sync_init(void);
|
||||||
void amdgpu_sync_fini(void);
|
void amdgpu_sync_fini(void);
|
||||||
|
|
|
@ -166,11 +166,7 @@ static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job)
|
||||||
}
|
}
|
||||||
job = to_amdgpu_job(sched_job);
|
job = to_amdgpu_job(sched_job);
|
||||||
|
|
||||||
r = amdgpu_sync_wait(&job->sync);
|
BUG_ON(!amdgpu_sync_is_idle(&job->sync));
|
||||||
if (r) {
|
|
||||||
DRM_ERROR("failed to sync wait (%d)\n", r);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
trace_amdgpu_sched_run_job(job);
|
trace_amdgpu_sched_run_job(job);
|
||||||
r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs,
|
r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs,
|
||||||
|
|
|
@ -326,25 +326,6 @@ struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int amdgpu_sync_wait(struct amdgpu_sync *sync)
|
|
||||||
{
|
|
||||||
struct amdgpu_sync_entry *e;
|
|
||||||
struct hlist_node *tmp;
|
|
||||||
int i, r;
|
|
||||||
|
|
||||||
hash_for_each_safe(sync->fences, i, tmp, e, node) {
|
|
||||||
r = fence_wait(e->fence, false);
|
|
||||||
if (r)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
hash_del(&e->node);
|
|
||||||
fence_put(e->fence);
|
|
||||||
kmem_cache_free(amdgpu_sync_slab, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* amdgpu_sync_free - free the sync object
|
* amdgpu_sync_free - free the sync object
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue