Lines Matching full:v3d

5  * DOC: Broadcom V3D scheduling
67 v3d_switch_perfmon(struct v3d_dev *v3d, struct v3d_job *job) in v3d_switch_perfmon() argument
69 if (job->perfmon != v3d->active_perfmon) in v3d_switch_perfmon()
70 v3d_perfmon_stop(v3d, v3d->active_perfmon, true); in v3d_switch_perfmon()
72 if (job->perfmon && v3d->active_perfmon != job->perfmon) in v3d_switch_perfmon()
73 v3d_perfmon_start(v3d, job->perfmon); in v3d_switch_perfmon()
101 struct v3d_dev *v3d = job->base.v3d; in v3d_bin_job_run() local
102 struct drm_device *dev = &v3d->drm; in v3d_bin_job_run()
112 spin_lock_irqsave(&v3d->job_lock, irqflags); in v3d_bin_job_run()
113 v3d->bin_job = job; in v3d_bin_job_run()
118 spin_unlock_irqrestore(&v3d->job_lock, irqflags); in v3d_bin_job_run()
120 v3d_invalidate_caches(v3d); in v3d_bin_job_run()
122 fence = v3d_fence_create(v3d, V3D_BIN); in v3d_bin_job_run()
133 v3d_switch_perfmon(v3d, &job->base); in v3d_bin_job_run()
156 struct v3d_dev *v3d = job->base.v3d; in v3d_render_job_run() local
157 struct drm_device *dev = &v3d->drm; in v3d_render_job_run()
163 v3d->render_job = job; in v3d_render_job_run()
171 v3d_invalidate_caches(v3d); in v3d_render_job_run()
173 fence = v3d_fence_create(v3d, V3D_RENDER); in v3d_render_job_run()
184 v3d_switch_perfmon(v3d, &job->base); in v3d_render_job_run()
201 struct v3d_dev *v3d = job->base.v3d; in v3d_tfu_job_run() local
202 struct drm_device *dev = &v3d->drm; in v3d_tfu_job_run()
205 fence = v3d_fence_create(v3d, V3D_TFU); in v3d_tfu_job_run()
209 v3d->tfu_job = job; in v3d_tfu_job_run()
238 struct v3d_dev *v3d = job->base.v3d; in v3d_csd_job_run() local
239 struct drm_device *dev = &v3d->drm; in v3d_csd_job_run()
243 v3d->csd_job = job; in v3d_csd_job_run()
245 v3d_invalidate_caches(v3d); in v3d_csd_job_run()
247 fence = v3d_fence_create(v3d, V3D_CSD); in v3d_csd_job_run()
257 v3d_switch_perfmon(v3d, &job->base); in v3d_csd_job_run()
271 struct v3d_dev *v3d = job->v3d; in v3d_cache_clean_job_run() local
273 v3d_clean_caches(v3d); in v3d_cache_clean_job_run()
279 v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job) in v3d_gpu_reset_for_timeout() argument
283 mutex_lock(&v3d->reset_lock); in v3d_gpu_reset_for_timeout()
287 drm_sched_stop(&v3d->queue[q].sched, sched_job); in v3d_gpu_reset_for_timeout()
293 v3d_reset(v3d); in v3d_gpu_reset_for_timeout()
296 drm_sched_resubmit_jobs(&v3d->queue[q].sched); in v3d_gpu_reset_for_timeout()
300 drm_sched_start(&v3d->queue[q].sched, true); in v3d_gpu_reset_for_timeout()
303 mutex_unlock(&v3d->reset_lock); in v3d_gpu_reset_for_timeout()
318 struct v3d_dev *v3d = job->v3d; in v3d_cl_job_timedout() local
328 return v3d_gpu_reset_for_timeout(v3d, sched_job); in v3d_cl_job_timedout()
354 return v3d_gpu_reset_for_timeout(job->v3d, sched_job); in v3d_generic_job_timedout()
361 struct v3d_dev *v3d = job->base.v3d; in v3d_csd_job_timedout() local
372 return v3d_gpu_reset_for_timeout(v3d, sched_job); in v3d_csd_job_timedout()
411 v3d_sched_init(struct v3d_dev *v3d) in v3d_sched_init() argument
418 ret = drm_sched_init(&v3d->queue[V3D_BIN].sched, in v3d_sched_init()
424 dev_err(v3d->drm.dev, "Failed to create bin scheduler: %d.", ret); in v3d_sched_init()
428 ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched, in v3d_sched_init()
434 dev_err(v3d->drm.dev, "Failed to create render scheduler: %d.", in v3d_sched_init()
436 v3d_sched_fini(v3d); in v3d_sched_init()
440 ret = drm_sched_init(&v3d->queue[V3D_TFU].sched, in v3d_sched_init()
446 dev_err(v3d->drm.dev, "Failed to create TFU scheduler: %d.", in v3d_sched_init()
448 v3d_sched_fini(v3d); in v3d_sched_init()
452 if (v3d_has_csd(v3d)) { in v3d_sched_init()
453 ret = drm_sched_init(&v3d->queue[V3D_CSD].sched, in v3d_sched_init()
459 dev_err(v3d->drm.dev, "Failed to create CSD scheduler: %d.", in v3d_sched_init()
461 v3d_sched_fini(v3d); in v3d_sched_init()
465 ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched, in v3d_sched_init()
471 dev_err(v3d->drm.dev, "Failed to create CACHE_CLEAN scheduler: %d.", in v3d_sched_init()
473 v3d_sched_fini(v3d); in v3d_sched_init()
482 v3d_sched_fini(struct v3d_dev *v3d) in v3d_sched_fini() argument
487 if (v3d->queue[q].sched.ready) in v3d_sched_fini()
488 drm_sched_fini(&v3d->queue[q].sched); in v3d_sched_fini()