[PATCH 6/6] drm/radeon: use dma_resv_wait_timeout() instead of manually waiting
Christian König
ckoenig.leichtzumerken at gmail.com
Wed Nov 3 07:55:11 UTC 2021
Ping, Alex do you have a moment for that one here?
Am 28.10.21 um 15:26 schrieb Christian König:
> Don't touch the exclusive fence manually here, but rather use the
> general dma_resv function. We did that for better hw reset handling but
> this doesn't necessary work correctly.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/radeon/radeon_uvd.c | 13 +++++--------
> 1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c
> index 2ea86919d953..377f9cdb5b53 100644
> --- a/drivers/gpu/drm/radeon/radeon_uvd.c
> +++ b/drivers/gpu/drm/radeon/radeon_uvd.c
> @@ -469,7 +469,6 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
> {
> int32_t *msg, msg_type, handle;
> unsigned img_size = 0;
> - struct dma_fence *f;
> void *ptr;
>
> int i, r;
> @@ -479,13 +478,11 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
> return -EINVAL;
> }
>
> - f = dma_resv_excl_fence(bo->tbo.base.resv);
> - if (f) {
> - r = radeon_fence_wait((struct radeon_fence *)f, false);
> - if (r) {
> - DRM_ERROR("Failed waiting for UVD message (%d)!\n", r);
> - return r;
> - }
> + r = dma_resv_wait_timeout(bo->tbo.base.resv, false, false,
> + MAX_SCHEDULE_TIMEOUT);
> + if (r <= 0) {
> + DRM_ERROR("Failed waiting for UVD message (%d)!\n", r);
> + return r ? r : -ETIME;
> }
>
> r = radeon_bo_kmap(bo, &ptr);
More information about the dri-devel
mailing list