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

Harry Wentland harry.wentland at amd.com
Tue Apr 19 15:14:29 UTC 2022



On 2022-04-19 10:42, Christian König wrote:
> 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?
> 

We're not working with amdgpu_vkms. Looks like Alex already responded
to the other patch.

Harry

> 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