Lines Matching refs:sched

8 static void xe_sched_process_msg_queue(struct xe_gpu_scheduler *sched)  in xe_sched_process_msg_queue()  argument
10 if (!READ_ONCE(sched->base.pause_submit)) in xe_sched_process_msg_queue()
11 queue_work(sched->base.submit_wq, &sched->work_process_msg); in xe_sched_process_msg_queue()
14 static void xe_sched_process_msg_queue_if_ready(struct xe_gpu_scheduler *sched) in xe_sched_process_msg_queue_if_ready() argument
18 xe_sched_msg_lock(sched); in xe_sched_process_msg_queue_if_ready()
19 msg = list_first_entry_or_null(&sched->msgs, struct xe_sched_msg, link); in xe_sched_process_msg_queue_if_ready()
21 xe_sched_process_msg_queue(sched); in xe_sched_process_msg_queue_if_ready()
22 xe_sched_msg_unlock(sched); in xe_sched_process_msg_queue_if_ready()
26 xe_sched_get_msg(struct xe_gpu_scheduler *sched) in xe_sched_get_msg() argument
30 xe_sched_msg_lock(sched); in xe_sched_get_msg()
31 msg = list_first_entry_or_null(&sched->msgs, in xe_sched_get_msg()
35 xe_sched_msg_unlock(sched); in xe_sched_get_msg()
42 struct xe_gpu_scheduler *sched = in xe_sched_process_msg_work() local
46 if (READ_ONCE(sched->base.pause_submit)) in xe_sched_process_msg_work()
49 msg = xe_sched_get_msg(sched); in xe_sched_process_msg_work()
51 sched->ops->process_msg(msg); in xe_sched_process_msg_work()
53 xe_sched_process_msg_queue_if_ready(sched); in xe_sched_process_msg_work()
57 int xe_sched_init(struct xe_gpu_scheduler *sched, in xe_sched_init() argument
66 sched->ops = xe_ops; in xe_sched_init()
67 INIT_LIST_HEAD(&sched->msgs); in xe_sched_init()
68 INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work); in xe_sched_init()
70 return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission, in xe_sched_init()
75 void xe_sched_fini(struct xe_gpu_scheduler *sched) in xe_sched_fini() argument
77 xe_sched_submission_stop(sched); in xe_sched_fini()
78 drm_sched_fini(&sched->base); in xe_sched_fini()
81 void xe_sched_submission_start(struct xe_gpu_scheduler *sched) in xe_sched_submission_start() argument
83 drm_sched_wqueue_start(&sched->base); in xe_sched_submission_start()
84 queue_work(sched->base.submit_wq, &sched->work_process_msg); in xe_sched_submission_start()
87 void xe_sched_submission_stop(struct xe_gpu_scheduler *sched) in xe_sched_submission_stop() argument
89 drm_sched_wqueue_stop(&sched->base); in xe_sched_submission_stop()
90 cancel_work_sync(&sched->work_process_msg); in xe_sched_submission_stop()
93 void xe_sched_submission_resume_tdr(struct xe_gpu_scheduler *sched) in xe_sched_submission_resume_tdr() argument
95 drm_sched_resume_timeout(&sched->base, sched->base.timeout); in xe_sched_submission_resume_tdr()
98 void xe_sched_add_msg(struct xe_gpu_scheduler *sched, in xe_sched_add_msg() argument
101 xe_sched_msg_lock(sched); in xe_sched_add_msg()
102 xe_sched_add_msg_locked(sched, msg); in xe_sched_add_msg()
103 xe_sched_msg_unlock(sched); in xe_sched_add_msg()
106 void xe_sched_add_msg_locked(struct xe_gpu_scheduler *sched, in xe_sched_add_msg_locked() argument
109 lockdep_assert_held(&sched->base.job_list_lock); in xe_sched_add_msg_locked()
111 list_add_tail(&msg->link, &sched->msgs); in xe_sched_add_msg_locked()
112 xe_sched_process_msg_queue(sched); in xe_sched_add_msg_locked()