Christian König
b44135351a
drm/amdgpu: RCU protected amdgpu_fence_release
...
Fences must be freed RCU protected, otherwise the reservation_object_*_rcu()
functions can run into problems.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-16 17:58:52 -04:00
Christian König
ca08e04d56
drm/amdgpu: merge amdgpu_fence_process and _activity
...
No need to keep the two separate any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2016-03-16 17:58:43 -04:00
Christian König
d9713ef6b9
drm/amdgpu: cleanup amdgpu_fence_activity
...
The comment about the loop counter was never valid, even when you have
multiple threads this loop only runs as long as the sequence increases.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2016-03-16 17:58:12 -04:00
Christian König
22e5a2f46a
drm/amdgpu: move fence structure into amdgpu_fence.c
...
No need to have that in the header file any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-14 14:08:30 -04:00
Christian König
77163f074a
drm/amdgpu: remove amdgpu_fence_wait_next
...
Not used any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-14 13:43:47 -04:00
Christian König
364beb2cc4
drm/amdgpu: return the common fence from amdgpu_fence_emit
...
Try to avoid using the hardware specific fences even more.
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 >
2016-03-08 11:01:48 -05:00
Christian König
336d1f5efe
drm/amdgpu: remove HW fence owner
...
Not used any more since we now always use the sheduler.
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 >
2016-03-08 11:01:47 -05:00
Christian König
9b3896686f
drm/amdgpu: remove fence reset detection leftovers
...
wait_event() never returns before the fence was signaled.
Signed-off-by: Christian König <christian.koenig@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-16 17:22:16 -05:00
Christian König
a27de35caa
drm/amdgpu: remove the ring lock v2
...
It's not needed any more because all access goes through the scheduler now.
v2: Update commit message.
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:58 -05:00
Alex Deucher
18db89b402
drm/amdgpu: add a debugfs property to trigger a GPU reset
...
Ported from similar code in radeon.
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Ken Wang <Qingqing.Wang@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:16:55 -05:00
Christian König
5907a0d8af
drm/amdgpu: cleanup sync_seq handling
...
Not used any more without semaphores
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:52 -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
Chunming Zhou
b49c84a576
drm/amdgpu: add kmem cache for amdgpu fence
...
Change-Id: I5ad8dd156ccf27a6f18004aa0a215a0925b6e67b
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 11:05:50 -05:00
Christian König
c2776afe74
drm/amdgpu: use a timer for fence fallback
...
Less overhead than a work item and also adds proper cleanup handling.
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 >
2015-11-16 11:05:47 -05:00
Christian König
935c186aae
drm/amdgpu: remove fence trace points
...
Mostly unused and replaced by the common trace points.
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 >
2015-11-16 11:05:46 -05:00
Christian König
a95e264254
drm/amdgpu: group together common fence implementation
...
And also add some missing function documentation. No functional change.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-04 12:29:23 -05:00
Christian König
24372447e5
drm/amdgpu: fix fence fallback check
...
Interrupts are notorious unreliable, enable the fallback at
a couple of more places.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-04 12:29:22 -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
ee327caf1a
drm/amdgpu: switch to common fence_wait_any_timeout v2
...
No need to duplicate the functionality any more.
v2: fix handling if no fence is available.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
2015-10-30 01:51:11 -04:00
Christian König
318cd340c5
drm/amdgpu: remove unneeded fence functions
...
amdgpu_fence_default_wait isn't needed any more the default wait does the same
thing and amdgpu_test_signaled is dead as well.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-10-30 01:49:30 -04:00
Junwei Zhang
ce16b0e5a3
drm/amdgpu: remove the unnecessary parameter adev for amdgpu_fence_wait_any()
...
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-10-21 11:35:13 -04:00
Christian König
0c418f1010
drm/amdgpu: remove the exclusive lock
...
Finally getting rid of it.
Signed-off-by: Christian König <christian.koenig@amd.com >
2015-10-21 11:35:12 -04:00
Christian König
b7e4dad3e1
drm/amdgpu: remove old lockup detection infrastructure
...
It didn't worked to well anyway.
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 >
2015-10-21 11:35:12 -04:00
Junwei Zhang
2440ff2c91
drm/amdgpu: add timer to fence to detect scheduler lockup
...
Change-Id: I67e987db0efdca28faa80b332b75571192130d33
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: David Zhou <david1.zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-10-14 16:16:42 -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
5ec92a7692
drm/amdgpu: cleanup fence queue init v2
...
Move the fence related stuff into amdgpu_fence.c
v2: rework commit message, cause this is actually not a bug
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 >
2015-09-23 17:23:38 -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
Christian König
8221d706f4
drm/amdgpu: partially revert "modify amdgpu_fence_wait_any() to amdgpu_fence_wait_multiple()" v2
...
That isn't used any more.
v2: rebase
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-09-02 12:19:52 -04:00
Junwei Zhang
113cd9dacb
drm/amdgpu: adjust the judgement of removing fence callback
...
The fence in the array may be skipped if wait_all is false,
thus the related callback is not initialized with list head.
So removing this kind callback will cause NULL pointer reference.
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-26 17:50:04 -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
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
Chunming Zhou
4ce9891ee1
drm/amdgpu: improve sa_bo->fence by kernel fence
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-25 10:38:41 -04:00
Junwei Zhang
1aa4051b7f
drm/amdgpu: modify amdgpu_fence_wait_any() to amdgpu_fence_wait_multiple()
...
Rename the function and update the related code with this modified function.
Add the new parameter of bool wait_all.
If wait_all is true, it will return when all fences are signaled or timeout.
If wait_all is false, it will return when any fence is signaled or timeout.
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Monk Liu <monk.liu@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-08-25 10:38:28 -04:00
Christian König
00d2a2b21d
drm/amdgpu: cleanup amdgpu_fence_ring_wait_seq
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:51:10 -04:00
Christian König
68ed3de434
drm/amdgpu: remove duplicate amdgpu_fence_process implementation
...
Looks like that somehow got missed while during porting the radeon changes.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:51:10 -04:00
Christian König
02bc0650bc
drm/amdgpu: remove amdgpu_fence_wait
...
It was just a wrapper for fence_wait anyway.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:51:09 -04:00
Christian König
3cdb8119d9
drm/amdgpu: remove amdgpu_fence_signaled
...
The common kernel function does the same thing.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:51:08 -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
monk.liu
7f06c236b9
drm/amdgpu: move wait_queue_head from adev to ring (v2)
...
thus unnecessary wake up could be avoid between rings
v2:
move wait_queue_head to fence_drv from ring
Signed-off-by: monk.liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-08-17 16:50:48 -04:00
monk.liu
e29551556e
drm/amdgpu: re-implement fence_default_wait
...
use fence_wait_any to implement fence_default_wait
Signed-off-by: monk.liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-08-17 16:50:48 -04:00
monk.liu
332dfe907b
drm/amdgpu: new implement for fence_wait_any (v2)
...
origninal method will sleep/schedule at the granurarity of HZ/2 and
based on seq signal method, the new implement is based on kernel fance
interface, no unnecessary schedule at all
v2: replace logic of original amdgpu_fence_wait_any
Signed-off-by: monk.liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-08-17 16:50:47 -04:00
monk.liu
2e536084f2
drm/amdgpu: use kernel fence interface when possible
...
Signed-off-by: monk.liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-08-17 16:50:47 -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
Chunming Zhou
176e1ab1b5
drm/amdgpu: protect fence_process from multiple context
...
fence_process may be called from kthread, user thread and interrupt context.
it is possible to called concurrently, then will wake up fence queue multiple times.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:38 -04:00
Chunming Zhou
e0d8f3c34e
drm/amdgpu: add sched isr to fence process
...
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:38 -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
Alex Deucher
b80d8475c1
drm/amdgpu: add scheduler initialization
...
1. Add kernel parameter option, default 0
2. Add scheduler initialization for amdgpu
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:31 -04:00
Alex Deucher
5ceb54c68a
drm/amdgpu: add fence suspend/resume functions
...
Added to:
- handle draining the ring on suspend
- properly enable/disable interrupts on suspend and resume
Fix breakages from:
commit 467ee3be53d240d08beed2e82a941e820c1ac323
Author: Chunming Zhou <david1.zhou@amd.com >
Date: Mon Jun 1 14:14:32 2015 +0800
drm/amdgpu: always enable EOP interrupt v2
Tested-by: Audrey Grodzovsky <audrey.grodzovsky@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:50:18 -04:00
Chunming Zhou
c6a4079bad
drm/amdgpu: always enable EOP interrupt v2
...
v2 (chk): always enable EOP interrupt, independent of scheduler,
remove now unused delayed_irq handling.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:17 -04:00
Christian König
0753b45242
drm/amdgpu: remove amdgpu_fence_recreate
...
It's not used any more.
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-17 16:50:14 -04:00