Lines Matching defs:submit

258 static void crashstate_get_bos(struct msm_gpu_state *state, struct msm_gem_submit *submit)
262 if (msm_context_is_vmbind(submit->queue->ctx)) {
271 drm_exec_lock_obj(&exec, drm_gpuvm_resv_obj(submit->vm));
274 drm_gpuvm_for_each_va (vma, submit->vm) {
285 drm_gpuvm_for_each_va (vma, submit->vm)
291 drm_gpuvm_for_each_va(vma, submit->vm) {
304 state->bos = kcalloc(submit->nr_bos,
307 for (int i = 0; state->bos && i < submit->nr_bos; i++) {
308 struct drm_gem_object *obj = submit->bos[i].obj;
309 bool dump = rd_full || (submit->bos[i].flags & MSM_SUBMIT_BO_DUMP);
312 msm_gpu_crashstate_get_bo(state, obj, submit->bos[i].iova,
365 struct msm_gem_submit *submit, struct msm_gpu_fault_info *fault_info,
388 if (submit && state->fault_info.ttbr0) {
390 struct msm_mmu *mmu = to_msm_vm(submit->vm)->mmu;
397 if (submit) {
398 crashstate_get_vm_logs(state, to_msm_vm(submit->vm));
399 crashstate_get_bos(state, submit);
410 struct msm_gem_submit *submit, struct msm_gpu_fault_info *fault_info,
423 struct msm_gem_submit *submit;
427 list_for_each_entry(submit, &ring->submits, node) {
428 if (submit->seqno == fence) {
430 return submit;
440 static void get_comm_cmdline(struct msm_gem_submit *submit, char **comm, char **cmd)
442 struct msm_context *ctx = submit->queue->ctx;
445 WARN_ON(!mutex_is_locked(&submit->gpu->lock));
451 task = get_pid_task(submit->pid, PIDTYPE_PID);
469 struct msm_gem_submit *submit;
480 submit = find_submit(cur_ring, cur_ring->memptrs->fence + 1);
483 * If the submit retired while we were waiting for the worker to run,
486 if (!submit)
490 submit->queue->faults++;
492 task = get_pid_task(submit->pid, PIDTYPE_PID);
496 struct msm_gem_vm *vm = to_msm_vm(submit->vm);
507 msm_gem_vm_unusable(submit->vm);
512 get_comm_cmdline(submit, &comm, &cmd);
518 msm_rd_dump_submit(priv->hangrd, submit,
523 msm_rd_dump_submit(priv->hangrd, submit, NULL);
528 msm_gpu_crashstate_capture(gpu, submit, NULL, comm, cmd);
538 * bo's referenced by the offending submit are still around.
546 * For the current (faulting?) ring/submit advance the fence by
547 * one more to clear the faulting submit
569 list_for_each_entry(submit, &ring->submits, node) {
571 * If the submit uses an unusable vm make sure
574 if (to_msm_vm(submit->vm)->unusable)
575 submit->nr_cmds = 0;
576 gpu->funcs->submit(gpu, submit);
591 struct msm_gem_submit *submit;
598 submit = find_submit(cur_ring, cur_ring->memptrs->fence + 1);
599 if (submit && submit->fault_dumped)
604 if (submit) {
605 get_comm_cmdline(submit, &comm, &cmd);
611 submit->fault_dumped = true;
616 msm_gpu_crashstate_capture(gpu, submit, fault_info, comm, cmd);
689 struct msm_gem_submit *submit)
691 int index = submit->seqno % MSM_GPU_SUBMIT_STATS_COUNT;
709 submit->queue->ctx->elapsed_ns += elapsed;
710 submit->queue->ctx->cycles += cycles;
712 trace_msm_gpu_submit_retired(submit, elapsed, clock,
715 msm_submit_retire(submit);
720 list_del(&submit->node);
734 msm_gem_submit_put(submit);
746 struct msm_gem_submit *submit = NULL;
750 submit = list_first_entry_or_null(&ring->submits,
755 * If no submit, we are done. If submit->fence hasn't
759 if (submit && dma_fence_is_signaled(submit->hw_fence)) {
760 retire_submit(gpu, ring, submit);
789 void msm_gpu_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit)
791 struct msm_ringbuffer *ring = submit->ring;
800 submit->seqno = submit->hw_fence->seqno;
803 * ring->submits holds a ref to the submit, to deal with the case
804 * that a submit completes before msm_ioctl_gem_submit() returns.
806 msm_gem_submit_get(submit);
809 list_add_tail(&submit->node, &ring->submits);
821 gpu->funcs->submit(gpu, submit);
822 submit->ring->cur_ctx_seqno = submit->queue->ctx->seqno;