[PATCH] drm/amdgpu: unlock mutex on error

Nirmoy nirmodas at amd.com
Wed Aug 5 09:26:30 UTC 2020


Please remove change-Id before pushing.

Acked-by: Nirmoy Das <nirmoy.das at amd.com>


On 8/5/20 10:41 AM, Dennis Li wrote:
> Make sure unlock the mutex when error happen
>
> Signed-off-by: Dennis Li <Dennis.Li at amd.com>
> Change-Id: I6c36a193df5fe70516282d8136b4eadf32d20915
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index a0ea663ecdbc..5e5369abc6fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -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:
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index 4e017f379eb6..67a756f4337b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -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)


More information about the amd-gfx mailing list