]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/xe: Move suballocator init to after display init
authorMaarten Lankhorst <dev@lankhorst.se>
Tue, 10 Dec 2024 08:31:03 +0000 (09:31 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:13:45 +0000 (11:13 +0200)
[ Upstream commit 380b0cdaa76bc8f5c16db16eaf48751e792ff041 ]

No allocations should be done before we have had a chance to preserve
the display fb.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241210083111.230484-4-dev@lankhorst.se
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/xe/xe_device.c
drivers/gpu/drm/xe/xe_tile.c
drivers/gpu/drm/xe/xe_tile.h

index e22f29ac96631cf1f2e18c25db99ae191b0c35aa..74516e73ba4e536abd48a81d577c21dd1913ca81 100644 (file)
@@ -736,6 +736,12 @@ int xe_device_probe(struct xe_device *xe)
        if (err)
                goto err;
 
+       for_each_tile(tile, xe, id) {
+               err = xe_tile_init(tile);
+               if (err)
+                       goto err;
+       }
+
        for_each_gt(gt, xe, id) {
                last_gt = id;
 
index 37f170effcd67374b1c788752c0c44968a5c7c2f..377438ea6b838475d060ab7ccec94c511e829d37 100644 (file)
@@ -170,15 +170,19 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
        if (err)
                return err;
 
-       tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
-       if (IS_ERR(tile->mem.kernel_bb_pool))
-               return PTR_ERR(tile->mem.kernel_bb_pool);
-
        xe_wa_apply_tile_workarounds(tile);
 
        return xe_tile_sysfs_init(tile);
 }
 
+int xe_tile_init(struct xe_tile *tile)
+{
+       tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
+       if (IS_ERR(tile->mem.kernel_bb_pool))
+               return PTR_ERR(tile->mem.kernel_bb_pool);
+
+       return 0;
+}
 void xe_tile_migrate_wait(struct xe_tile *tile)
 {
        xe_migrate_wait(tile->migrate);
index 1c9e42ade6b05dbd3eb9493ffb727755bec279be..eb939316d55b05ef46b678a50e335955b68ab47f 100644 (file)
@@ -12,6 +12,7 @@ struct xe_tile;
 
 int xe_tile_init_early(struct xe_tile *tile, struct xe_device *xe, u8 id);
 int xe_tile_init_noalloc(struct xe_tile *tile);
+int xe_tile_init(struct xe_tile *tile);
 
 void xe_tile_migrate_wait(struct xe_tile *tile);