Christian König
b07c60c065
drm/amdgpu: move ring from IBs into job
...
We can't submit to multiple rings at the same time anyway.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:17:20 -05:00
Christian König
50838c8cc4
drm/amdgpu: add proper job alloc/free functions
...
And use them in the CS instead of allocating IBs and jobs separately.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:17:18 -05:00
Christian König
94dd0a4ae0
drm/amdgpu: merge vm_grab_id and vm_fence v2
...
No need for an extra function any more.
v2: comment cleanups
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:16:57 -05:00
Christian König
8d0a7cea82
drm/amdgpu: grab VMID before submitting job v5
...
This allows the scheduler to handle the dependencies on ID contention as well.
v2: grab id only once
v3: use a separate lock for the VMIDs
v4: cleanup after semaphore removal
v5: minor coding style change
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:16:56 -05:00
Chunming Zhou
cadf97b196
drm/amdgpu: clean up non-scheduler code path (v2)
...
Non-scheduler code is longer supported.
v2: agd: rebased on upstream
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Ken Wang <Qingqing.Wang@amd.com >
Reviewed-by: Monk Liu <monk.liu@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:16:50 -05:00
Christian König
e284022163
drm/amdgpu: fix incorrect mutex usage v3
...
Before this patch the scheduler fence was created when we push the job
into the queue, so we could only get the fence after pushing it.
The mutex now was necessary to prevent the thread pushing the jobs to
the hardware from running faster than the thread pushing the jobs into
the queue.
Otherwise the thread pushing jobs into the queue would have accessed
possible freed up memory when it tries to get a reference to the fence.
So what you get in the end is thread A:
mutex_lock(&job->lock);
...
Kick of thread B.
...
mutex_unlock(&job->lock);
And thread B:
mutex_lock(&job->lock);
....
mutex_unlock(&job->lock);
kfree(job);
I'm actually not sure if I'm still up to date on this, but this usage
pattern used to be not allowed with mutexes. See here as well
https://lwn.net/Articles/575460/ .
v2: remove unrelated changes, fix missing owner
v3: rebased, add more commit message
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:58 -05:00
Christian König
4a56228337
drm/amdgpu: cleanup scheduler fence get/put dance
...
The code was correct, but getting two references when the ownership
is linearly moved on is a bit awkward and just overhead.
Signed: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:58 -05:00
Chunming Zhou
7034decf6a
drm/amdgpu: add command submission workflow tracepoint
...
OGL needs these tracepoints to investigate performance issue.
Change-Id: I5e58187d061253f7d665dfce8e4e163ba91d3e2b
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
2015-11-16 11:05:57 -05:00
Christian König
6ef68c17d4
drm/amdgpu: remove amdgpu_fence_ref/unref
...
Just move the remaining users to fence_put/get.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-10-30 01:58:22 -04:00
Christian König
4f839a243d
drm/amdgpu: more scheduler cleanups v2
...
Embed the scheduler into the ring structure instead of allocating it.
Use the ring name directly instead of the id.
v2: rebased, whitespace cleanup
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Chunming Zhou<david1.zhou@amd.com >
2015-09-23 17:23:39 -04:00
Christian König
9b398fa5c2
drm/amdgpu: rename fence->scheduler to sched v2
...
Just to be consistent with the other members.
v2: rename the ring member as well.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com > (v1)
Reviewed-by: Chunming Zhou<david1.zhou@amd.com >
2015-09-23 17:23:37 -04:00
Junwei Zhang
a6db8a33e1
drm/amdgpu: refine the scheduler job type conversion
...
Use container_of rather than casting.
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: David Zhou <david1.zhou@amd.com >
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
2015-09-23 17:23:36 -04:00
Junwei Zhang
4c7eb91cae
drm/amdgpu: refine the job naming for amdgpu_job and amdgpu_sched_job
...
Use consistent naming across functions.
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: David Zhou <david1.zhou@amd.com >
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
2015-09-23 17:23:36 -04:00
Christian König
1886d1a9ca
drm/amdgpu: remove process_job callback from the scheduler
...
Just free the resources immediately after submitting the job.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-09-23 17:23:33 -04:00
Christian König
e61235db62
drm/amdgpu: add scheduler dependency callback v2
...
This way the scheduler doesn't wait in it's work thread any more.
v2: fix race conditions
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-28 15:04:17 -04:00
Christian König
bd755d0870
drm/amdgpu: remove extra parameters from scheduler callbacks
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-26 17:54:10 -04:00
Chunming Zhou
3c62338c26
drm/amdgpu: fix last_vm_update fence is not effetive for sched fence
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-25 10:53:05 -04:00
Chunming Zhou
84f76ea6b0
drm/amdgpu: add owner for sched fence
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-25 10:51:32 -04:00
Christian König
6c859274f3
drm/amdgpu: fix and cleanup amd_sched_entity_push_job
...
Calling schedule() is probably the worse things we can do.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:49:57 -04:00
Christian König
ce882e6dc2
drm/amdgpu: remove v_seq handling from the scheduler v2
...
Simply not used any more. Only keep 32bit atomic for fence sequence numbering.
v2: trivial rebase
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com > (v1)
Reviewed-by: Chunming Zhou <david1.zhou@amd.com > (v1)
2015-08-25 10:39:16 -04:00
Christian König
bf7ebaeed4
drm/amdgpu: free the job immediately after dispatching it
...
Fixes a whole bunch of lockdep warnings.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-20 17:05:01 -04:00
Chunming Zhou
bb977d3711
drm/amdgpu: abstract amdgpu_job for scheduler
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-20 17:00:35 -04:00
Chunming Zhou
281b422301
drm/amdgpu: add reference for **fence
...
fix fence is released when pass to **fence sometimes.
add reference for it.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:17 -04:00
Christian König
05caae8515
drm/amdgpu: remove amd_sched_wait_emit v2
...
Not used any more.
v2: remove amd_sched_emit as well.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:15 -04:00
Chunming Zhou
f556cb0cae
drm/amd: add scheduler fence implementation (v2)
...
scheduler fence is based on kernel fence framework.
v2: squash in Christian's build fix
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:07 -04:00
Chunming Zhou
4af9f07ccd
drm/amdgpu: use kernel submit helper in vm
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:07 -04:00
Chunming Zhou
953e8fd4e7
drm/amdgpu: use amd_sched_job in its backend ops
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:06 -04:00
Christian König
6f0e54a964
drm/amdgpu: cleanup and fix scheduler fence handling v2
...
v2: rebased
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:05 -04:00
Christian König
91404fb208
drm/amdgpu: merge amd_sched_entity and amd_context_entity v2
...
Avoiding a couple of casts.
v2: rename c_entity to entity as well
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:05 -04:00
Chunming Zhou
4cef92670b
drm/amdgpu: process sched job exactly triggered by fence signal
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:03 -04:00
Chunming Zhou
80de5913cf
Revert "drm/amdgpu: return new seq_no for amd_sched_push_job"
...
This reverts commit d1d33da8eb86b8ca41dd9ed95738030df5267b95.
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
Conflicts:
drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
2015-08-17 16:51:02 -04:00
Christian König
47f38501f1
drm/amdgpu: cleanup amdgpu_ctx inti/fini v2
...
Cleanup the kernel context handling.
v2: rebased
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com > (v1)
2015-08-17 16:51:02 -04:00
Chunming Zhou
7484667c6a
drm/amdgpu: move sched job process from isr to fence callback
...
This way can avoid interrupt lost, and can process sched job exactly.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:59 -04:00
Jammy Zhou
f95b7e3e86
drm/amdgpu: add amd_sched_commit
...
This function is to update last_emitted_v_seq and wake up the waiters.
It should be called by driver in the run_job backend function
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:50:57 -04:00
Jammy Zhou
ea199cc9f8
drm/amdgpu: return new seq_no for amd_sched_push_job
...
It is clean to update last_queued_v_seq in the scheduler module
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:50:56 -04:00
Jammy Zhou
dd01d07195
drm/amdgpu: some code refinement v2
...
Fix the code alignment, etc.
v2: rebase the code
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:50:56 -04:00
Chunming Zhou
03d3a3e634
drm/amdgpu: fix null pointer by previous cleanup
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:50:55 -04:00
Chunming Zhou
1763552ee8
drm/amdgpu: add kernel fence in ib_submit_kernel_helper
...
every sbumission should be able to get a fence.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <jammy.zhou@amd.com >
2015-08-17 16:50:54 -04:00
Christian König
1d7dd229f5
drm/amdgpu: clean up amd sched wait_ts and wait_signal
...
Remove code not used at the moment.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:50:50 -04:00
Chunming Zhou
3c704e934d
drm/amdgpu: add helper function for kernel submission
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:50:44 -04:00
Chunming Zhou
d1ff9086c1
drm/amdgpu: fix seq in ctx_add_fence
...
if enabling scheduler, then the queued seq is assigned
when pushing job before emitting job.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:50:43 -04:00
Chunming Zhou
4b559c90bc
drm/amdgpu: make sure the fence is emitted before ring to get it.
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Christian K?nig <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:35 -04:00
Chunming Zhou
c1b69ed0c6
drm/amdgpu: add backend implementation of gpu scheduler (v2)
...
v2: fix rebase breakage
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Christian K?nig <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:33 -04:00