Used to dynamically adjust priorities of buffers at runtime, to react to changes in memory pressure/usage patterns. Signed-off-by: Friedrich Vock <friedrich.vock@xxxxxx> --- drivers/gpu/drm/ttm/ttm_bo.c | 17 +++++++++++++++++ include/drm/ttm/ttm_bo.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index eae54cd4a7ce9..6ac939c58a6b8 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -112,6 +112,23 @@ void ttm_bo_set_bulk_move(struct ttm_buffer_object *bo, } EXPORT_SYMBOL(ttm_bo_set_bulk_move); +void ttm_bo_update_priority(struct ttm_buffer_object *bo, unsigned int new_prio) +{ + struct ttm_resource_manager *man; + + if (!bo->resource) + return; + + man = ttm_manager_type(bo->bdev, bo->resource->mem_type); + + spin_lock(&bo->bdev->lru_lock); + ttm_resource_del_bulk_move(bo->resource, bo); + bo->priority = new_prio; + ttm_resource_add_bulk_move(bo->resource, bo); + spin_unlock(&bo->bdev->lru_lock); +} +EXPORT_SYMBOL(ttm_bo_update_priority); + static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, struct ttm_resource *mem, bool evict, struct ttm_operation_ctx *ctx, diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h index 91299a3b6fcfa..51040bc443ea0 100644 --- a/include/drm/ttm/ttm_bo.h +++ b/include/drm/ttm/ttm_bo.h @@ -359,6 +359,8 @@ static inline void *ttm_kmap_obj_virtual(struct ttm_bo_kmap_obj *map, return map->virtual; } +void ttm_bo_update_priority(struct ttm_buffer_object *bo, + unsigned int new_prio); int ttm_bo_wait_ctx(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx); -- 2.44.0