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)
committerDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Fri, 22 Mar 2024 17:22:20 +0000 (10:22 -0700)
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
drivers/gpu/drm/xe/xe_guc_ct.c

index d9fa81900ff5302011700efa6ca950ebe0740ed9..1d930a8eeecad8eafeba30e4d3dd5d72d2a49bae 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(),