Lines Matching defs:scheduler
1 /* $NetBSD: scheduler.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $ */
39 __KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $");
238 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
244 spin_lock_irqsave(&scheduler->mmio_context_lock, flags);
246 scheduler->engine_owner[ring_id]) {
248 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id],
250 scheduler->engine_owner[ring_id] = NULL;
252 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags);
257 workload = scheduler->current_workload[ring_id];
263 spin_lock_irqsave(&scheduler->mmio_context_lock, flags);
264 if (workload->vgpu != scheduler->engine_owner[ring_id]) {
266 intel_gvt_switch_mmio(scheduler->engine_owner[ring_id],
268 scheduler->engine_owner[ring_id] = workload->vgpu;
272 spin_unlock_irqrestore(&scheduler->mmio_context_lock, flags);
324 * scheduler might get a wrong state of it during reset. Since the
733 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
742 if (!scheduler->current_vgpu) {
747 if (scheduler->need_reschedule) {
752 if (!scheduler->current_vgpu->active ||
753 list_empty(workload_q_head(scheduler->current_vgpu, ring_id)))
760 if (scheduler->current_workload[ring_id]) {
761 workload = scheduler->current_workload[ring_id];
773 scheduler->current_workload[ring_id] = container_of(
774 workload_q_head(scheduler->current_vgpu, ring_id)->next,
777 workload = scheduler->current_workload[ring_id];
895 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
897 scheduler->current_workload[ring_id];
941 scheduler->current_workload[ring_id] = NULL;
965 wake_up(&scheduler->workload_complete_wq);
967 if (gvt->scheduler.need_reschedule)
984 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
997 add_wait_queue(&scheduler->waitq[ring_id], &wait);
1005 remove_wait_queue(&scheduler->waitq[ring_id], &wait);
1063 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
1068 wait_event(scheduler->workload_complete_wq,
1075 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
1079 gvt_dbg_core("clean workload scheduler\n");
1085 kthread_stop(scheduler->thread[i]);
1091 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
1097 gvt_dbg_core("init workload scheduler\n");
1099 init_waitqueue_head(&scheduler->workload_complete_wq);
1102 init_waitqueue_head(&scheduler->waitq[i]);
1113 scheduler->thread[i] = kthread_run(workload_thread, param,
1115 if (IS_ERR(scheduler->thread[i])) {
1117 ret = PTR_ERR(scheduler->thread[i]);
1611 wake_up(&workload->vgpu->gvt->scheduler.waitq[workload->ring_id]);