diff options
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 |
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 | ||
| 890 | struct amdgpu_vm_id { | 894 | struct 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 | ||
| 929 | void amdgpu_vm_manager_init(struct amdgpu_device *adev); | 935 | void 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 | /** |
