aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch')
-rw-r--r--common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch188
1 files changed, 0 insertions, 188 deletions
diff --git a/common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch b/common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch
deleted file mode 100644
index ced1e96d..00000000
--- a/common/recipes-kernel/linux/files/0238-drm-amdgpu-merge-vm_grab_id-and-vm_fence-v2.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From 26ec1581529fbccb5bfbf5ec61d2711dd9c38622 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Mon, 18 Jan 2016 17:01:42 +0100
-Subject: [PATCH 0238/1110] drm/amdgpu: merge vm_grab_id and vm_fence v2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-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>
-Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 5 +--
- drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 13 +++----
- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 57 ++++++++++++++-----------------
- 3 files changed, 30 insertions(+), 45 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index f970afa..64784e4 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -924,13 +924,10 @@ void amdgpu_vm_get_pt_bos(struct amdgpu_vm *vm, struct list_head *duplicates);
- void amdgpu_vm_move_pt_bos_in_lru(struct amdgpu_device *adev,
- struct amdgpu_vm *vm);
- int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
-- struct amdgpu_sync *sync);
-+ struct amdgpu_sync *sync, struct fence *fence);
- void amdgpu_vm_flush(struct amdgpu_ring *ring,
- struct amdgpu_vm *vm,
- struct fence *updates);
--void amdgpu_vm_fence(struct amdgpu_device *adev,
-- struct amdgpu_vm *vm,
-- struct fence *fence);
- uint64_t amdgpu_vm_map_gart(struct amdgpu_device *adev, uint64_t addr);
- int amdgpu_vm_update_page_directory(struct amdgpu_device *adev,
- struct amdgpu_vm *vm);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
-index b22a95f..76a1f82 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
-@@ -38,19 +38,14 @@ static struct fence *amdgpu_sched_dependency(struct amd_sched_job *sched_job)
-
- if (fence == NULL && vm && !job->ibs->grabbed_vmid) {
- struct amdgpu_ring *ring = job->ibs->ring;
-- struct amdgpu_device *adev = ring->adev;
- int r;
-
-- mutex_lock(&adev->vm_manager.lock);
-- r = amdgpu_vm_grab_id(vm, ring, sync);
-- if (r) {
-+ r = amdgpu_vm_grab_id(vm, ring, sync,
-+ &job->base.s_fence->base);
-+ if (r)
- DRM_ERROR("Error getting VM ID (%d)\n", r);
-- } else {
-- fence = &job->base.s_fence->base;
-- amdgpu_vm_fence(ring->adev, vm, fence);
-+ else
- job->ibs->grabbed_vmid = true;
-- }
-- mutex_unlock(&adev->vm_manager.lock);
-
- fence = amdgpu_sync_get_fence(sync);
- }
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-index e688fcf..38ab4a5 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -159,13 +159,14 @@ void amdgpu_vm_move_pt_bos_in_lru(struct amdgpu_device *adev,
- * @vm: vm to allocate id for
- * @ring: ring we want to submit job to
- * @sync: sync object where we add dependencies
-+ * @fence: fence protecting ID from reuse
- *
- * Allocate an id for the vm, adding fences to the sync obj as necessary.
- *
- * Global mutex must be locked!
- */
- int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
-- struct amdgpu_sync *sync)
-+ struct amdgpu_sync *sync, struct fence *fence)
- {
- struct fence *best[AMDGPU_MAX_RINGS] = {};
- struct amdgpu_vm_id *vm_id = &vm->ids[ring->idx];
-@@ -174,6 +175,8 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
- unsigned choices[2] = {};
- unsigned i;
-
-+ mutex_lock(&adev->vm_manager.lock);
-+
- /* check if the id is still valid */
- if (vm_id->id) {
- unsigned id = vm_id->id;
-@@ -182,6 +185,9 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
- owner = atomic_long_read(&adev->vm_manager.ids[id].owner);
- if (owner == (long)vm) {
- trace_amdgpu_vm_grab_id(vm, vm_id->id, ring->idx);
-+ fence_put(adev->vm_manager.ids[id].active);
-+ adev->vm_manager.ids[id].active = fence_get(fence);
-+ mutex_unlock(&adev->vm_manager.lock);
- return 0;
- }
- }
-@@ -198,6 +204,7 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
- /* found a free one */
- vm_id->id = i;
- trace_amdgpu_vm_grab_id(vm, i, ring->idx);
-+ mutex_unlock(&adev->vm_manager.lock);
- return 0;
- }
-
-@@ -210,19 +217,29 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
- }
-
- for (i = 0; i < 2; ++i) {
-- if (choices[i]) {
-- struct fence *fence;
-+ struct fence *active;
-+ int r;
-
-- fence = adev->vm_manager.ids[choices[i]].active;
-- vm_id->id = choices[i];
-+ if (!choices[i])
-+ continue;
-
-- trace_amdgpu_vm_grab_id(vm, choices[i], ring->idx);
-- return amdgpu_sync_fence(ring->adev, sync, fence);
-- }
-+ vm_id->id = choices[i];
-+ active = adev->vm_manager.ids[vm_id->id].active;
-+ r = amdgpu_sync_fence(ring->adev, sync, active);
-+
-+ trace_amdgpu_vm_grab_id(vm, choices[i], ring->idx);
-+ atomic_long_set(&adev->vm_manager.ids[vm_id->id].owner, (long)vm);
-+
-+ fence_put(adev->vm_manager.ids[vm_id->id].active);
-+ adev->vm_manager.ids[vm_id->id].active = fence_get(fence);
-+
-+ mutex_unlock(&adev->vm_manager.lock);
-+ return r;
- }
-
- /* should never happen */
- BUG();
-+ mutex_unlock(&adev->vm_manager.lock);
- return -EINVAL;
- }
-
-@@ -265,30 +282,6 @@ void amdgpu_vm_flush(struct amdgpu_ring *ring,
- }
-
- /**
-- * amdgpu_vm_fence - remember fence for vm
-- *
-- * @adev: amdgpu_device pointer
-- * @vm: vm we want to fence
-- * @fence: fence to remember
-- *
-- * Fence the vm (cayman+).
-- * Set the fence used to protect page table and id.
-- *
-- * Global and local mutex must be locked!
-- */
--void amdgpu_vm_fence(struct amdgpu_device *adev,
-- struct amdgpu_vm *vm,
-- struct fence *fence)
--{
-- struct amdgpu_ring *ring = amdgpu_ring_from_fence(fence);
-- unsigned vm_id = vm->ids[ring->idx].id;
--
-- fence_put(adev->vm_manager.ids[vm_id].active);
-- adev->vm_manager.ids[vm_id].active = fence_get(fence);
-- atomic_long_set(&adev->vm_manager.ids[vm_id].owner, (long)vm);
--}
--
--/**
- * amdgpu_vm_bo_find - find the bo_va for a specific vm & bo
- *
- * @vm: requested vm
---
-2.7.4
-