Lines Matching full:scheduler
290 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in shadow_context_status_change() local
296 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
298 scheduler->engine_owner[ring_id]) { in shadow_context_status_change()
300 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id], in shadow_context_status_change()
302 scheduler->engine_owner[ring_id] = NULL; in shadow_context_status_change()
304 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
309 workload = scheduler->current_workload[ring_id]; in shadow_context_status_change()
315 spin_lock_irqsave(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
316 if (workload->vgpu != scheduler->engine_owner[ring_id]) { in shadow_context_status_change()
318 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id], in shadow_context_status_change()
320 scheduler->engine_owner[ring_id] = workload->vgpu; in shadow_context_status_change()
324 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags); in shadow_context_status_change()
376 * scheduler might get a wrong state of it during reset. Since the in copy_workload_to_ring_buffer()
848 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in pick_next_workload() local
857 if (!scheduler->current_vgpu) { in pick_next_workload()
862 if (scheduler->need_reschedule) { in pick_next_workload()
867 if (!scheduler->current_vgpu->active || in pick_next_workload()
868 list_empty(workload_q_head(scheduler->current_vgpu, engine))) in pick_next_workload()
875 if (scheduler->current_workload[engine->id]) { in pick_next_workload()
876 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
888 scheduler->current_workload[engine->id] = in pick_next_workload()
889 list_first_entry(workload_q_head(scheduler->current_vgpu, in pick_next_workload()
893 workload = scheduler->current_workload[engine->id]; in pick_next_workload()
1066 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in complete_current_workload() local
1068 scheduler->current_workload[ring_id]; in complete_current_workload()
1112 scheduler->current_workload[ring_id] = NULL; in complete_current_workload()
1139 wake_up(&scheduler->workload_complete_wq); in complete_current_workload()
1141 if (gvt->scheduler.need_reschedule) in complete_current_workload()
1153 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in workload_thread() local
1164 add_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1172 remove_wait_queue(&scheduler->waitq[engine->id], &wait); in workload_thread()
1230 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_wait_vgpu_idle() local
1235 wait_event(scheduler->workload_complete_wq, in intel_gvt_wait_vgpu_idle()
1242 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_clean_workload_scheduler() local
1246 gvt_dbg_core("clean workload scheduler\n"); in intel_gvt_clean_workload_scheduler()
1252 kthread_stop(scheduler->thread[i]); in intel_gvt_clean_workload_scheduler()
1258 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; in intel_gvt_init_workload_scheduler() local
1263 gvt_dbg_core("init workload scheduler\n"); in intel_gvt_init_workload_scheduler()
1265 init_waitqueue_head(&scheduler->workload_complete_wq); in intel_gvt_init_workload_scheduler()
1268 init_waitqueue_head(&scheduler->waitq[i]); in intel_gvt_init_workload_scheduler()
1270 scheduler->thread[i] = kthread_run(workload_thread, engine, in intel_gvt_init_workload_scheduler()
1272 if (IS_ERR(scheduler->thread[i])) { in intel_gvt_init_workload_scheduler()
1274 ret = PTR_ERR(scheduler->thread[i]); in intel_gvt_init_workload_scheduler()
1783 wake_up(&workload->vgpu->gvt->scheduler.waitq[workload->engine->id]); in intel_vgpu_queue_workload()