Lines Matching full:scheduler

274 	struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;  in shadow_context_status_change()  local
280 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
282 scheduler->engine_owner[ring_id]) { in shadow_context_status_change()
284 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id], in shadow_context_status_change()
286 scheduler->engine_owner[ring_id] = NULL; in shadow_context_status_change()
288 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
293 workload = scheduler->current_workload[ring_id]; in shadow_context_status_change()
299 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
300 if (workload->vgpu != 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] = workload->vgpu; in shadow_context_status_change()
308 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
360 * scheduler might get a wrong state of it during reset. Since the in copy_workload_to_ring_buffer()
801 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in pick_next_workload() local
810 if (!scheduler->current_vgpu) { in pick_next_workload()
815 if (scheduler->need_reschedule) { in pick_next_workload()
820 if (!scheduler->current_vgpu->active || in pick_next_workload()
821 list_empty(workload_q_head(scheduler->current_vgpu, engine))) in pick_next_workload()
828 if (scheduler->current_workload[engine->id]) { in pick_next_workload()
829 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
841 scheduler->current_workload[engine->id] = in pick_next_workload()
842 list_first_entry(workload_q_head(scheduler->current_vgpu, in pick_next_workload()
846 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
1020 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in complete_current_workload() local
1022 scheduler->current_workload[ring_id]; in complete_current_workload()
1066 scheduler->current_workload[ring_id] = NULL; in complete_current_workload()
1093 wake_up(&scheduler->workload_complete_wq); in complete_current_workload()
1095 if (gvt->scheduler.need_reschedule) in complete_current_workload()
1107 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in workload_thread() local
1118 add_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1126 remove_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1184 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_wait_vgpu_idle() local
1189 wait_event(scheduler->workload_complete_wq, in intel_gvt_wait_vgpu_idle()
1196 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_clean_workload_scheduler() local
1200 gvt_dbg_core("clean workload scheduler\n"); in intel_gvt_clean_workload_scheduler()
1206 kthread_stop(scheduler->thread[i]); in intel_gvt_clean_workload_scheduler()
1212 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_init_workload_scheduler() local
1217 gvt_dbg_core("init workload scheduler\n"); in intel_gvt_init_workload_scheduler()
1219 init_waitqueue_head(&scheduler->workload_complete_wq); in intel_gvt_init_workload_scheduler()
1222 init_waitqueue_head(&scheduler->waitq[i]); in intel_gvt_init_workload_scheduler()
1224 scheduler->thread[i] = kthread_run(workload_thread, engine, in intel_gvt_init_workload_scheduler()
1226 if (IS_ERR(scheduler->thread[i])) { in intel_gvt_init_workload_scheduler()
1228 ret = PTR_ERR(scheduler->thread[i]); in intel_gvt_init_workload_scheduler()
1740 wake_up(&workload->vgpu->gvt->scheduler.waitq[workload->engine->id]); in intel_vgpu_queue_workload()