aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
authorAndres Rodriguez <andresx7@gmail.com>2017-09-15 20:44:06 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-10-09 16:30:19 -0400
commit177ae09b5d699a5ebd1cafcee78889db968abf54 (patch)
treea05b42c1155df2dac688952df8378315a7849980 /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
parentb82485fd384a56c27fae44e649552eca6334237a (diff)
drm/amdgpu: introduce AMDGPU_GEM_CREATE_EXPLICIT_SYNC v2
Introduce a flag to signal that access to a BO will be synchronized through an external mechanism. Currently all buffers shared between contexts are subject to implicit synchronization. However, this is only required for protocols that currently don't support an explicit synchronization mechanism (DRI2/3). This patch introduces the AMDGPU_GEM_CREATE_EXPLICIT_SYNC, so that users can specify when it is safe to disable implicit sync. v2: only disable explicit sync in amdgpu_cs_ioctl Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Andres Rodriguez <andresx7@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index eb4a01c14eee..c559d76ff695 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1035,7 +1035,7 @@ static int amdgpu_vm_wait_pd(struct amdgpu_device *adev, struct amdgpu_vm *vm,
1035 int r; 1035 int r;
1036 1036
1037 amdgpu_sync_create(&sync); 1037 amdgpu_sync_create(&sync);
1038 amdgpu_sync_resv(adev, &sync, vm->root.base.bo->tbo.resv, owner); 1038 amdgpu_sync_resv(adev, &sync, vm->root.base.bo->tbo.resv, owner, false);
1039 r = amdgpu_sync_wait(&sync, true); 1039 r = amdgpu_sync_wait(&sync, true);
1040 amdgpu_sync_free(&sync); 1040 amdgpu_sync_free(&sync);
1041 1041
@@ -1176,11 +1176,11 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
1176 amdgpu_ring_pad_ib(ring, params.ib); 1176 amdgpu_ring_pad_ib(ring, params.ib);
1177 amdgpu_sync_resv(adev, &job->sync, 1177 amdgpu_sync_resv(adev, &job->sync,
1178 parent->base.bo->tbo.resv, 1178 parent->base.bo->tbo.resv,
1179 AMDGPU_FENCE_OWNER_VM); 1179 AMDGPU_FENCE_OWNER_VM, false);
1180 if (shadow) 1180 if (shadow)
1181 amdgpu_sync_resv(adev, &job->sync, 1181 amdgpu_sync_resv(adev, &job->sync,
1182 shadow->tbo.resv, 1182 shadow->tbo.resv,
1183 AMDGPU_FENCE_OWNER_VM); 1183 AMDGPU_FENCE_OWNER_VM, false);
1184 1184
1185 WARN_ON(params.ib->length_dw > ndw); 1185 WARN_ON(params.ib->length_dw > ndw);
1186 r = amdgpu_job_submit(job, ring, &vm->entity, 1186 r = amdgpu_job_submit(job, ring, &vm->entity,
@@ -1644,7 +1644,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
1644 goto error_free; 1644 goto error_free;
1645 1645
1646 r = amdgpu_sync_resv(adev, &job->sync, vm->root.base.bo->tbo.resv, 1646 r = amdgpu_sync_resv(adev, &job->sync, vm->root.base.bo->tbo.resv,
1647 owner); 1647 owner, false);
1648 if (r) 1648 if (r)
1649 goto error_free; 1649 goto error_free;
1650 1650