aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 113fd4bf9b64..e72cf4518c30 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -363,6 +363,7 @@ struct amdgpu_fence_driver {
363/* some special values for the owner field */ 363/* some special values for the owner field */
364#define AMDGPU_FENCE_OWNER_UNDEFINED ((void*)0ul) 364#define AMDGPU_FENCE_OWNER_UNDEFINED ((void*)0ul)
365#define AMDGPU_FENCE_OWNER_VM ((void*)1ul) 365#define AMDGPU_FENCE_OWNER_VM ((void*)1ul)
366#define AMDGPU_CLIENT_ID_RESERVED 2
366 367
367#define AMDGPU_FENCE_FLAG_64BIT (1 << 0) 368#define AMDGPU_FENCE_FLAG_64BIT (1 << 0)
368#define AMDGPU_FENCE_FLAG_INT (1 << 1) 369#define AMDGPU_FENCE_FLAG_INT (1 << 1)
@@ -885,6 +886,9 @@ struct amdgpu_vm {
885 886
886 /* Scheduler entity for page table updates */ 887 /* Scheduler entity for page table updates */
887 struct amd_sched_entity entity; 888 struct amd_sched_entity entity;
889
890 /* client id */
891 u64 client_id;
888}; 892};
889 893
890struct amdgpu_vm_id { 894struct amdgpu_vm_id {
@@ -924,6 +928,8 @@ struct amdgpu_vm_manager {
924 struct amdgpu_ring *vm_pte_rings[AMDGPU_MAX_RINGS]; 928 struct amdgpu_ring *vm_pte_rings[AMDGPU_MAX_RINGS];
925 unsigned vm_pte_num_rings; 929 unsigned vm_pte_num_rings;
926 atomic_t vm_pte_next_ring; 930 atomic_t vm_pte_next_ring;
931 /* client id counter */
932 atomic64_t client_counter;
927}; 933};
928 934
929void amdgpu_vm_manager_init(struct amdgpu_device *adev); 935void amdgpu_vm_manager_init(struct amdgpu_device *adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index e06d0661549f..275378c46b9f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1386,6 +1386,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
1386 for (i = 0; i < AMDGPU_MAX_RINGS; ++i) 1386 for (i = 0; i < AMDGPU_MAX_RINGS; ++i)
1387 vm->ids[i] = NULL; 1387 vm->ids[i] = NULL;
1388 vm->va = RB_ROOT; 1388 vm->va = RB_ROOT;
1389 vm->client_id = atomic64_inc_return(&adev->vm_manager.client_counter);
1389 spin_lock_init(&vm->status_lock); 1390 spin_lock_init(&vm->status_lock);
1390 INIT_LIST_HEAD(&vm->invalidated); 1391 INIT_LIST_HEAD(&vm->invalidated);
1391 INIT_LIST_HEAD(&vm->cleared); 1392 INIT_LIST_HEAD(&vm->cleared);
@@ -1514,6 +1515,7 @@ void amdgpu_vm_manager_init(struct amdgpu_device *adev)
1514 } 1515 }
1515 1516
1516 atomic_set(&adev->vm_manager.vm_pte_next_ring, 0); 1517 atomic_set(&adev->vm_manager.vm_pte_next_ring, 0);
1518 atomic64_set(&adev->vm_manager.client_counter, AMDGPU_CLIENT_ID_RESERVED);
1517} 1519}
1518 1520
1519/** 1521/**