diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_bo_manager.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo_manager.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo_manager.c b/drivers/gpu/drm/ttm/ttm_bo_manager.c index c58eba33bd5..bd850c9f4bc 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_manager.c +++ b/drivers/gpu/drm/ttm/ttm_bo_manager.c @@ -55,6 +55,7 @@ static int ttm_bo_man_get_node(struct ttm_mem_type_manager *man,  	struct ttm_range_manager *rman = (struct ttm_range_manager *) man->priv;  	struct drm_mm *mm = &rman->mm;  	struct drm_mm_node *node = NULL; +	enum drm_mm_allocator_flags aflags = DRM_MM_CREATE_DEFAULT;  	unsigned long lpfn;  	int ret; @@ -66,11 +67,15 @@ static int ttm_bo_man_get_node(struct ttm_mem_type_manager *man,  	if (!node)  		return -ENOMEM; +	if (bo->mem.placement & TTM_PL_FLAG_TOPDOWN) +		aflags = DRM_MM_CREATE_TOP; +  	spin_lock(&rman->lock); -	ret = drm_mm_insert_node_in_range(mm, node, mem->num_pages, -					  mem->page_alignment, +	ret = drm_mm_insert_node_in_range_generic(mm, node, mem->num_pages, +					  mem->page_alignment, 0,  					  placement->fpfn, lpfn, -					  DRM_MM_SEARCH_BEST); +					  DRM_MM_SEARCH_BEST, +					  aflags);  	spin_unlock(&rman->lock);  	if (unlikely(ret)) {  | 
