OSDN Git Service

drm/amdgpu: shrink critical section in amdgpu_amdkfd_gpuvm_free_memory_of_gpu
authorBernard Zhao <bernard@vivo.com>
Tue, 21 Apr 2020 06:48:18 +0000 (23:48 -0700)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 23 Apr 2020 19:39:53 +0000 (15:39 -0400)
Reduce the mem->lock`s protected code area, no need to protect pr_debug.
This also simplifies error handling.

Signed-off-by: Bernard Zhao <bernard@vivo.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

index d62f4ad..0768b7e 100644 (file)
@@ -1284,22 +1284,22 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
        struct kfd_bo_va_list *entry, *tmp;
        struct bo_vm_reservation_context ctx;
        struct ttm_validate_buffer *bo_list_entry;
+       unsigned int mapped_to_gpu_memory;
        int ret;
 
        mutex_lock(&mem->lock);
+       mapped_to_gpu_memory = mem->mapped_to_gpu_memory;
+       mutex_unlock(&mem->lock);
+       /* lock is not needed after this, since mem is unused and will
+        * be freed anyway
+        */
 
-       if (mem->mapped_to_gpu_memory > 0) {
+       if (mapped_to_gpu_memory > 0) {
                pr_debug("BO VA 0x%llx size 0x%lx is still mapped.\n",
                                mem->va, bo_size);
-               mutex_unlock(&mem->lock);
                return -EBUSY;
        }
 
-       mutex_unlock(&mem->lock);
-       /* lock is not needed after this, since mem is unused and will
-        * be freed anyway
-        */
-
        /* No more MMU notifiers */
        amdgpu_mn_unregister(mem->bo);