[PATCH 1/4] drm/vram-helper: cleanup drm_gem_vram_bo_driver_move_notify
Thomas Zimmermann
tzimmermann at suse.de
Thu Feb 11 15:12:22 UTC 2021
Hi
Am 11.02.21 um 16:05 schrieb Christian König:
>
>
> Am 11.02.21 um 15:52 schrieb Thomas Zimmermann:
>> Hi
>>
>> Am 11.02.21 um 14:16 schrieb Christian König:
>>> Swapping bo->mem was completely unecessary. Cleanup the function which
>>> is just a leftover from a TTM cleanup.
>>
>> Yes this was introduced in a recent cleanup effort. Can you explain
>> what the code intends to do? It seems as if it tries to "re-unmap the
>> BO" if the move_memcpy fails.
>>
>> If the move_memcpy fails now, it seems like we can live without
>> reverting that call to drm_gem_vram_bo_driver_move_notify(). (?)
>
> I think so, but I'm not 100% sure either.
>
> The swap() -> notify -> swap() was just how TTM did it and that was
> moved into the drivers.
>
> I'm now just trying to remove all the hard write accesses to bo->mem
> from drivers and stumbled over this here.
We already have a vmap count of zero; so unmapping the BO pages is fine
at any time. The next caller of vmap will simple instantiate a new mapping.
Let me give this patch a test run tomorrow, but it seems correct.
Best regards
Thomas
>
> Thanks for the comments,
> Christian.
>
>>
>> Best regards
>> Thomas
>>
>>>
>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>> ---
>>> drivers/gpu/drm/drm_gem_vram_helper.c | 18 ++++--------------
>>> 1 file changed, 4 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c
>>> b/drivers/gpu/drm/drm_gem_vram_helper.c
>>> index a0992f0b8afd..0c2233ee6029 100644
>>> --- a/drivers/gpu/drm/drm_gem_vram_helper.c
>>> +++ b/drivers/gpu/drm/drm_gem_vram_helper.c
>>> @@ -564,9 +564,7 @@ static void
>>> drm_gem_vram_bo_driver_evict_flags(struct drm_gem_vram_object *gbo,
>>> *pl = gbo->placement;
>>> }
>>> -static void drm_gem_vram_bo_driver_move_notify(struct
>>> drm_gem_vram_object *gbo,
>>> - bool evict,
>>> - struct ttm_resource *new_mem)
>>> +static void drm_gem_vram_bo_driver_move_notify(struct
>>> drm_gem_vram_object *gbo)
>>> {
>>> struct ttm_buffer_object *bo = &gbo->bo;
>>> struct drm_device *dev = bo->base.dev;
>>> @@ -582,16 +580,8 @@ static int drm_gem_vram_bo_driver_move(struct
>>> drm_gem_vram_object *gbo,
>>> struct ttm_operation_ctx *ctx,
>>> struct ttm_resource *new_mem)
>>> {
>>> - int ret;
>>> -
>>> - drm_gem_vram_bo_driver_move_notify(gbo, evict, new_mem);
>>> - ret = ttm_bo_move_memcpy(&gbo->bo, ctx, new_mem);
>>> - if (ret) {
>>> - swap(*new_mem, gbo->bo.mem);
>>> - drm_gem_vram_bo_driver_move_notify(gbo, false, new_mem);
>>> - swap(*new_mem, gbo->bo.mem);
>>> - }
>>> - return ret;
>>> + drm_gem_vram_bo_driver_move_notify(gbo);
>>> + return ttm_bo_move_memcpy(&gbo->bo, ctx, new_mem);
>>> }
>>> /*
>>> @@ -947,7 +937,7 @@ static void bo_driver_delete_mem_notify(struct
>>> ttm_buffer_object *bo)
>>> gbo = drm_gem_vram_of_bo(bo);
>>> - drm_gem_vram_bo_driver_move_notify(gbo, false, NULL);
>>> + drm_gem_vram_bo_driver_move_notify(gbo);
>>> }
>>> static int bo_driver_move(struct ttm_buffer_object *bo,
>>>
>>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210211/1416b526/attachment.sig>
More information about the dri-devel
mailing list