[PATCH] drm/amdgpu: print more accurate error messages on IB submission failure

Alex Deucher alexdeucher at gmail.com
Mon Aug 1 17:52:12 UTC 2016


On Mon, Aug 1, 2016 at 1:42 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> It's useful for debugging.
>
> Signed-off-by: Marek Olšák <marek.olsak at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 17 +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index 45d5227..e4617c4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -387,8 +387,10 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>
>                 r = ttm_eu_reserve_buffers(&p->ticket, &p->validated, true,
>                                            &duplicates);
> -               if (unlikely(r != 0))
> +               if (unlikely(r != 0)) {
> +                       DRM_ERROR("ttm_eu_reserve_buffers failed.\n");
>                         goto error_free_pages;
> +               }
>
>                 /* Without a BO list we don't have userptr BOs */
>                 if (!p->bo_list)
> @@ -428,9 +430,10 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>                 /* Unreserve everything again. */
>                 ttm_eu_backoff_reservation(&p->ticket, &p->validated);
>
> -               /* We tried to often, just abort */
> +               /* We tried too many times, just abort */
>                 if (!--tries) {
>                         r = -EDEADLK;
> +                       DRM_ERROR("deadlock in %s\n", __func__);
>                         goto error_free_pages;
>                 }
>
> @@ -442,11 +445,13 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>                                                          sizeof(struct page*));
>                         if (!e->user_pages) {
>                                 r = -ENOMEM;
> +                               DRM_ERROR("calloc failure in %s\n", __func__);
>                                 goto error_free_pages;
>                         }
>
>                         r = amdgpu_ttm_tt_get_user_pages(ttm, e->user_pages);
>                         if (r) {
> +                               DRM_ERROR("amdgpu_ttm_tt_get_user_pages failed.\n");
>                                 drm_free_large(e->user_pages);
>                                 e->user_pages = NULL;
>                                 goto error_free_pages;
> @@ -463,12 +468,16 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>         p->bytes_moved = 0;
>
>         r = amdgpu_cs_list_validate(p, &duplicates);
> -       if (r)
> +       if (r) {
> +               DRM_ERROR("amdgpu_cs_list_validate(duplicates) failed.\n");
>                 goto error_validate;
> +       }
>
>         r = amdgpu_cs_list_validate(p, &p->validated);
> -       if (r)
> +       if (r) {
> +               DRM_ERROR("amdgpu_cs_list_validate(validated) failed.\n");
>                 goto error_validate;
> +       }
>
>         fpriv->vm.last_eviction_counter =
>                 atomic64_read(&p->adev->num_evictions);
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list