[PATCH 06/11] drm/vram-helper: switch over to the new pin interface
Thomas Zimmermann
tzimmermann at suse.de
Tue Sep 22 06:44:49 UTC 2020
Hi
Am 21.09.20 um 16:48 schrieb Christian König:
> Stop using TTM_PL_FLAG_NO_EVICT.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
Acked-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> drivers/gpu/drm/drm_gem_vram_helper.c | 37 +++++++--------------------
> include/drm/drm_gem_vram_helper.h | 3 ---
> 2 files changed, 9 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c
> index 50cad0e4a92e..bd3dd17ad81d 100644
> --- a/drivers/gpu/drm/drm_gem_vram_helper.c
> +++ b/drivers/gpu/drm/drm_gem_vram_helper.c
> @@ -301,7 +301,7 @@ static u64 drm_gem_vram_pg_offset(struct drm_gem_vram_object *gbo)
> */
> s64 drm_gem_vram_offset(struct drm_gem_vram_object *gbo)
> {
> - if (WARN_ON_ONCE(!gbo->pin_count))
> + if (WARN_ON_ONCE(!gbo->bo.pin_count))
> return (s64)-ENODEV;
> return drm_gem_vram_pg_offset(gbo) << PAGE_SHIFT;
> }
> @@ -310,24 +310,21 @@ EXPORT_SYMBOL(drm_gem_vram_offset);
> static int drm_gem_vram_pin_locked(struct drm_gem_vram_object *gbo,
> unsigned long pl_flag)
> {
> - int i, ret;
> struct ttm_operation_ctx ctx = { false, false };
> + int ret;
>
> - if (gbo->pin_count)
> + if (gbo->bo.pin_count)
> goto out;
>
> if (pl_flag)
> drm_gem_vram_placement(gbo, pl_flag);
>
> - for (i = 0; i < gbo->placement.num_placement; ++i)
> - gbo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT;
> -
> ret = ttm_bo_validate(&gbo->bo, &gbo->placement, &ctx);
> if (ret < 0)
> return ret;
>
> out:
> - ++gbo->pin_count;
> + ttm_bo_pin(&gbo->bo);
>
> return 0;
> }
> @@ -369,26 +366,9 @@ int drm_gem_vram_pin(struct drm_gem_vram_object *gbo, unsigned long pl_flag)
> }
> EXPORT_SYMBOL(drm_gem_vram_pin);
>
> -static int drm_gem_vram_unpin_locked(struct drm_gem_vram_object *gbo)
> +static void drm_gem_vram_unpin_locked(struct drm_gem_vram_object *gbo)
> {
> - int i, ret;
> - struct ttm_operation_ctx ctx = { false, false };
> -
> - if (WARN_ON_ONCE(!gbo->pin_count))
> - return 0;
> -
> - --gbo->pin_count;
> - if (gbo->pin_count)
> - return 0;
> -
> - for (i = 0; i < gbo->placement.num_placement ; ++i)
> - gbo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT;
> -
> - ret = ttm_bo_validate(&gbo->bo, &gbo->placement, &ctx);
> - if (ret < 0)
> - return ret;
> -
> - return 0;
> + ttm_bo_unpin(&gbo->bo);
> }
>
> /**
> @@ -406,10 +386,11 @@ int drm_gem_vram_unpin(struct drm_gem_vram_object *gbo)
> ret = ttm_bo_reserve(&gbo->bo, true, false, NULL);
> if (ret)
> return ret;
> - ret = drm_gem_vram_unpin_locked(gbo);
> +
> + drm_gem_vram_unpin_locked(gbo);
> ttm_bo_unreserve(&gbo->bo);
>
> - return ret;
> + return 0;
> }
> EXPORT_SYMBOL(drm_gem_vram_unpin);
>
> diff --git a/include/drm/drm_gem_vram_helper.h b/include/drm/drm_gem_vram_helper.h
> index 62cc6e6c3a4f..128f88174d32 100644
> --- a/include/drm/drm_gem_vram_helper.h
> +++ b/include/drm/drm_gem_vram_helper.h
> @@ -35,7 +35,6 @@ struct vm_area_struct;
> * @placement: TTM placement information. Supported placements are \
> %TTM_PL_VRAM and %TTM_PL_SYSTEM
> * @placements: TTM placement information.
> - * @pin_count: Pin counter
> *
> * The type struct drm_gem_vram_object represents a GEM object that is
> * backed by VRAM. It can be used for simple framebuffer devices with
> @@ -64,8 +63,6 @@ struct drm_gem_vram_object {
> /* Supported placements are %TTM_PL_VRAM and %TTM_PL_SYSTEM */
> struct ttm_placement placement;
> struct ttm_place placements[2];
> -
> - int pin_count;
> };
>
> /**
>
--
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: signature.asc
Type: application/pgp-signature
Size: 516 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20200922/949e6b89/attachment-0001.sig>
More information about the dri-devel
mailing list