aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3036-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/3036-drm-amdgpu-drop-client_id-from-VM.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3036-drm-amdgpu-drop-client_id-from-VM.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3036-drm-amdgpu-drop-client_id-from-VM.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3036-drm-amdgpu-drop-client_id-from-VM.patch
new file mode 100644
index 00000000..a0f6c10b
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3036-drm-amdgpu-drop-client_id-from-VM.patch
@@ -0,0 +1,108 @@
+From fbee84d3ada283a597d7c4b4a6b74f7952cc0d52 Mon Sep 17 00:00:00 2001
+From: Christian Koenig <christian.koenig@amd.com>
+Date: Mon, 18 Dec 2017 17:10:01 +0100
+Subject: [PATCH 3036/4131] drm/amdgpu: drop client_id from VM
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use the fence context from the scheduler entity.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
+
+Conflicts:
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+
+Change-Id: I65b07bc7ee13dcd52641c20a63eb8db71fc4be3a
+---
+ 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, 4 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
+index 9f938cb..f3143af 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->client_id) ||
++ (atomic64_read(&id->owner) != vm->entity.fence_context) ||
+ (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->client_id);
++ atomic64_set(&id->owner, vm->entity.fence_context);
+ 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->client_id)
++ if (atomic64_read(&id->owner) != vm->entity.fence_context)
+ 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->client_id);
++ atomic64_set(&id->owner, vm->entity.fence_context);
+
+ 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 00146a1..f11e1b0 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -2289,7 +2289,6 @@ 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);
+@@ -2572,7 +2571,6 @@ 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 71f4ac2..0cb4e7b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+@@ -195,8 +195,6 @@ 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];
+@@ -237,8 +235,6 @@ 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
+