DOORBELL and MMIO BOs never move once created.
No need to validate them after that.

Signed-off-by: Lang Yu <lang...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 34ba9e776521..45de9cadd771 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -808,6 +808,10 @@ static void add_kgd_mem_to_kfd_bo_list(struct kgd_mem *mem,
        struct ttm_validate_buffer *entry = &mem->validate_list;
        struct amdgpu_bo *bo = mem->bo;
 
+       if (mem->alloc_flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
+                               KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP))
+               return;
+
        INIT_LIST_HEAD(&entry->head);
        entry->num_shared = 1;
        entry->bo = &bo->tbo;
@@ -824,6 +828,10 @@ static void remove_kgd_mem_from_kfd_bo_list(struct kgd_mem 
*mem,
 {
        struct ttm_validate_buffer *bo_list_entry;
 
+       if (mem->alloc_flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
+                               KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP))
+               return;
+
        bo_list_entry = &mem->validate_list;
        mutex_lock(&process_info->lock);
        list_del(&bo_list_entry->head);
@@ -1649,7 +1657,6 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
        unsigned long bo_size = mem->bo->tbo.base.size;
        struct kfd_mem_attachment *entry, *tmp;
        struct bo_vm_reservation_context ctx;
-       struct ttm_validate_buffer *bo_list_entry;
        unsigned int mapped_to_gpu_memory;
        int ret;
        bool is_imported = false;
@@ -1677,10 +1684,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
        }
 
        /* Make sure restore workers don't access the BO any more */
-       bo_list_entry = &mem->validate_list;
-       mutex_lock(&process_info->lock);
-       list_del(&bo_list_entry->head);
-       mutex_unlock(&process_info->lock);
+       remove_kgd_mem_from_kfd_bo_list(mem, process_info);
 
        /* No more MMU notifiers */
        amdgpu_mn_unregister(mem->bo);
-- 
2.25.1

Reply via email to