aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch
new file mode 100644
index 00000000..4b504464
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3031-Revert-drm-amdgpu-drop-client_id-from-VM.patch
@@ -0,0 +1,102 @@
+From adcf35139e86f7c3543c2b7a1decd4d4b7aad965 Mon Sep 17 00:00:00 2001
+From: Kevin Wang <Kevin1.Wang@amd.com>
+Date: Fri, 29 Dec 2017 15:22:49 +0800
+Subject: [PATCH 3031/4131] Revert "drm/amdgpu: drop client_id from VM"
+
+This reverts commit 3c095c778a1daefd10587c51544caa302e355b2a.
+
+Reason: Re cherry-pick this commit for fix compile error
+
+Change-Id: If80c61329cce3ca688bb3c4c02c0ff116174aece
+Signed-off-by: Kevin Wang <Kevin1.Wang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 ++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 4 ++++
+ 3 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
+index 23ac9f1..1fe6f16 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
+@@ -119,7 +119,7 @@ static int amdgpu_vmid_grab_reserved_locked(struct amdgpu_vm *vm,
+
+ flushed = id->flushed_updates;
+ if ((amdgpu_vmid_had_gpu_reset(adev, id)) ||
+- (atomic64_read(&id->owner) != vm->entity.fence_context) ||
++ (atomic64_read(&id->owner) != vm->client_id) ||
+ (job->vm_pd_addr != id->pd_gpu_addr) ||
+ (updates && (!flushed || updates->context != flushed->context ||
+ dma_fence_is_later(updates, flushed))) ||
+@@ -148,7 +148,7 @@ static int amdgpu_vmid_grab_reserved_locked(struct amdgpu_vm *vm,
+ id->flushed_updates = dma_fence_get(updates);
+ }
+ id->pd_gpu_addr = job->vm_pd_addr;
+- atomic64_set(&id->owner, vm->entity.fence_context);
++ atomic64_set(&id->owner, vm->client_id);
+ job->vm_needs_flush = needs_flush;
+ if (needs_flush) {
+ dma_fence_put(id->last_flush);
+@@ -246,7 +246,7 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
+ if (amdgpu_vmid_had_gpu_reset(adev, id))
+ continue;
+
+- if (atomic64_read(&id->owner) != vm->entity.fence_context)
++ if (atomic64_read(&id->owner) != vm->client_id)
+ continue;
+
+ if (job->vm_pd_addr != id->pd_gpu_addr)
+@@ -295,7 +295,7 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
+ id->pd_gpu_addr = job->vm_pd_addr;
+ dma_fence_put(id->flushed_updates);
+ id->flushed_updates = dma_fence_get(updates);
+- atomic64_set(&id->owner, vm->entity.fence_context);
++ atomic64_set(&id->owner, vm->client_id);
+
+ needs_flush:
+ job->vm_needs_flush = true;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index bdc1afd..8297e57 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -2289,6 +2289,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,
+ uint64_t init_pde_value = 0;
+
+ vm->va = RB_ROOT_CACHED;
++ vm->client_id = atomic64_inc_return(&adev->vm_manager.client_counter);
+ for (i = 0; i < AMDGPU_MAX_VMHUBS; i++)
+ vm->reserved_vmid[i] = NULL;
+ spin_lock_init(&vm->status_lock);
+@@ -2571,6 +2572,7 @@ void amdgpu_vm_manager_init(struct amdgpu_device *adev)
+ adev->vm_manager.seqno[i] = 0;
+
+ atomic_set(&adev->vm_manager.vm_pte_next_ring, 0);
++ atomic64_set(&adev->vm_manager.client_counter, 0);
+ spin_lock_init(&adev->vm_manager.prt_lock);
+ atomic_set(&adev->vm_manager.num_prt_users, 0);
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+index 0cb4e7b..71f4ac2 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+@@ -195,6 +195,8 @@ struct amdgpu_vm {
+ /* Scheduler entity for page table updates */
+ struct drm_sched_entity entity;
+
++ /* client id and PASID (TODO: replace client_id with PASID) */
++ u64 client_id;
+ unsigned int pasid;
+ /* dedicated to vm */
+ struct amdgpu_vmid *reserved_vmid[AMDGPU_MAX_VMHUBS];
+@@ -235,6 +237,8 @@ struct amdgpu_vm_manager {
+ struct amdgpu_ring *vm_pte_rings[AMDGPU_MAX_RINGS];
+ unsigned vm_pte_num_rings;
+ atomic_t vm_pte_next_ring;
++ /* client id counter */
++ atomic64_t client_counter;
+
+ /* partial resident texture handling */
+ spinlock_t prt_lock;
+--
+2.7.4
+