Lines Matching refs:scheduler
292 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in shadow_context_status_change() local
298 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
300 scheduler->engine_owner[ring_id]) { in shadow_context_status_change()
302 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id], in shadow_context_status_change()
304 scheduler->engine_owner[ring_id] = NULL; in shadow_context_status_change()
306 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
311 workload = scheduler->current_workload[ring_id]; in shadow_context_status_change()
317 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
318 if (workload->vgpu != scheduler->engine_owner[ring_id]) { in shadow_context_status_change()
320 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id], in shadow_context_status_change()
322 scheduler->engine_owner[ring_id] = workload->vgpu; in shadow_context_status_change()
326 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
850 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in pick_next_workload() local
859 if (!scheduler->current_vgpu) { in pick_next_workload()
864 if (scheduler->need_reschedule) { in pick_next_workload()
870 scheduler->current_vgpu->status) || in pick_next_workload()
871 list_empty(workload_q_head(scheduler->current_vgpu, engine))) in pick_next_workload()
878 if (scheduler->current_workload[engine->id]) { in pick_next_workload()
879 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
891 scheduler->current_workload[engine->id] = in pick_next_workload()
892 list_first_entry(workload_q_head(scheduler->current_vgpu, in pick_next_workload()
896 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
1068 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in complete_current_workload() local
1070 scheduler->current_workload[ring_id]; in complete_current_workload()
1114 scheduler->current_workload[ring_id] = NULL; in complete_current_workload()
1141 wake_up(&scheduler->workload_complete_wq); in complete_current_workload()
1143 if (gvt->scheduler.need_reschedule) in complete_current_workload()
1155 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in workload_thread() local
1166 add_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1174 remove_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1232 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_wait_vgpu_idle() local
1237 wait_event(scheduler->workload_complete_wq, in intel_gvt_wait_vgpu_idle()
1244 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_clean_workload_scheduler() local
1254 kthread_stop(scheduler->thread[i]); in intel_gvt_clean_workload_scheduler()
1260 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_init_workload_scheduler() local
1267 init_waitqueue_head(&scheduler->workload_complete_wq); in intel_gvt_init_workload_scheduler()
1270 init_waitqueue_head(&scheduler->waitq[i]); in intel_gvt_init_workload_scheduler()
1272 scheduler->thread[i] = kthread_run(workload_thread, engine, in intel_gvt_init_workload_scheduler()
1274 if (IS_ERR(scheduler->thread[i])) { in intel_gvt_init_workload_scheduler()
1276 ret = PTR_ERR(scheduler->thread[i]); in intel_gvt_init_workload_scheduler()
1785 wake_up(&workload->vgpu->gvt->scheduler.waitq[workload->engine->id]); in intel_vgpu_queue_workload()