drm/i915: Move the size computations to drm buddy
- Move roundup_power_of_two() to drm buddy file to support the new try harder mechanism for contiguous allocation. - Move trim function call to drm_buddy_alloc_blocks() function. Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230909160902.15644-2-Arunpravin.PaneerSelvam@amd.com Reviewed-by: Matthew Auld <matthew.auld@intel.com> Signed-off-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
2eb412aa25
commit
8569c31545
@ -59,6 +59,9 @@ static int i915_ttm_buddy_man_alloc(struct ttm_resource_manager *man,
|
||||
if (place->flags & TTM_PL_FLAG_TOPDOWN)
|
||||
bman_res->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION;
|
||||
|
||||
if (place->flags & TTM_PL_FLAG_CONTIGUOUS)
|
||||
bman_res->flags |= DRM_BUDDY_CONTIGUOUS_ALLOCATION;
|
||||
|
||||
if (place->fpfn || lpfn != man->size)
|
||||
bman_res->flags |= DRM_BUDDY_RANGE_ALLOCATION;
|
||||
|
||||
@ -72,18 +75,6 @@ static int i915_ttm_buddy_man_alloc(struct ttm_resource_manager *man,
|
||||
GEM_BUG_ON(min_page_size < mm->chunk_size);
|
||||
GEM_BUG_ON(!IS_ALIGNED(size, min_page_size));
|
||||
|
||||
if (place->fpfn + PFN_UP(bman_res->base.size) != place->lpfn &&
|
||||
place->flags & TTM_PL_FLAG_CONTIGUOUS) {
|
||||
unsigned long pages;
|
||||
|
||||
size = roundup_pow_of_two(size);
|
||||
min_page_size = size;
|
||||
|
||||
pages = size >> ilog2(mm->chunk_size);
|
||||
if (pages > lpfn)
|
||||
lpfn = pages;
|
||||
}
|
||||
|
||||
if (size > lpfn << PAGE_SHIFT) {
|
||||
err = -E2BIG;
|
||||
goto err_free_res;
|
||||
@ -107,14 +98,6 @@ static int i915_ttm_buddy_man_alloc(struct ttm_resource_manager *man,
|
||||
if (unlikely(err))
|
||||
goto err_free_blocks;
|
||||
|
||||
if (place->flags & TTM_PL_FLAG_CONTIGUOUS) {
|
||||
u64 original_size = (u64)bman_res->base.size;
|
||||
|
||||
drm_buddy_block_trim(mm,
|
||||
original_size,
|
||||
&bman_res->blocks);
|
||||
}
|
||||
|
||||
if (lpfn <= bman->visible_size) {
|
||||
bman_res->used_visible_size = PFN_UP(bman_res->base.size);
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user