[PATCH] drm/amdgpu: Fix use of interruptible waiting

Christian König deathsimple at vodafone.de
Wed Apr 26 08:32:27 UTC 2017


Am 25.04.2017 um 21:32 schrieb Alex Xie:
> Either in cgs functions or for callers of cgs functions:
> 1. The signal interrupt can affect the expected behaviour
> 2. There is no good mechanism to handle the corresponding error
> 3. There is no chance of deadlock in these single BO waiting
> 4. There is no clear benefit for interruptible waiting
> 5. Future caller of these functions might have same issue.
>
> Change-Id: Ifc0e0ab862f98cdc6cdaef87cd96f11c91d64f27
> Signed-off-by: Alex Xie <AlexBin.Xie at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

BTW: We should probably tidy up amdgpu_cgs.c. Most of this stuff is 
actually not used anywhere.

Regards,
Christian.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 14 +++++++-------
>   1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> index a1a2d44..31fe4ca 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> @@ -89,7 +89,7 @@ static int amdgpu_cgs_gmap_kmem(struct cgs_device *cgs_device, void *kmem,
>   			       AMDGPU_GEM_DOMAIN_GTT, 0, sg, NULL, &bo);
>   	if (ret)
>   		return ret;
> -	ret = amdgpu_bo_reserve(bo, false);
> +	ret = amdgpu_bo_reserve(bo, true);
>   	if (unlikely(ret != 0))
>   		return ret;
>   
> @@ -107,7 +107,7 @@ static int amdgpu_cgs_gunmap_kmem(struct cgs_device *cgs_device, cgs_handle_t km
>   	struct amdgpu_bo *obj = (struct amdgpu_bo *)kmem_handle;
>   
>   	if (obj) {
> -		int r = amdgpu_bo_reserve(obj, false);
> +		int r = amdgpu_bo_reserve(obj, true);
>   		if (likely(r == 0)) {
>   			amdgpu_bo_unpin(obj);
>   			amdgpu_bo_unreserve(obj);
> @@ -215,7 +215,7 @@ static int amdgpu_cgs_free_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t h
>   	struct amdgpu_bo *obj = (struct amdgpu_bo *)handle;
>   
>   	if (obj) {
> -		int r = amdgpu_bo_reserve(obj, false);
> +		int r = amdgpu_bo_reserve(obj, true);
>   		if (likely(r == 0)) {
>   			amdgpu_bo_kunmap(obj);
>   			amdgpu_bo_unpin(obj);
> @@ -239,7 +239,7 @@ static int amdgpu_cgs_gmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t h
>   	min_offset = obj->placements[0].fpfn << PAGE_SHIFT;
>   	max_offset = obj->placements[0].lpfn << PAGE_SHIFT;
>   
> -	r = amdgpu_bo_reserve(obj, false);
> +	r = amdgpu_bo_reserve(obj, true);
>   	if (unlikely(r != 0))
>   		return r;
>   	r = amdgpu_bo_pin_restricted(obj, obj->prefered_domains,
> @@ -252,7 +252,7 @@ static int amdgpu_cgs_gunmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t
>   {
>   	int r;
>   	struct amdgpu_bo *obj = (struct amdgpu_bo *)handle;
> -	r = amdgpu_bo_reserve(obj, false);
> +	r = amdgpu_bo_reserve(obj, true);
>   	if (unlikely(r != 0))
>   		return r;
>   	r = amdgpu_bo_unpin(obj);
> @@ -265,7 +265,7 @@ static int amdgpu_cgs_kmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t h
>   {
>   	int r;
>   	struct amdgpu_bo *obj = (struct amdgpu_bo *)handle;
> -	r = amdgpu_bo_reserve(obj, false);
> +	r = amdgpu_bo_reserve(obj, true);
>   	if (unlikely(r != 0))
>   		return r;
>   	r = amdgpu_bo_kmap(obj, map);
> @@ -277,7 +277,7 @@ static int amdgpu_cgs_kunmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t
>   {
>   	int r;
>   	struct amdgpu_bo *obj = (struct amdgpu_bo *)handle;
> -	r = amdgpu_bo_reserve(obj, false);
> +	r = amdgpu_bo_reserve(obj, true);
>   	if (unlikely(r != 0))
>   		return r;
>   	amdgpu_bo_kunmap(obj);




More information about the amd-gfx mailing list