On Mon, Mar 21, 2022 at 02:25:59PM +0100, Christian König wrote: > Those functions are going to become more complex, don't inline them any > more. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> > --- > drivers/gpu/drm/ttm/ttm_bo.c | 31 +++++++++++++++++++++++++++++++ > include/drm/ttm/ttm_bo_api.h | 30 ++---------------------------- > 2 files changed, 33 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index b119af33e7d7..502617ee9303 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -633,6 +633,37 @@ int ttm_mem_evict_first(struct ttm_device *bdev, > return ret; > } > > +/** > + * ttm_bo_pin - Pin the buffer object. > + * @bo: The buffer object to pin > + * > + * Make sure the buffer is not evicted any more during memory pressure. Maybe add kerneldoc cross links here while at it. "@bo must be unpinned again by calling ttm_bo_unpin()." or whatever you prefer. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > + */ > +void ttm_bo_pin(struct ttm_buffer_object *bo) > +{ > + dma_resv_assert_held(bo->base.resv); > + WARN_ON_ONCE(!kref_read(&bo->kref)); > + ++bo->pin_count; > +} > +EXPORT_SYMBOL(ttm_bo_pin); > + > +/** > + * ttm_bo_unpin - Unpin the buffer object. > + * @bo: The buffer object to unpin > + * > + * Allows the buffer object to be evicted again during memory pressure. > + */ > +void ttm_bo_unpin(struct ttm_buffer_object *bo) > +{ > + dma_resv_assert_held(bo->base.resv); > + WARN_ON_ONCE(!kref_read(&bo->kref)); > + if (bo->pin_count) > + --bo->pin_count; > + else > + WARN_ON_ONCE(true); > +} > +EXPORT_SYMBOL(ttm_bo_unpin); > + > /* > * Add the last move fence to the BO and reserve a new shared slot. We only use > * a shared slot to avoid unecessary sync and rely on the subsequent bo move to > diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h > index 3da77fc54552..885b7698fd65 100644 > --- a/include/drm/ttm/ttm_bo_api.h > +++ b/include/drm/ttm/ttm_bo_api.h > @@ -524,34 +524,8 @@ ssize_t ttm_bo_io(struct ttm_device *bdev, struct file *filp, > int ttm_bo_swapout(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx, > gfp_t gfp_flags); > > -/** > - * ttm_bo_pin - Pin the buffer object. > - * @bo: The buffer object to pin > - * > - * Make sure the buffer is not evicted any more during memory pressure. > - */ > -static inline void ttm_bo_pin(struct ttm_buffer_object *bo) > -{ > - dma_resv_assert_held(bo->base.resv); > - WARN_ON_ONCE(!kref_read(&bo->kref)); > - ++bo->pin_count; > -} > - > -/** > - * ttm_bo_unpin - Unpin the buffer object. > - * @bo: The buffer object to unpin > - * > - * Allows the buffer object to be evicted again during memory pressure. > - */ > -static inline void ttm_bo_unpin(struct ttm_buffer_object *bo) > -{ > - dma_resv_assert_held(bo->base.resv); > - WARN_ON_ONCE(!kref_read(&bo->kref)); > - if (bo->pin_count) > - --bo->pin_count; > - else > - WARN_ON_ONCE(true); > -} > +void ttm_bo_pin(struct ttm_buffer_object *bo); > +void ttm_bo_unpin(struct ttm_buffer_object *bo); > > int ttm_mem_evict_first(struct ttm_device *bdev, > struct ttm_resource_manager *man, > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch