]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/xe: Update xe_sa to use xe_managed_bo_create_pin_map
authorMatthew Brost <matthew.brost@intel.com>
Tue, 20 Aug 2024 17:29:58 +0000 (10:29 -0700)
committerMatthew Brost <matthew.brost@intel.com>
Fri, 23 Aug 2024 16:54:32 +0000 (09:54 -0700)
Preferred way to create kernel BOs is xe_managed_bo_create_pin_map, use
it.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240820172958.1095143-7-matthew.brost@intel.com
drivers/gpu/drm/xe/xe_sa.c
drivers/gpu/drm/xe/xe_sa_types.h

index f3060979e63f052e5edc5eea589c65df682ee8de..fe2cb2a96f7885113aac15a2c79e06fe220a070c 100644 (file)
@@ -25,10 +25,9 @@ static void xe_sa_bo_manager_fini(struct drm_device *drm, void *arg)
 
        drm_suballoc_manager_fini(&sa_manager->base);
 
-       if (bo->vmap.is_iomem)
+       if (sa_manager->is_iomem)
                kvfree(sa_manager->cpu_ptr);
 
-       xe_bo_unpin_map_no_vm(bo);
        sa_manager->bo = NULL;
 }
 
@@ -47,16 +46,17 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile *tile, u32 size, u32
 
        sa_manager->bo = NULL;
 
-       bo = xe_bo_create_pin_map(xe, tile, NULL, size, ttm_bo_type_kernel,
-                                 XE_BO_FLAG_VRAM_IF_DGFX(tile) |
-                                 XE_BO_FLAG_GGTT |
-                                 XE_BO_FLAG_GGTT_INVALIDATE);
+       bo = xe_managed_bo_create_pin_map(xe, tile, size,
+                                         XE_BO_FLAG_VRAM_IF_DGFX(tile) |
+                                         XE_BO_FLAG_GGTT |
+                                         XE_BO_FLAG_GGTT_INVALIDATE);
        if (IS_ERR(bo)) {
                drm_err(&xe->drm, "failed to allocate bo for sa manager: %ld\n",
                        PTR_ERR(bo));
                return (struct xe_sa_manager *)bo;
        }
        sa_manager->bo = bo;
+       sa_manager->is_iomem = bo->vmap.is_iomem;
 
        drm_suballoc_manager_init(&sa_manager->base, managed_size, align);
        sa_manager->gpu_addr = xe_bo_ggtt_addr(bo);
@@ -64,7 +64,6 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile *tile, u32 size, u32
        if (bo->vmap.is_iomem) {
                sa_manager->cpu_ptr = kvzalloc(managed_size, GFP_KERNEL);
                if (!sa_manager->cpu_ptr) {
-                       xe_bo_unpin_map_no_vm(sa_manager->bo);
                        sa_manager->bo = NULL;
                        return ERR_PTR(-ENOMEM);
                }
index 2ef896aeca1d41d3c2553b32045eabd2aeb25d27..2b070ff1292e75aff9c0057e6b2d239df1471741 100644 (file)
@@ -14,6 +14,7 @@ struct xe_sa_manager {
        struct xe_bo *bo;
        u64 gpu_addr;
        void *cpu_ptr;
+       bool is_iomem;
 };
 
 #endif