Lines Matching defs:js
79 return "panfrost-js-0";
81 return "panfrost-js-1";
83 return "panfrost-js-2";
97 struct panfrost_job_slot *js = pfdev->js;
105 fence->seqno = ++js->queue[js_num].emit_seqno;
106 dma_fence_init(&fence->base, &panfrost_fence_ops, &js->job_lock,
107 js->queue[js_num].fence_context, fence->seqno);
136 int js)
147 job_write(pfdev, JS_AFFINITY_NEXT_LO(js), affinity & 0xFFFFFFFF);
148 job_write(pfdev, JS_AFFINITY_NEXT_HI(js), affinity >> 32);
151 static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
164 if (WARN_ON(job_read(pfdev, JS_COMMAND_NEXT(js)))) {
170 job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF);
171 job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32);
173 panfrost_job_write_affinity(pfdev, job->requirements, js);
187 job_write(pfdev, JS_CONFIG_NEXT(js), cfg);
190 job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id);
193 dev_dbg(pfdev->dev, "JS: Submitting atom %p to js[%d] with head=0x%llx",
194 job, js, jc_head);
196 job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START);
439 int js = panfrost_job_get_slot(job);
448 dev_err(pfdev->dev, "gpu sched timeout, js=%d, config=0x%x, status=0x%x, head=0x%x, tail=0x%x, sched_job=%p",
449 js,
450 job_read(pfdev, JS_CONFIG(js)),
451 job_read(pfdev, JS_STATUS(js)),
452 job_read(pfdev, JS_HEAD_LO(js)),
453 job_read(pfdev, JS_TAIL_LO(js)),
457 if (!panfrost_scheduler_stop(&pfdev->js->queue[js], sched_job))
498 dev_err(pfdev->dev, "js fault, js=%d, status=%s, head=0x%x, tail=0x%x",
511 old_status = atomic_cmpxchg(&pfdev->js->queue[j].status,
515 drm_sched_fault(&pfdev->js->queue[j].sched);
521 spin_lock(&pfdev->js->job_lock);
533 spin_unlock(&pfdev->js->job_lock);
569 pfdev->js->queue[i].sched.timeout = MAX_SCHEDULE_TIMEOUT - 1;
570 cancel_delayed_work_sync(&pfdev->js->queue[i].sched.work_tdr);
571 panfrost_scheduler_stop(&pfdev->js->queue[i], NULL);
577 spin_lock_irqsave(&pfdev->js->job_lock, flags);
585 spin_unlock_irqrestore(&pfdev->js->job_lock, flags);
590 panfrost_scheduler_start(&pfdev->js->queue[i]);
597 struct panfrost_job_slot *js;
602 pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
603 if (!js)
606 spin_lock_init(&js->job_lock);
620 mutex_init(&js->queue[j].lock);
622 js->queue[j].fence_context = dma_fence_context_alloc(1);
624 ret = drm_sched_init(&js->queue[j].sched,
640 drm_sched_fini(&js->queue[j].sched);
647 struct panfrost_job_slot *js = pfdev->js;
653 drm_sched_fini(&js->queue[j].sched);
654 mutex_destroy(&js->queue[j].lock);
662 struct panfrost_job_slot *js = pfdev->js;
667 sched = &js->queue[i].sched;
687 struct panfrost_job_slot *js = pfdev->js;
692 if (atomic_read(&js->queue[i].sched.hw_rq_count))