Lines Matching refs:job
34 struct amdgpu_job *job = to_amdgpu_job(s_job); in amdgpu_job_timedout() local
37 job->base.sched->name, atomic_read(&ring->fence_drv.last_seq), in amdgpu_job_timedout()
40 amdgpu_device_gpu_recover(ring->adev, job, false); in amdgpu_job_timedout()
44 struct amdgpu_job **job, struct amdgpu_vm *vm) in amdgpu_job_alloc() argument
53 *job = kzalloc(size, GFP_KERNEL); in amdgpu_job_alloc()
54 if (!*job) in amdgpu_job_alloc()
61 (*job)->base.sched = &adev->rings[0]->sched; in amdgpu_job_alloc()
62 (*job)->vm = vm; in amdgpu_job_alloc()
63 (*job)->ibs = (void *)&(*job)[1]; in amdgpu_job_alloc()
64 (*job)->num_ibs = num_ibs; in amdgpu_job_alloc()
66 amdgpu_sync_create(&(*job)->sync); in amdgpu_job_alloc()
67 amdgpu_sync_create(&(*job)->sched_sync); in amdgpu_job_alloc()
68 (*job)->vram_lost_counter = atomic_read(&adev->vram_lost_counter); in amdgpu_job_alloc()
74 struct amdgpu_job **job) in amdgpu_job_alloc_with_ib() argument
78 r = amdgpu_job_alloc(adev, 1, job, NULL); in amdgpu_job_alloc_with_ib()
82 r = amdgpu_ib_get(adev, NULL, size, &(*job)->ibs[0]); in amdgpu_job_alloc_with_ib()
84 kfree(*job); in amdgpu_job_alloc_with_ib()
86 (*job)->vm_pd_addr = adev->gart.table_addr; in amdgpu_job_alloc_with_ib()
91 void amdgpu_job_free_resources(struct amdgpu_job *job) in amdgpu_job_free_resources() argument
93 struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched); in amdgpu_job_free_resources()
98 f = job->base.s_fence ? &job->base.s_fence->finished : job->fence; in amdgpu_job_free_resources()
100 for (i = 0; i < job->num_ibs; ++i) in amdgpu_job_free_resources()
101 amdgpu_ib_free(ring->adev, &job->ibs[i], f); in amdgpu_job_free_resources()
107 struct amdgpu_job *job = to_amdgpu_job(s_job); in amdgpu_job_free_cb() local
110 dma_fence_put(job->fence); in amdgpu_job_free_cb()
111 amdgpu_sync_free(&job->sync); in amdgpu_job_free_cb()
112 amdgpu_sync_free(&job->sched_sync); in amdgpu_job_free_cb()
113 kfree(job); in amdgpu_job_free_cb()
116 void amdgpu_job_free(struct amdgpu_job *job) in amdgpu_job_free() argument
118 amdgpu_job_free_resources(job); in amdgpu_job_free()
120 dma_fence_put(job->fence); in amdgpu_job_free()
121 amdgpu_sync_free(&job->sync); in amdgpu_job_free()
122 amdgpu_sync_free(&job->sched_sync); in amdgpu_job_free()
123 kfree(job); in amdgpu_job_free()
126 int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity, in amdgpu_job_submit() argument
136 r = drm_sched_job_init(&job->base, entity, owner); in amdgpu_job_submit()
140 job->owner = owner; in amdgpu_job_submit()
141 *f = dma_fence_get(&job->base.s_fence->finished); in amdgpu_job_submit()
142 amdgpu_job_free_resources(job); in amdgpu_job_submit()
143 priority = job->base.s_priority; in amdgpu_job_submit()
144 drm_sched_entity_push_job(&job->base, entity); in amdgpu_job_submit()
152 int amdgpu_job_submit_direct(struct amdgpu_job *job, struct amdgpu_ring *ring, in amdgpu_job_submit_direct() argument
157 job->base.sched = &ring->sched; in amdgpu_job_submit_direct()
158 r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, NULL, fence); in amdgpu_job_submit_direct()
159 job->fence = dma_fence_get(*fence); in amdgpu_job_submit_direct()
163 amdgpu_job_free(job); in amdgpu_job_submit_direct()
171 struct amdgpu_job *job = to_amdgpu_job(sched_job); in amdgpu_job_dependency() local
172 struct amdgpu_vm *vm = job->vm; in amdgpu_job_dependency()
177 fence = amdgpu_sync_get_fence(&job->sync, &explicit); in amdgpu_job_dependency()
180 r = amdgpu_sync_fence(ring->adev, &job->sched_sync, in amdgpu_job_dependency()
187 while (fence == NULL && vm && !job->vmid) { in amdgpu_job_dependency()
188 r = amdgpu_vmid_grab(vm, ring, &job->sync, in amdgpu_job_dependency()
189 &job->base.s_fence->finished, in amdgpu_job_dependency()
190 job); in amdgpu_job_dependency()
194 fence = amdgpu_sync_get_fence(&job->sync, NULL); in amdgpu_job_dependency()
204 struct amdgpu_job *job; in amdgpu_job_run() local
207 job = to_amdgpu_job(sched_job); in amdgpu_job_run()
208 finished = &job->base.s_fence->finished; in amdgpu_job_run()
210 BUG_ON(amdgpu_sync_peek_fence(&job->sync, NULL)); in amdgpu_job_run()
212 trace_amdgpu_sched_run_job(job); in amdgpu_job_run()
214 if (job->vram_lost_counter != atomic_read(&ring->adev->vram_lost_counter)) in amdgpu_job_run()
220 r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, job, in amdgpu_job_run()
226 dma_fence_put(job->fence); in amdgpu_job_run()
227 job->fence = dma_fence_get(fence); in amdgpu_job_run()
229 amdgpu_job_free_resources(job); in amdgpu_job_run()