Alex Deucher
5134e999cb
drm/amdgpu: fix warning in scheduler
...
This should never happen so warn when the count does
not equal the expected size.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-09-04 11:04:04 -04:00
Chunming Zhou
c9f0fe5e19
drm/amdgpu: make wait_event uninterruptible in push_job
...
with interruptible, the push_job maybe return -ERESTARTSYS,
then result in push_job error.
E.g. bug trace:
[ 181.618860] *****amdgpu_copy_buffer:fence->seq:0x0000000048d8758b, contxt:1207959552, ref:683967304, r:-512
[ 181.618929] BUG: unable to handle kernel paging request at ffffffff811aa266
[ 181.625887] IP: [<ffffffff81548ffc>] reservation_object_add_excl_fence+0x3c/0x120
...
[ 181.859767] [<ffffffff811aa266>] ? unmap_mapping_range+0x66/0x110
[ 181.865928] [<ffffffffc0608ac1>] ttm_bo_move_accel_cleanup+0x41/0x3c0 [ttm]
[ 181.872971] [<ffffffffc062d382>] amdgpu_move_blit.isra.18+0x122/0x150 [amdgpu]
[ 181.880254] [<ffffffff811aa266>] ? unmap_mapping_range+0x66/0x110
[ 181.886420] [<ffffffffc062d709>] amdgpu_bo_move+0xa9/0x200 [amdgpu]
[ 181.892753] [<ffffffffc0606e8d>] ttm_bo_handle_move_mem+0x26d/0x5c0 [ttm]
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-09-02 12:19:53 -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
69bd5bf13a
drm/amdgpu: let the scheduler work more with jobs v2
...
v2: fix another race condition
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
c2b6bd7e91
drm/amdgpu: fix wait queue handling in the scheduler
...
Freeing up a queue after signalling it isn't race free.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-26 17:55:07 -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
Christian König
88079006dc
drm/amdgpu: wake up scheduler only when neccessary
...
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:53:23 -04:00
Christian König
062c7fb3eb
drm/amdgpu: remove entity idle timeout v2
...
Removing the entity from scheduling can deadlock the whole system.
Wait forever till the remaining IBs are scheduled.
v2: fix comment as well
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 > (v1)
2015-08-26 17:52:18 -04:00
Chunming Zhou
f38fdfddfa
drm/amdgpu: add priv data to sched
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-25 10:52:18 -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
c14692f0a7
drm/amdgpu: remove entity reference from sched fence
...
Entity don't live as long as scheduler fences.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:50:42 -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
69f7dd652c
drm/amdgpu: remove unused parameters to amd_sched_create
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:47:41 -04:00
Christian König
1fca766b24
drm/amdgpu: remove sched_lock
...
It isn't protecting anything.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:46:46 -04:00
Christian König
b034b572f2
drm/amdgpu: remove prepare_job callback
...
Not used any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:46:02 -04:00
Christian König
d54fdb94b2
drm/amdgpu: cleanup a scheduler function name
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:44:57 -04:00
Christian König
e688b72822
drm/amdgpu: reorder scheduler functions
...
Keep run queue, entity and scheduler handling together.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:44:23 -04:00
Christian König
f495659821
drm/amdgpu: fix scheduler thread creation error checking
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:43:46 -04:00
Christian König
aef4852eed
drm/amdgpu: fix entity wakeup race condition
...
That actually didn't worked at all.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:42:30 -04:00
Christian König
f85a6dd9eb
drm/amdgpu: cleanup entity picking
...
Cleanup function name, stop checking scheduler ready twice, but
check if kernel thread should stop instead.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:41:52 -04:00
Christian König
9788ec4032
drm/amdgpu: remove some more unused entity members v2
...
None of them are used any more.
v2: fix type in error message
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-25 10:40:55 -04:00
Christian König
c746ba2223
drm/amdgpu: rework scheduler submission handling.
...
Remove active_hw_rq and it's protecting queue_lock, they are unused.
User 32bit atomic for hw_rq_count, 64bits for counting to three is a bit
overkill.
Cleanup the function name and remove incorrect comments.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-25 10:39:31 -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
2b184d8dbc
drm/amdgpu: use a spinlock instead of a mutex for the rq
...
More appropriate and fixes some nasty lockdep warnings.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-20 17:03:47 -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
Christian König
432a4ff8b7
drm/amdgpu: cleanup sheduler rq handling v2
...
Rework run queue implementation, especially remove the odd list handling.
v2: cleanup the code only, no algorithem change.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:22 -04:00
Chunming Zhou
1c8f805af9
drm/amdgpu: fix unnecessary wake up
...
decrease CPU extra overhead.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-17 16:51:20 -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
5b232c2a71
drm/amdgpu: remove scheduler fence list v2
...
Unused and missing proper locking.
v2: add locking comment to commit message.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com > (v1)
2015-08-17 16:51:16 -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
Christian König
2983e5cef3
drm/amdgpu: remove unecessary scheduler fence callbacks
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:14 -04:00
Christian König
db789d3451
drm/amdgpu: fix scheduler fence implementation
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:14 -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
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
Christian König
4cd7f42cf8
drm/amdgpu: fix coding style in a couple of places
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:04 -04:00
Christian König
ddf94d33d6
drm/amdgpu: remove unused parent entity
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:51:03 -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
0e89d0c16b
drm/amdgpu: stop leaking the ctx id into the scheduler v2
...
Id's are for the IOCTL ABI only.
v2: remove tgid 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:01 -04:00
Jammy Zhou
27f6642d06
drm/amdgpu: add amd_sched_next_queued_seq function
...
This function is used to get the next queued sequence number
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:58 -04:00
Jammy Zhou
63ad8d5882
drm/amdgpu: make last_handled_seq atomic
...
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
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
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
Jammy Zhou
4afcb30383
drm/amdgpu: add amdgpu.sched_hw_submission option
...
This option can be used to specify the max number of submissions in the
active HW queue. The default value is 2 now.
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:50:42 -04:00
Jammy Zhou
1333f723fb
drm/amdgpu: add amdgpu.sched_jobs option
...
This option can be used to specify the max job number in the job queue,
and it is 16 by default.
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:50:41 -04:00
Jammy Zhou
c0044bc2c6
drm/amdgpu: silent the message for GPU scheduler creation
...
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-08-17 16:50:41 -04:00
Jammy Zhou
a72ce6f841
drm/amd: add basic scheduling framework
...
run queue:
A set of entities scheduling commands for the same ring. It
implements the scheduling policy that selects the next entity to
emit commands from.
entity:
A scheduler entity is a wrapper around a job queue or a group of
other entities. This can be used to build hierarchies of entities.
For example all job queue entities belonging to the same process
may be placed in a higher level entity and scheduled against other
process entities.
Entities take turns emitting jobs from their job queue to the
corresponding hardware ring, in accordance with the scheduler policy.
Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com >
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Signed-off-by: Jammy Zhou <Jammy.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:30 -04:00