Lines Matching refs:scheduler
359 struct drm_gpu_scheduler scheduler; member
678 if (!queue_work((group)->ptdev->scheduler->wq, &(group)->wname ## _work)) \
835 if (queue->scheduler.ops) in group_free_queue()
836 drm_sched_fini(&queue->scheduler); in group_free_queue()
910 lockdep_assert_held(&ptdev->scheduler->lock); in group_bind_locked()
913 ptdev->scheduler->csg_slots[csg_id].group)) in group_bind_locked()
920 csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in group_bind_locked()
951 lockdep_assert_held(&ptdev->scheduler->lock); in group_unbind_locked()
959 slot = &ptdev->scheduler->csg_slots[group->csg_id]; in group_unbind_locked()
990 struct panthor_queue *queue = ptdev->scheduler->csg_slots[csg_id].group->queues[cs_id]; in cs_slot_prog_locked()
993 lockdep_assert_held(&ptdev->scheduler->lock); in cs_slot_prog_locked()
1015 drm_sched_resume_timeout(&queue->scheduler, queue->remaining_time); in cs_slot_prog_locked()
1035 struct panthor_group *group = ptdev->scheduler->csg_slots[csg_id].group; in cs_slot_reset_locked()
1038 lockdep_assert_held(&ptdev->scheduler->lock); in cs_slot_reset_locked()
1048 queue->remaining_time = drm_sched_suspend_timeout(&queue->scheduler); in cs_slot_reset_locked()
1068 struct panthor_csg_slot *csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_sync_priority_locked()
1071 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_sync_priority_locked()
1088 struct panthor_group *group = ptdev->scheduler->csg_slots[csg_id].group; in cs_slot_sync_queue_state_locked()
1105 &group->ptdev->scheduler->groups.waiting); in cs_slot_sync_queue_state_locked()
1139 struct panthor_csg_slot *csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_sync_queues_state_locked()
1143 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_sync_queues_state_locked()
1157 struct panthor_csg_slot *csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_sync_state_locked()
1163 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_sync_state_locked()
1235 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_prog_locked()
1243 csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_prog_locked()
1287 struct panthor_scheduler *sched = ptdev->scheduler; in cs_slot_process_fatal_event_locked()
1329 struct panthor_scheduler *sched = ptdev->scheduler; in cs_slot_process_fault_event_locked()
1376 struct panthor_scheduler *sched = ptdev->scheduler; in group_process_tiler_oom()
1479 struct panthor_scheduler *sched = ptdev->scheduler; in cs_slot_process_tiler_oom_event_locked()
1504 lockdep_assert_held(&ptdev->scheduler->lock); in cs_slot_process_irq_locked()
1530 struct panthor_csg_slot *csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_sync_idle_state_locked()
1533 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_sync_idle_state_locked()
1541 struct panthor_scheduler *sched = ptdev->scheduler; in csg_slot_process_idle_event_locked()
1557 struct panthor_csg_slot *csg_slot = &ptdev->scheduler->csg_slots[csg_id]; in csg_slot_sync_update_locked()
1560 lockdep_assert_held(&ptdev->scheduler->lock); in csg_slot_sync_update_locked()
1565 sched_queue_work(ptdev->scheduler, sync_upd); in csg_slot_sync_update_locked()
1571 struct panthor_scheduler *sched = ptdev->scheduler; in csg_slot_process_progress_timer_event_locked()
1592 lockdep_assert_held(&ptdev->scheduler->lock); in sched_process_csg_irq_locked()
1594 if (drm_WARN_ON(&ptdev->base, csg_id >= ptdev->scheduler->csg_slot_count)) in sched_process_csg_irq_locked()
1650 lockdep_assert_held(&ptdev->scheduler->lock); in sched_process_idle_event_locked()
1654 sched_queue_delayed_work(ptdev->scheduler, tick, 0); in sched_process_idle_event_locked()
1666 lockdep_assert_held(&ptdev->scheduler->lock); in sched_process_global_irq_locked()
1705 if (!ptdev->scheduler) in panthor_sched_report_fw_events()
1708 atomic_or(events, &ptdev->scheduler->fw_events); in panthor_sched_report_fw_events()
1709 sched_queue_work(ptdev->scheduler, fw_events); in panthor_sched_report_fw_events()
1746 drm_WARN_ON(&ptdev->base, csg_id >= ptdev->scheduler->csg_slot_count)) in csgs_upd_ctx_queue_reqs()
1757 struct panthor_scheduler *sched = ptdev->scheduler; in csgs_upd_ctx_apply_locked()
1840 return ptdev->scheduler->csg_slots[group->csg_id].idle; in group_is_idle()
2033 sched_queue_work(group->ptdev->scheduler, sync_upd); in group_term_post_processing()
2477 struct panthor_scheduler *sched = ptdev->scheduler; in group_schedule_locked()
2538 drm_sched_stop(&queue->scheduler, bad_job ? &bad_job->base : NULL); in queue_stop()
2546 list_for_each_entry(job, &queue->scheduler.pending_list, base.list) in queue_start()
2549 drm_sched_start(&queue->scheduler); in queue_start()
2554 struct panthor_scheduler *sched = group->ptdev->scheduler; in panthor_group_stop()
2567 struct panthor_scheduler *sched = group->ptdev->scheduler; in panthor_group_start()
2569 lockdep_assert_held(&group->ptdev->scheduler->reset.lock); in panthor_group_start()
2590 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_sched_immediate_tick()
2601 if (ptdev->scheduler) in panthor_sched_report_mmu_fault()
2613 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_sched_suspend()
2730 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_sched_pre_reset()
2765 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_sched_post_reset()
2839 struct panthor_scheduler *sched = ptdev->scheduler; in queue_run_job()
2944 queue->remaining_time = drm_sched_suspend_timeout(&queue->scheduler); in queue_run_job()
2979 struct panthor_scheduler *sched = ptdev->scheduler; in queue_timedout_job()
2991 sched_queue_delayed_work(ptdev->scheduler, tick, 0); in queue_timedout_job()
3073 ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops, in group_create_queue()
3074 group->ptdev->scheduler->wq, 1, in group_create_queue()
3082 drm_sched = &queue->scheduler; in group_create_queue()
3100 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_group_create()
3227 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_group_destroy()
3276 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_group_get_state()
3464 struct panthor_scheduler *sched = ptdev->scheduler; in panthor_sched_unplug()
3597 ptdev->scheduler = sched; in panthor_sched_init()