[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