From: Michal Wajdeczko <michal.wajdec...@intel.com>

[ Upstream commit 9cd3f4efc870463f17f6c29114c61fb6bfcaa291 ]

After successful call to drm_suballoc_manager_init() we should
make sure to call drm_suballoc_manager_fini() as it may include
some cleanup code even if we didn't start using it for real.

As we can abort init() early due to kvzalloc() failure, we should
either explicitly call drm_suballoc_manager_fini() or, even better,
postpone drm_suballoc_manager_init() once we finish all other
preparation steps, so we can rely on fini() that will do cleanup.

Signed-off-by: Michal Wajdeczko <michal.wajdec...@intel.com>
Cc: Matthew Brost <matthew.br...@intel.com>
Reviewed-by: Matthew Brost <matthew.br...@intel.com>
Link: 
https://patchwork.freedesktop.org/patch/msgid/20241220194205.995-2-michal.wajdec...@intel.com
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/gpu/drm/xe/xe_sa.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c
index fe2cb2a96f788..1d42547590067 100644
--- a/drivers/gpu/drm/xe/xe_sa.c
+++ b/drivers/gpu/drm/xe/xe_sa.c
@@ -57,8 +57,6 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile 
*tile, u32 size, u32
        }
        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);
 
        if (bo->vmap.is_iomem) {
@@ -72,6 +70,7 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile 
*tile, u32 size, u32
                memset(sa_manager->cpu_ptr, 0, bo->ttm.base.size);
        }
 
+       drm_suballoc_manager_init(&sa_manager->base, managed_size, align);
        ret = drmm_add_action_or_reset(&xe->drm, xe_sa_bo_manager_fini,
                                       sa_manager);
        if (ret)
-- 
2.39.5

Reply via email to