drm/amdgpu: add scheduler dependency callback v2

This way the scheduler doesn't wait in it's work thread any more.

v2: fix race conditions

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
index e797796..2af0e4d 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
@@ -45,6 +45,8 @@
 	spinlock_t			queue_lock;
 	struct amd_gpu_scheduler	*scheduler;
 	uint64_t                        fence_context;
+	struct fence			*dependency;
+	struct fence_cb			cb;
 };
 
 /**
@@ -89,6 +91,7 @@
  * these functions should be implemented in driver side
 */
 struct amd_sched_backend_ops {
+	struct fence *(*dependency)(struct amd_sched_job *job);
 	struct fence *(*run_job)(struct amd_sched_job *job);
 	void (*process_job)(struct amd_sched_job *job);
 };