drm/amdgpu: unlock mutex on error
authorDennis Li <Dennis.Li@amd.com>
Tue, 4 Aug 2020 04:32:13 +0000 (12:32 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 7 Aug 2020 21:31:26 +0000 (17:31 -0400)
Make sure to unlock the mutex when error happen

v2:
1. correct syntax error in the commit comments
2. remove change-Id

Acked-by: Nirmoy Das <nirmoy.das@amd.com>
Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
Signed-off-by: Dennis Li <Dennis.Li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c

index 92790db..9738dcc 100644 (file)
@@ -632,13 +632,14 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
        }
 
        ret = amdgpu_ib_schedule(ring, 1, ib, job, &f);
+
+       up_read(&adev->reset_sem);
+
        if (ret) {
                DRM_ERROR("amdgpu: failed to schedule IB.\n");
                goto err_ib_sched;
        }
 
-       up_read(&adev->reset_sem);
-
        ret = dma_fence_wait(f, false);
 
 err_ib_sched:
index 4e017f3..67a756f 100644 (file)
@@ -545,7 +545,7 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
                        }
                        ret = amdgpu_xgmi_update_topology(hive, tmp_adev);
                        if (ret)
-                               goto exit;
+                               goto exit_unlock;
                }
 
                /* get latest topology info for each device from psp */
@@ -558,7 +558,7 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
                                        tmp_adev->gmc.xgmi.node_id,
                                        tmp_adev->gmc.xgmi.hive_id, ret);
                                /* To do : continue with some node failed or disable the whole hive */
-                               goto exit;
+                               goto exit_unlock;
                        }
                }
        }
@@ -566,7 +566,7 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
        if (!ret)
                ret = amdgpu_xgmi_sysfs_add_dev_info(adev, hive);
 
-
+exit_unlock:
        mutex_unlock(&hive->hive_lock);
 exit:
        if (!ret)