[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