On Mon, 2021-06-07 at 19:22 +0100, Matthew Auld wrote: > Move back to the buddy allocator for managing device local memory, > and > restore the lost mock selftests. Keep around the range manager > related > bits, since we likely need this for managing stolen at some point. > For > stolen we also don't need to reserve anything so no need to support a > generic reserve interface. > > Signed-off-by: Matthew Auld <matthew.auld@xxxxxxxxx> > Cc: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 26 +-- > drivers/gpu/drm/i915/intel_memory_region.c | 55 +----- > drivers/gpu/drm/i915/intel_memory_region.h | 17 -- > drivers/gpu/drm/i915/intel_region_ttm.c | 100 +++-------- > .../drm/i915/selftests/intel_memory_region.c | 170 ++++++++++++---- > -- > ... > > static int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, > @@ -661,20 +661,8 @@ int __i915_gem_ttm_object_init(struct > intel_memory_region *mem, > static struct lock_class_key lock_class; > struct drm_i915_private *i915 = mem->i915; > enum ttm_bo_type bo_type; > - size_t alignment = 0; > int ret; > > - /* Adjust alignment to GPU- and CPU huge page sizes. */ > - > - if (mem->is_range_manager) { > - if (size >= SZ_1G) > - alignment = SZ_1G >> PAGE_SHIFT; > - else if (size >= SZ_2M) > - alignment = SZ_2M >> PAGE_SHIFT; > - else if (size >= SZ_64K) > - alignment = SZ_64K >> PAGE_SHIFT; > - } > - > drm_gem_private_object_init(&i915->drm, &obj->base, size); > i915_gem_object_init(obj, &i915_gem_ttm_obj_ops, &lock_class, > flags); > i915_gem_object_init_memory_region(obj, mem); > @@ -696,7 +684,7 @@ int __i915_gem_ttm_object_init(struct > intel_memory_region *mem, > */ > obj->base.vma_node.driver_private = i915_gem_to_ttm(obj); > ret = ttm_bo_init(&i915->bdev, i915_gem_to_ttm(obj), size, > - bo_type, &i915_sys_placement, alignment, > + bo_type, &i915_sys_placement, PAGE_SIZE, Actually just realized that the alignment is specified in PAGE_SIZE units, so above should be s/PAGE_SIZE/1/. Might need to check that the buddy TTM interface gets this right as well.