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@xxxxxxx> Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > --- > 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
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel