[PATCH 5/6] drm/i915/ttm: switch over to ttm_buddy_man

Thomas Hellström thomas.hellstrom at linux.intel.com
Tue Jun 8 07:39:58 UTC 2021


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 at intel.com>
> Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> ---
>  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.




More information about the dri-devel mailing list