summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
diff options
context:
space:
mode:
authorMonk Liu <Monk.Liu@amd.com>2016-03-03 19:00:50 +0800
committerAlex Deucher <alexander.deucher@amd.com>2016-05-02 15:17:41 -0400
commite472d2588eef38c2f16f71d6160e58fb5948e84f (patch)
treea2459eecb00bb9772dca675e87127706f97a3058 /drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
parent01c02a8b193d63d77e0b45886efa71c9983af446 (diff)
downloadlinux-e472d2588eef38c2f16f71d6160e58fb5948e84f.tar.gz
linux-e472d2588eef38c2f16f71d6160e58fb5948e84f.tar.bz2
linux-e472d2588eef38c2f16f71d6160e58fb5948e84f.zip
drm/amdgpu: delay job free to when it's finished (v2)
for those jobs submitted through scheduler, do not free it immediately after scheduled, instead free it in global workqueue by its sched fence signaling callback function. v2: call uf's bo_undef after job_run() call job's sync free after job_run() no static inline __amdgpu_job_free() anymore, just use kfree(job) to replace it. Signed-off-by: Monk Liu <Monk.Liu@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/scheduler/gpu_scheduler.h')
-rw-r--r--drivers/gpu/drm/amd/scheduler/gpu_scheduler.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
index 74bbec837f58..ee1e8127f863 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
@@ -37,7 +37,7 @@ extern atomic_t sched_fence_slab_ref;
/**
* A scheduler entity is a wrapper around a job queue or a group
- * of other entities. Entities take turns emitting jobs from their
+ * of other entities. Entities take turns emitting jobs from their
* job queues to corresponding hardware ring based on scheduling
* policy.
*/
@@ -82,6 +82,9 @@ struct amd_sched_job {
struct amd_gpu_scheduler *sched;
struct amd_sched_entity *s_entity;
struct amd_sched_fence *s_fence;
+ bool use_sched; /* true if the job goes to scheduler */
+ struct fence_cb cb_free_job;
+ struct work_struct work_free_job;
};
extern const struct fence_ops amd_sched_fence_ops;