[PATCH] drm/amdgpu: Unpin BO if we can't get fences in amdgpu_crtc_page_flip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 24.06.2016 um 10:30 schrieb Michel Dänzer:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> If reservation_object_get_fences_rcu failed, we'd previously go directly
> to the cleanup label, so we'd leave the BO pinned.
>
> While we're at it, remove two amdgpu_bo_unreserve calls in favour of two
> new labels.
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

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

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index 7268030..de95ea7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -220,19 +220,17 @@ int amdgpu_crtc_page_flip(struct drm_crtc *crtc,
>   
>   	r = amdgpu_bo_pin_restricted(new_rbo, AMDGPU_GEM_DOMAIN_VRAM, 0, 0, &base);
>   	if (unlikely(r != 0)) {
> -		amdgpu_bo_unreserve(new_rbo);
>   		r = -EINVAL;
>   		DRM_ERROR("failed to pin new rbo buffer before flip\n");
> -		goto cleanup;
> +		goto unreserve;
>   	}
>   
>   	r = reservation_object_get_fences_rcu(new_rbo->tbo.resv, &work->excl,
>   					      &work->shared_count,
>   					      &work->shared);
>   	if (unlikely(r != 0)) {
> -		amdgpu_bo_unreserve(new_rbo);
>   		DRM_ERROR("failed to get fences for buffer\n");
> -		goto cleanup;
> +		goto unpin;
>   	}
>   
>   	amdgpu_bo_get_tiling_flags(new_rbo, &tiling_flags);
> @@ -275,9 +273,11 @@ pflip_cleanup:
>   		DRM_ERROR("failed to reserve new rbo in error path\n");
>   		goto cleanup;
>   	}
> +unpin:
>   	if (unlikely(amdgpu_bo_unpin(new_rbo) != 0)) {
>   		DRM_ERROR("failed to unpin new rbo in error path\n");
>   	}
> +unreserve:
>   	amdgpu_bo_unreserve(new_rbo);
>   
>   cleanup:



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux