drm/xe/guc: Check error code when initializing the CT mutex
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Thu, 21 Mar 2024 19:55:12 +0000 (12:55 -0700)
committerLucas De Marchi <lucas.demarchi@intel.com>
Thu, 9 May 2024 14:40:59 +0000 (09:40 -0500)
The initialization via drmm_mutex_init can fail, so we need to check the
return code and escalate the failure.

The mutex initialization has been moved after all the other init steps
that can't fail, so we're always guaranteed to have those done and don't
have to check in the cleanup code.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240321195512.274210-1-daniele.ceraolospurio@intel.com
(cherry picked from commit b4abeb5545bb3ddcdda3c19067680ad0b2259be4)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_guc_ct.c

index 7f32547f94b266092afc75bd387f8b6b59f18cec..c62dbd6420db02af82bdbd4ca4c75f1ddd9092e3 100644 (file)
@@ -145,13 +145,16 @@ int xe_guc_ct_init(struct xe_guc_ct *ct)
 
        xe_assert(xe, !(guc_ct_size() % PAGE_SIZE));
 
-       drmm_mutex_init(&xe->drm, &ct->lock);
        spin_lock_init(&ct->fast_lock);
        xa_init(&ct->fence_lookup);
        INIT_WORK(&ct->g2h_worker, g2h_worker_func);
        init_waitqueue_head(&ct->wq);
        init_waitqueue_head(&ct->g2h_fence_wq);
 
+       err = drmm_mutex_init(&xe->drm, &ct->lock);
+       if (err)
+               return err;
+
        primelockdep(ct);
 
        bo = xe_managed_bo_create_pin_map(xe, tile, guc_ct_size(),