Lines Matching refs:job

34 	struct amdgpu_job *job = to_amdgpu_job(s_job);  in amdgpu_job_timedout()  local
39 if (amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) { in amdgpu_job_timedout()
45 amdgpu_vm_get_task_info(ring->adev, job->pasid, &ti); in amdgpu_job_timedout()
47 job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), in amdgpu_job_timedout()
53 amdgpu_device_gpu_recover(ring->adev, job); in amdgpu_job_timedout()
59 struct amdgpu_job **job, struct amdgpu_vm *vm) in amdgpu_job_alloc() argument
68 *job = kzalloc(size, GFP_KERNEL); in amdgpu_job_alloc()
69 if (!*job) in amdgpu_job_alloc()
76 (*job)->base.sched = &adev->rings[0]->sched; in amdgpu_job_alloc()
77 (*job)->vm = vm; in amdgpu_job_alloc()
78 (*job)->ibs = (void *)&(*job)[1]; in amdgpu_job_alloc()
79 (*job)->num_ibs = num_ibs; in amdgpu_job_alloc()
81 amdgpu_sync_create(&(*job)->sync); in amdgpu_job_alloc()
82 amdgpu_sync_create(&(*job)->sched_sync); in amdgpu_job_alloc()
83 (*job)->vram_lost_counter = atomic_read(&adev->vram_lost_counter); in amdgpu_job_alloc()
84 (*job)->vm_pd_addr = AMDGPU_BO_INVALID_OFFSET; in amdgpu_job_alloc()
90 struct amdgpu_job **job) in amdgpu_job_alloc_with_ib() argument
94 r = amdgpu_job_alloc(adev, 1, job, NULL); in amdgpu_job_alloc_with_ib()
98 r = amdgpu_ib_get(adev, NULL, size, &(*job)->ibs[0]); in amdgpu_job_alloc_with_ib()
100 kfree(*job); in amdgpu_job_alloc_with_ib()
105 void amdgpu_job_free_resources(struct amdgpu_job *job) in amdgpu_job_free_resources() argument
107 struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched); in amdgpu_job_free_resources()
112 f = job->base.s_fence ? &job->base.s_fence->finished : job->fence; in amdgpu_job_free_resources()
114 for (i = 0; i < job->num_ibs; ++i) in amdgpu_job_free_resources()
115 amdgpu_ib_free(ring->adev, &job->ibs[i], f); in amdgpu_job_free_resources()
121 struct amdgpu_job *job = to_amdgpu_job(s_job); in amdgpu_job_free_cb() local
126 dma_fence_put(job->fence); in amdgpu_job_free_cb()
127 amdgpu_sync_free(&job->sync); in amdgpu_job_free_cb()
128 amdgpu_sync_free(&job->sched_sync); in amdgpu_job_free_cb()
129 kfree(job); in amdgpu_job_free_cb()
132 void amdgpu_job_free(struct amdgpu_job *job) in amdgpu_job_free() argument
134 amdgpu_job_free_resources(job); in amdgpu_job_free()
136 dma_fence_put(job->fence); in amdgpu_job_free()
137 amdgpu_sync_free(&job->sync); in amdgpu_job_free()
138 amdgpu_sync_free(&job->sched_sync); in amdgpu_job_free()
139 kfree(job); in amdgpu_job_free()
142 int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity, in amdgpu_job_submit() argument
152 r = drm_sched_job_init(&job->base, entity, owner); in amdgpu_job_submit()
156 job->owner = owner; in amdgpu_job_submit()
157 *f = dma_fence_get(&job->base.s_fence->finished); in amdgpu_job_submit()
158 amdgpu_job_free_resources(job); in amdgpu_job_submit()
159 priority = job->base.s_priority; in amdgpu_job_submit()
160 drm_sched_entity_push_job(&job->base, entity); in amdgpu_job_submit()
168 int amdgpu_job_submit_direct(struct amdgpu_job *job, struct amdgpu_ring *ring, in amdgpu_job_submit_direct() argument
173 job->base.sched = &ring->sched; in amdgpu_job_submit_direct()
174 r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, NULL, fence); in amdgpu_job_submit_direct()
175 job->fence = dma_fence_get(*fence); in amdgpu_job_submit_direct()
179 amdgpu_job_free(job); in amdgpu_job_submit_direct()
187 struct amdgpu_job *job = to_amdgpu_job(sched_job); in amdgpu_job_dependency() local
188 struct amdgpu_vm *vm = job->vm; in amdgpu_job_dependency()
193 fence = amdgpu_sync_get_fence(&job->sync, &explicit); in amdgpu_job_dependency()
196 r = amdgpu_sync_fence(ring->adev, &job->sched_sync, in amdgpu_job_dependency()
203 while (fence == NULL && vm && !job->vmid) { in amdgpu_job_dependency()
204 r = amdgpu_vmid_grab(vm, ring, &job->sync, in amdgpu_job_dependency()
205 &job->base.s_fence->finished, in amdgpu_job_dependency()
206 job); in amdgpu_job_dependency()
210 fence = amdgpu_sync_get_fence(&job->sync, NULL); in amdgpu_job_dependency()
220 struct amdgpu_job *job; in amdgpu_job_run() local
223 job = to_amdgpu_job(sched_job); in amdgpu_job_run()
224 finished = &job->base.s_fence->finished; in amdgpu_job_run()
226 BUG_ON(amdgpu_sync_peek_fence(&job->sync, NULL)); in amdgpu_job_run()
228 trace_amdgpu_sched_run_job(job); in amdgpu_job_run()
230 if (job->vram_lost_counter != atomic_read(&ring->adev->vram_lost_counter)) in amdgpu_job_run()
236 r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, job, in amdgpu_job_run()
242 dma_fence_put(job->fence); in amdgpu_job_run()
243 job->fence = dma_fence_get(fence); in amdgpu_job_run()
245 amdgpu_job_free_resources(job); in amdgpu_job_run()