diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 07ff3b1514f1..1bf36c3542c1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -672,6 +672,7 @@ void amdgpu_vm_reset_id(struct amdgpu_device *adev, unsigned vmhub, | |||
672 | struct amdgpu_vm_id_manager *id_mgr = &adev->vm_manager.id_mgr[vmhub]; | 672 | struct amdgpu_vm_id_manager *id_mgr = &adev->vm_manager.id_mgr[vmhub]; |
673 | struct amdgpu_vm_id *id = &id_mgr->ids[vmid]; | 673 | struct amdgpu_vm_id *id = &id_mgr->ids[vmid]; |
674 | 674 | ||
675 | atomic64_set(&id->owner, 0); | ||
675 | id->gds_base = 0; | 676 | id->gds_base = 0; |
676 | id->gds_size = 0; | 677 | id->gds_size = 0; |
677 | id->gws_base = 0; | 678 | id->gws_base = 0; |
@@ -681,6 +682,26 @@ void amdgpu_vm_reset_id(struct amdgpu_device *adev, unsigned vmhub, | |||
681 | } | 682 | } |
682 | 683 | ||
683 | /** | 684 | /** |
685 | * amdgpu_vm_reset_all_id - reset VMID to zero | ||
686 | * | ||
687 | * @adev: amdgpu device structure | ||
688 | * | ||
689 | * Reset VMID to force flush on next use | ||
690 | */ | ||
691 | void amdgpu_vm_reset_all_ids(struct amdgpu_device *adev) | ||
692 | { | ||
693 | unsigned i, j; | ||
694 | |||
695 | for (i = 0; i < AMDGPU_MAX_VMHUBS; ++i) { | ||
696 | struct amdgpu_vm_id_manager *id_mgr = | ||
697 | &adev->vm_manager.id_mgr[i]; | ||
698 | |||
699 | for (j = 1; j < id_mgr->num_ids; ++j) | ||
700 | amdgpu_vm_reset_id(adev, i, j); | ||
701 | } | ||
702 | } | ||
703 | |||
704 | /** | ||
684 | * amdgpu_vm_bo_find - find the bo_va for a specific vm & bo | 705 | * amdgpu_vm_bo_find - find the bo_va for a specific vm & bo |
685 | * | 706 | * |
686 | * @vm: requested vm | 707 | * @vm: requested vm |
@@ -2270,7 +2291,6 @@ void amdgpu_vm_manager_init(struct amdgpu_device *adev) | |||
2270 | for (i = 0; i < AMDGPU_MAX_RINGS; ++i) | 2291 | for (i = 0; i < AMDGPU_MAX_RINGS; ++i) |
2271 | adev->vm_manager.seqno[i] = 0; | 2292 | adev->vm_manager.seqno[i] = 0; |
2272 | 2293 | ||
2273 | |||
2274 | atomic_set(&adev->vm_manager.vm_pte_next_ring, 0); | 2294 | atomic_set(&adev->vm_manager.vm_pte_next_ring, 0); |
2275 | atomic64_set(&adev->vm_manager.client_counter, 0); | 2295 | atomic64_set(&adev->vm_manager.client_counter, 0); |
2276 | spin_lock_init(&adev->vm_manager.prt_lock); | 2296 | spin_lock_init(&adev->vm_manager.prt_lock); |