Lines Matching defs:js
73 return "panfrost-js-0";
75 return "panfrost-js-1";
77 return "panfrost-js-2";
91 struct panfrost_job_slot *js = pfdev->js;
99 fence->seqno = ++js->queue[js_num].emit_seqno;
100 dma_fence_init(&fence->base, &panfrost_fence_ops, &js->job_lock,
101 js->queue[js_num].fence_context, fence->seqno);
130 int js)
141 job_write(pfdev, JS_AFFINITY_NEXT_LO(js), lower_32_bits(affinity));
142 job_write(pfdev, JS_AFFINITY_NEXT_HI(js), upper_32_bits(affinity));
187 static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
201 if (WARN_ON(job_read(pfdev, JS_COMMAND_NEXT(js)))) {
207 job_write(pfdev, JS_HEAD_NEXT_LO(js), lower_32_bits(jc_head));
208 job_write(pfdev, JS_HEAD_NEXT_HI(js), upper_32_bits(jc_head));
210 panfrost_job_write_affinity(pfdev, job->requirements, js);
225 job_write(pfdev, JS_CONFIG_NEXT(js), cfg);
228 job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id);
232 spin_lock(&pfdev->js->job_lock);
233 subslot = panfrost_enqueue_job(pfdev, js, job);
236 job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START);
238 "JS: Submitting atom %p to js[%d][%d] with head=0x%llx AS %d",
239 job, js, subslot, jc_head, cfg & 0xf);
241 spin_unlock(&pfdev->js->job_lock);
401 unsigned int js)
403 u32 js_status = job_read(pfdev, JS_STATUS(js));
408 dev_dbg(pfdev->dev, "js event, js=%d, status=%s, head=0x%x, tail=0x%x",
409 js, exception_name,
410 job_read(pfdev, JS_HEAD_LO(js)),
411 job_read(pfdev, JS_TAIL_LO(js)));
413 dev_err(pfdev->dev, "js fault, js=%d, status=%s, head=0x%x, tail=0x%x",
414 js, exception_name,
415 job_read(pfdev, JS_HEAD_LO(js)),
416 job_read(pfdev, JS_TAIL_LO(js)));
421 job->jc = job_read(pfdev, JS_TAIL_LO(js)) |
422 ((u64)job_read(pfdev, JS_TAIL_HI(js)) << 32);
449 drm_sched_fault(&pfdev->js->queue[js].sched);
575 spin_lock(&pfdev->js->job_lock);
577 spin_unlock(&pfdev->js->job_lock);
629 drm_sched_stop(&pfdev->js->queue[i].sched, bad);
640 synchronize_irq(pfdev->js->irq);
664 spin_lock(&pfdev->js->job_lock);
672 spin_unlock(&pfdev->js->job_lock);
694 drm_sched_resubmit_jobs(&pfdev->js->queue[i].sched);
699 drm_sched_start(&pfdev->js->queue[i].sched, true);
714 int js = panfrost_job_get_slot(job);
732 synchronize_irq(pfdev->js->irq);
739 dev_err(pfdev->dev, "gpu sched timeout, js=%d, config=0x%x, status=0x%x, head=0x%x, tail=0x%x, sched_job=%p",
740 js,
741 job_read(pfdev, JS_CONFIG(js)),
742 job_read(pfdev, JS_STATUS(js)),
743 job_read(pfdev, JS_HEAD_LO(js)),
744 job_read(pfdev, JS_TAIL_LO(js)),
794 struct panfrost_job_slot *js;
805 pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
806 if (!js)
810 spin_lock_init(&js->job_lock);
812 js->irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "job");
813 if (js->irq <= 0)
816 ret = devm_request_threaded_irq(pfdev->dev, js->irq,
831 js->queue[j].fence_context = dma_fence_context_alloc(1);
833 ret = drm_sched_init(&js->queue[j].sched,
851 drm_sched_fini(&js->queue[j].sched);
859 struct panfrost_job_slot *js = pfdev->js;
865 drm_sched_fini(&js->queue[j].sched);
875 struct panfrost_job_slot *js = pfdev->js;
880 sched = &js->queue[i].sched;
899 spin_lock(&pfdev->js->job_lock);
931 spin_unlock(&pfdev->js->job_lock);
936 struct panfrost_job_slot *js = pfdev->js;
941 if (atomic_read(&js->queue[i].sched.hw_rq_count))