Christian König
d88bf583bd
drm/amdgpu: move VM fields into job
...
They are the same for all IBs.
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-05-11 13:30:31 -04:00
Christian König
92f250989b
drm/amdgpu: move the context from the IBs into the job
...
We only have one context for all IBs.
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-05-11 13:30:31 -04:00
Christian König
f153d2867b
drm/amdgpu: move context switch handling into common code v2
...
It was a source of bugs to repeat that in each IP version.
v2: rename parameter
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-05-11 13:30:30 -04:00
Christian König
9f8fb5a2b3
drm/amdgpu: move preamble IB handling into common code
...
This fixes the handling which was completely broken when you
ad more than one preamble IB.
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-05-11 13:30:30 -04:00
Christian König
aa3b73f67b
drm/amdgpu: use fence_context to judge ctx switch v2
...
Use of the ctx pointer is not safe, because they are likely already
be assigned to another ctx when doing comparing.
v2: recreate from scratch, avoid all unnecessary changes.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Monk.Liu <monk.liu@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-11 12:31:27 -04:00
Christian König
4d9c514d8c
drm/amdgpu: two minor 80 char fixes
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-11 12:31:18 -04:00
Monk Liu
794ff5710e
drm/amdgpu: hdp flush&inval should always do
...
This fixes Tonga vm-fault issue when running disaster
(a multiple context GL heavy tests),
We should always flush & invalidate hdp no matter vm
used or not.
Signed-off-by: Monk Liu <Monk.Liu@amd.com >
Reviewed-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 >
Cc: stable@vger.kernel.org
2016-05-11 12:31:17 -04:00
Monk Liu
c5637837ba
drm/amdgpu: keep vm in job instead of ib (v2)
...
ib.vm is a legacy way to get vm, after scheduler
implemented vm should be get from job, and all ibs
from one job share the same vm, no need to keep ib.vm
just move vm field to job.
this patch as well add job as paramter to ib_schedule
so it can get vm from job->vm.
v2: agd: sqaush in:
drm/amdgpu: check if ring emit_vm_flush exists in vm flush
No vm flush on engines that don't support VM.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=95195
Signed-off-by: Monk Liu <Monk.Liu@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-11 12:31:16 -04:00
Nils Wallménius
06ab6832ac
drm/amdgpu: Mark all instances of struct drm_info_list as const
...
All these are compile time constand and the
drm_debugfs_create/remove_files functions take a const
pointer argument.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Nils Wallménius <nils.wallmenius@gmail.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-04 20:20:10 -04:00
Christian König
41d9eb2c5a
drm/amdgpu: add a fence after the VM flush
...
This way we can track when the flush is done.
Signed-off-by: Christian König <christian.koenig@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-04 20:19:24 -04:00
Monk Liu
03ccf48198
drm/amdgpu: patch cond exec for SDMA
...
More ground work for conditional execution on SDMA
necessary for preemption.
Signed-off-by: Monk Liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-02 15:11:09 -04:00
Monk Liu
128cff1af6
drm/amdgpu: support cond exec
...
This adds the groundwork for conditional execution on
SDMA which is necessary for preemption.
Signed-off-by: Monk Liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-05-02 15:09:17 -04:00
Monk Liu
73cfa5f5ce
drm/amdgpu: move ib.fence to job.fence
...
Signed-off-by: Monk Liu <Monk.Liu@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-17 11:54:11 -04:00
Monk Liu
cc55c45db5
drm/amdgpu: give a fence param to ib_free
...
thus amdgpu_ib_free() can hook sched fence to SA manager
in later patches.
BTW:
for amdgpu_free_job(), it should only fence_put() the
fence of the last ib once, so fix it as well in this patch.
Signed-off-by: Monk Liu <Monk.Liu@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-17 11:53:34 -04:00
Christian König
971fe9a941
drm/amdgpu: switch the GDS only on demand v2
...
Switching the GDS space to often seems to be problematic.
This patch together with the following can avoid VM faults on context switch.
v2: extend commit message a bit
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 > (v1)
2016-03-08 11:01:49 -05:00
Christian König
cffadc83c7
drm/amdgpu: move the GDS switch into vm flush as well
...
After all it's an operation on the VMID.
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
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
Chunming Zhou
11afbde85e
drm/amdgpu: add hdp_invalidate function
...
It's called after emitting ibs.
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-03-08 11:01:41 -05:00
Christian König
4ff37a83f1
drm/amdgpu: fix VM faults caused by vm_grab_id() v4
...
The owner must be per ring as long as we don't
support sharing VMIDs per process. Also move the
assigned VMID and page directory address into the
IB structure.
v3: assign the VMID to all IBs, not just the first one.
v4: use correct pointer for owner
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-29 11:33:46 -05:00
Christian König
e86f9ceee1
drm/amdgpu: move sync into job object
...
No need to keep that for every IB.
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-02-10 14:17:24 -05:00
Christian König
ec72b8006c
drm/amdgpu: directly return fence from ib_schedule
...
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-02-10 14:17:21 -05:00
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
867d0517c7
drm/amdgpu: remove AMDGPU_NUM_SYNCS
...
Just a leftover from semaphores.
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:17 -05:00
Christian König
8a8f0b48a0
drm/amdgpu: remove adev and fence from amdgpu_sync_free
...
Just leftovers from the semaphores.
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:17 -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
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
Chunming Zhou
be86c606b5
drm/amdgpu: cleanup amdgpu_sync_rings V2
...
No longer needed now that semaphores are gone.
V2: remove the first amdgpu_sync_wait in amdgpu_ib_schedule
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Ken Wang <Qingqing.Wang@amd.com > (V1)
Reviewed-by: Monk Liu <monk.liu@amd.com > (V2)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2016-02-10 14:16:50 -05:00
Junwei Zhang
bbf0b34578
drm/amdgpu: remove the unnecessary parameter adev for amdgpu_sa_bo_new()
...
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 17:01:32 -05:00
Christian König
16ae42feb0
drm/amdgpu: use common fence for amdgpu_vm_fence
...
Just cleanup the function parameters.
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-16 11:05:49 -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
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
Christian König
f91b3a6941
drm/amdgpu: fix fence wait in sync_fence, instead should be in sync_rings
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Christian K?nig <christian.koenig@amd.com >
2015-08-25 10:39:39 -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
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
Christian König
b203dd9594
drm/amdgpu: fix zeroing all IB fields manually v2
...
The problem now is that we don't necessarily call amdgpu_ib_get()
in some error paths and so work with uninitialized data.
Better require that the memory is already zeroed.
v2: better commit message
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com > (v1)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-20 17:05:34 -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
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
Christian König
5430a3ffb0
drm/amdgpu: fix UVD/VCE fence handling
...
We need to return the sequence number to userspace
even when we don't use user fences.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-08-17 16:50:18 -04:00
Christian König
7f8a5290f5
drm/amdgpu: rework vm_grab_id interface
...
This makes assigning VM IDs independent from the use of VM IDs.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-08-17 16:50:16 -04:00
Christian König
21c16bf634
drm/amdgpu: add user fence context map v2
...
This is a prerequisite for the GPU scheduler to make the order
of submission independent from the order of execution.
v2: properly implement the locking
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
Christian König
91e1a5207e
drm/amdgpu: deal with foreign fences in amdgpu_sync
...
This also requires some error handling from the callers of that function.
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:13 -04:00
monk.liu
e722b71a54
drm/amdgpu: hdp_flush is not needed for inside IB
...
hdp flush is not needed for IBs that dispatched from kernel inside
because there is no video memory host access
Signed-off-by: monk.liu <monk.liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-07-29 16:06:17 -04:00
Chunming Zhou
890ee23fc6
drm/amdgpu: disable user fence interrupt (v2)
...
amdgpu submits both kernel and user fences, but just need one interrupt,
disable user fence interrupt and don't effect user fence.
v2: fix merge error
Signed-off-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-06-05 11:02:06 -04:00
Christian König
3cb485f340
drm/amdgpu: fix context switch
...
Properly protect the state and also handle submission failures.
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 >
Reviewed-by: Monk Liu <monk.liu@amd.com >
2015-06-03 21:03:34 -04:00
Christian König
d919ad49ac
drm/amdgpu: fix dereference before check
...
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 >
Reviewed-by: Monk Liu <monk.liu@amd.com >
2015-06-03 21:03:33 -04:00
Christian König
d2edb07b10
drm/amdgpu: cleanup HDP flush handling
...
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 >
Reviewed-by: Monk Liu <monk.liu@amd.com >
2015-06-03 21:03:32 -04:00
Christian König
66782cec7a
drm/amdgpu: always emit GDS switch
...
Otherwise a process can access the GDS data of another process.
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 >
Reviewed-by: Monk Liu <monk.liu@amd.com >
2015-06-03 21:03:31 -04:00
Jammy Zhou
de807f818b
drm/amdgpu: add flags for amdgpu_ib structure
...
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-06-03 21:03:30 -04:00