[PATCH 2/2] drm/amdgpu: remove pointless ttm_eu usage from DM

Christian König christian.koenig at amd.com
Tue Apr 19 14:42:56 UTC 2022


Am 19.04.22 um 16:37 schrieb Harry Wentland:
>
>
> On 2022-04-19 10:19, Christian König wrote:
>> We just need to reserve the BO here, no need for using ttm_eu.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>
> Acked-by: Harry Wentland <harry.wentland at amd.com>

What about the second patch? Who takes care of amdgpu_vkms.c? You guys 
or should I ping Alex?

Thanks,
Christian.

>
> Harry
>
>> ---
>>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 32 ++++++++++---------
>>   1 file changed, 17 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
>> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> index 73423b805b54..91e9922b95b3 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> @@ -7583,9 +7583,6 @@ static int dm_plane_helper_prepare_fb(struct 
>> drm_plane *plane,
>>       struct amdgpu_device *adev;
>>       struct amdgpu_bo *rbo;
>>       struct dm_plane_state *dm_plane_state_new, *dm_plane_state_old;
>> -    struct list_head list;
>> -    struct ttm_validate_buffer tv;
>> -    struct ww_acquire_ctx ticket;
>>       uint32_t domain;
>>       int r;
>>   @@ -7598,18 +7595,19 @@ static int 
>> dm_plane_helper_prepare_fb(struct drm_plane *plane,
>>       obj = new_state->fb->obj[0];
>>       rbo = gem_to_amdgpu_bo(obj);
>>       adev = amdgpu_ttm_adev(rbo->tbo.bdev);
>> -    INIT_LIST_HEAD(&list);
>>   -    tv.bo = &rbo->tbo;
>> -    tv.num_shared = 1;
>> -    list_add(&tv.head, &list);
>> -
>> -    r = ttm_eu_reserve_buffers(&ticket, &list, false, NULL);
>> +    r = amdgpu_bo_reserve(rbo, true);
>>       if (r) {
>>           dev_err(adev->dev, "fail to reserve bo (%d)\n", r);
>>           return r;
>>       }
>>   +    r = dma_resv_reserve_fences(rbo->tbo.base.resv, 1);
>> +    if (r) {
>> +        dev_err(adev->dev, "reserving fence slot failed (%d)\n", r);
>> +        goto error_unlock;
>> +    }
>> +
>>       if (plane->type != DRM_PLANE_TYPE_CURSOR)
>>           domain = amdgpu_display_supported_domains(adev, rbo->flags);
>>       else
>> @@ -7619,19 +7617,16 @@ static int dm_plane_helper_prepare_fb(struct 
>> drm_plane *plane,
>>       if (unlikely(r != 0)) {
>>           if (r != -ERESTARTSYS)
>>               DRM_ERROR("Failed to pin framebuffer with error %d\n", r);
>> -        ttm_eu_backoff_reservation(&ticket, &list);
>> -        return r;
>> +        goto error_unlock;
>>       }
>>         r = amdgpu_ttm_alloc_gart(&rbo->tbo);
>>       if (unlikely(r != 0)) {
>> -        amdgpu_bo_unpin(rbo);
>> -        ttm_eu_backoff_reservation(&ticket, &list);
>>           DRM_ERROR("%p bind failed\n", rbo);
>> -        return r;
>> +        goto error_unpin;
>>       }
>>   -    ttm_eu_backoff_reservation(&ticket, &list);
>> +    amdgpu_bo_unreserve(rbo);
>>         afb->address = amdgpu_bo_gpu_offset(rbo);
>>   @@ -7663,6 +7658,13 @@ static int dm_plane_helper_prepare_fb(struct 
>> drm_plane *plane,
>>       }
>>         return 0;
>> +
>> +error_unpin:
>> +    amdgpu_bo_unpin(rbo);
>> +
>> +error_unlock:
>> +    amdgpu_bo_unreserve(rbo);
>> +    return r;
>>   }
>>     static void dm_plane_helper_cleanup_fb(struct drm_plane *plane,



More information about the amd-gfx mailing list