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

Christian König deathsimple at vodafone.de
Wed Aug 3 12:01:05 UTC 2016


Am 01.08.2016 um 19:52 schrieb Alex Deucher:
> 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>

If you haven't already committed it the patch is Reviewed-by: Christian 
König <christian.koenig at amd.com> as well.

Regards,
Christian.

>
>> ---
>>   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
> _______________________________________________
> 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